[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GameMaker wrapper - the binary blob. Also ravings



In gameroller.c, which I mentioned in an earlier post, there is a big binary blob (256 bytes). Here's the code to that blob.

The first 0x1A bytes contain the beginning of the code, then there is a big gap (of zeroes) before the second function which is stored at the *end* of the page and is copied down onto screen memory.

First part

009800  1  A0 A2        entry2:   ldy       #$A2
009802  1  B9 00 98     @1:       lda       $9800, y
009805  1  99 00 07               sta       $0700, y
009808  1  C8                     iny
009809  1  D0 F7                  bne       @1
00980B  1  4C A2 07               jmp       $07A2
00980E  1  47 41 4D 41            .byte     "GAMAKSTUB V1"
009812  1  4B 53 54 55
009816  1  42 20 56 31

Second part

0007A2  1  2C 89 C0     entry:    bit       $C089
0007A5  1  2C 89 C0               bit       $C089
0007A8  1  A9 00                  lda       #<$2000
0007AA  1  85 00                  sta       $00
0007AC  1  A9 20                  lda       #>$2000
0007AE  1  85 01                  sta       $01
0007B0  1  A9 00                  lda       #<$D000
0007B2  1  85 02                  sta       $02
0007B4  1  A9 D0                  lda       #>$D000
0007B6  1  85 03                  sta       $03
0007B8  1  A0 D8                  ldy       #$D8
0007BA  1  20 EA 07               jsr       memmov
0007BD  1  A9 00                  lda       #<$2800
0007BF  1  85 00                  sta       $00
0007C1  1  A9 28                  lda       #>$2800
0007C3  1  85 01                  sta       $01
0007C5  1  A9 00                  lda       #<$9800
0007C7  1  85 02                  sta       $02
0007C9  1  A9 98                  lda       #>$9800
0007CB  1  85 03                  sta       $03
0007CD  1  A0 B0                  ldy       #$B0
0007CF  1  20 EA 07               jsr       memmov
0007D2  1  A9 00                  lda       #<$4000
0007D4  1  85 00                  sta       $00
0007D6  1  A9 40                  lda       #>$4000
0007D8  1  85 01                  sta       $01
0007DA  1  A9 00                  lda       #<$2000
0007DC  1  85 02                  sta       $02
0007DE  1  A9 20                  lda       #>$2000
0007E0  1  85 03                  sta       $03
0007E2  1  A0 40                  ldy       #$40
0007E4  1  20 EA 07               jsr       memmov
0007E7  1  4C 00 60               jmp       $6000
0007EA  1  84 04        memmov:   sty       $04
0007EC  1  A0 00                  ldy       #$00
0007EE  1  B1 00        @1:       lda       ($00), y
0007F0  1  91 02                  sta       ($02), y
0007F2  1  C8                     iny
0007F3  1  D0 F9                  bne       @1
0007F5  1  E6 01                  inc       $01
0007F7  1  E6 03                  inc       $03
0007F9  1  A5 03                  lda       $03
0007FB  1  C5 04                  cmp       $04
0007FD  1  90 EF                  bcc       @1
0007FF  1  60                     rts

Games created with this tool will indeed run on a normal 48K DOS 3.3, but you do need to MAXFILES 1 before you BRUN. (Obviously no longer an issue if you exomize.) You could probably "compile-to-tape" using something like fp2wav.

I used to have a tool called GET33 to go with FORMAT33 and DIR33. I'm really going to have to rewrite it, and write a PUT33 too. (And maybe in the process other file/disk management tools for DOS 3.3 images!) They could come in quite useful along a program like this ~.^

I still need to figure what makes Lode Runner tick so I can do a No Load Lode Runner (and a ProDOS Lode Runner).

Single-load file hacks are kind-of an interest to me.

Another tool I lost that I wrote some time ago was a menu generator. Though it could stand to be done better - I had a disk generator that worked with its own custom loader, but it was a slow and unreliable loader. :( I need to rewrite GameDOS to suck less.

-uso.