[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
GameMaker wrapper - the binary blob. Also ravings
- Subject: GameMaker wrapper - the binary blob. Also ravings
- From: Steve Nickolas <usotsuki@buric.co>
- Date: Mon, 23 Jul 2012 11:01:21 +0200
- Bytes: 5113
- Cancel-lock: sha1:YE5u1PApd54ovolJ0yEqOfGNOq0=
- Injection-info: mx04.eternal-september.org; posting-host="07a92592f03664f9edeb8938900d6149"; logging-data="6097"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19WLyRqJ91OyCHuOiBP/embSFkdtfVv4S0="
- Newsgroups: comp.sys.apple2
- Organization: A noiseless patient Spider
- User-agent: Alpine 2.00 (DEB 1167 2008-08-23)
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.