2024-04-15 01:02:14 +00:00
|
|
|
!cpu 6502
|
|
|
|
*=$8000
|
|
|
|
!to "build/PLACE.BALL#068000",plain
|
|
|
|
|
|
|
|
!src "../common/src/constants.a"
|
|
|
|
!src "../common/src/macros.a"
|
|
|
|
|
|
|
|
jmp start
|
|
|
|
|
|
|
|
compressed_data
|
|
|
|
!bin "src/OBJ1.X"
|
|
|
|
!bin "src/OBJ2.X"
|
|
|
|
FORWARD_DECRUNCHING = 1
|
|
|
|
SHOW_PROGRESS_DURING_DECRUNCH = 1
|
|
|
|
kExoProgressWidth = 7 ; depends on total size, max 38
|
|
|
|
!src "../common/src/exodecrunch.a"
|
|
|
|
|
|
|
|
start
|
|
|
|
+INIT_MACHINE
|
|
|
|
jsr decrunch ; compressed data contains target address
|
|
|
|
bit GFXMODE
|
|
|
|
bit PAGE1
|
|
|
|
bit HIRES
|
|
|
|
bit FULLGFX
|
2024-04-21 19:43:11 +00:00
|
|
|
!if * != $B26D {
|
|
|
|
!serious "Adjust prelaunch to patch JSR at ", *, " to JMP"
|
|
|
|
}
|
2024-04-15 01:02:14 +00:00
|
|
|
jsr decrunch_no_reset_progress
|
|
|
|
ldx #$0C
|
|
|
|
ldy #$00
|
|
|
|
@a lda $9000, y
|
|
|
|
@b sta $A200, y
|
|
|
|
iny
|
|
|
|
bne @a
|
|
|
|
inc @a+2
|
|
|
|
inc @b+2
|
|
|
|
dex
|
|
|
|
bne @a
|
|
|
|
lda #<load_level
|
|
|
|
sta $5101
|
|
|
|
lda #>load_level
|
|
|
|
sta $5102
|
|
|
|
jsr $900
|
|
|
|
bit CLEARKBD
|
|
|
|
jsr PRODOS_MLI
|
|
|
|
!byte CMD_QUIT
|
|
|
|
!word +
|
|
|
|
+ !byte 4
|
|
|
|
|
|
|
|
get_crunched_byte
|
|
|
|
lda compressed_data
|
|
|
|
inc get_crunched_byte+1
|
|
|
|
bne +
|
|
|
|
inc get_crunched_byte+2
|
|
|
|
+ rts
|
|
|
|
|
|
|
|
load_level
|
|
|
|
jsr $11BC ; use game code to get # of next level
|
|
|
|
and #$0F
|
|
|
|
asl
|
|
|
|
clc
|
|
|
|
adc #$A0 ; calculate where we stored that level data ($A200+)
|
|
|
|
sta @a+2
|
|
|
|
lda #$6A
|
|
|
|
sta @b+2
|
|
|
|
ldx #$02
|
|
|
|
ldy #$00
|
|
|
|
@a lda $FD00, y ; SMC
|
|
|
|
@b sta $6A00, y ; SMC
|
|
|
|
iny
|
|
|
|
bne @a
|
|
|
|
inc @a+2
|
|
|
|
inc @b+2
|
|
|
|
dex
|
|
|
|
bne @a
|
|
|
|
rts
|