Skip to content
Permalink
main
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
;---------------------------------------------------------;
; Balloon fight (VS system) source file ;
; Disassembled and ported for the NES by mr28cc'2021 ;
;---------------------------------------------------------;
; I didn't comment on this source completely. ;
; Some comments/variable/routine names may be irrelevant. ;
;---------------------------------------------------------;
; For Public Domain ;
;---------------------------------------------------------;
; Music/sounds found
; jmp loc_F739 ; piranha
; jmp loc_F6BC ; falling enemy
; jmp loc_F326 ; pop balloon
; jmp loc_F6CA ; high score
; jmp loc_F733 ; level restart
; jmp loc_F73F ; balloon trip / bonus level
; jmp loc_F745 ; perfect score
.include "defines.sinc"
.include "joy.sinc"
.include "ppudata.sinc"
.segment "HEADER"
ines_MAPPER = 3 ; CNROM
ines_MIRRORING = 0 ; Horizontal mirroring
.byte $4e,$45,$53,$1a ; "NES"
.byte 2 ; Nnumber of 16k prg banks.
.byte 4 ; Number of 8k chr banks.
.byte (ines_MAPPER<<4) | ines_MIRRORING
.byte 0
.byte 0,0,0,0,0,0,0,0
.segment "VECTORS"
.word nmi_call
.word reset
.word irq_call
.segment "CHARS1"
.incbin "chr/balonfgt_chr_02.chr"
.segment "CHARS2"
.incbin "chr/balonfgt_chr_01.chr"
.segment "CHARS3"
.segment "CHARS4"
.incbin "chr/balonfgt_chr_03.chr"
.segment "RODATA"
; Entry point
reset:
SEI
CLD
LDA #$10
STA PPU_CTRL
LDA #0
STA CTRL_PORT1
STA VS_CTRL_VAR
LDA #$40 ; '@'
STA CTRL_PORT2
LDA #0
STA APU_DMC_FREQ
;LDA #0
;STA COIN_COUNT_PORT
LDX #$FF
TXS
: ; Wait for vsync
LDA PPU_STATUS
AND #$80
BEQ :-
: ; Wait for vsync again (why?)
LDA PPU_STATUS
AND #$80
BEQ :-
LDY #7
STY TEMP+1
LDY #0
STY TEMP+0
TYA ; A = 0
@clear_ram:
STA (0),Y ; Clear RAM (0000-07ff)
DEY
BNE @clear_ram ; Clear RAM (0000-07ff)
DEC TEMP+1
BPL @clear_ram ; Clear RAM (0000-07ff)
LDA #0 ; Init var $15
STA $15
LDA #$35
STA TEMP_PTR_LO ; Init var $99
LDA #$48
STA TEMP_PTR_HI ; Init var $9A
LDA #$FF
STA $1B ; Init var $1B
JSR main_init
JSR sub_E637
JSR DBA2_read_DIPs
JSR init_high_score
LDA PPU_CTRL_VAR
ORA #$80 ;Enable NMI generating
STA PPU_CTRL
STA PPU_CTRL_VAR
; Infinite loop (game cycle located in the NMI)
:
JMP :-
; End of function reset
; =============== S U B R O U T I N E =======================================
main_init:
LDA #0
STA APU_DMC_RAW ; DMC direct load = 0
LDA #$F
STA APU_SND_CHN ; APU status = 0000_1111, it enables:
; DMC, noise, triangle and pulse channels
LDA #6 ; PPU_MASK = 0000_0110, or...
STA PPU_MASK ; ...show background in leftmost 8 pixels of screen and...
; ...show sprites in leftmost 8 pixels of screen.
jsr readjoy
lda BUTTONS
and #$20
lsr a
lsr a
lsr a
lsr a
lsr a
sta TEMP
; Set up coinage DIP switches
; 0 by default : 1 coin / 1 credit
LDA #%00000000 ; default DIP1 switch init
; 76543210
; CNGxxxxS
; Low bit (S) - Service menu
; High three bits (CNG) - coinage
; 4 coins / 1 credit : 6 : %00000110
; 3 coins / 1 credit : 5 : %00000101
; 2 coins / 1 credit : 4 : %00000100
; 1 coin / 1 credit : 0 : %00000000
; 1 coin / 2 credit : 1 : %00000001
; 1 coin / 3 credit : 2 : %00000010
; 1 coin / 4 credit : 3 : %00000011
; Free play : 7 : %00000111
ora TEMP
sta DIP1
;LDA #%01000010 ; default DIP2 switch init
LDA #%00010011 ; default DIP2 switch init
;||||||||
;|||||||Unused dip. Added for NES/Arcade game mode %01 NES %00 arcade
;|||||BBonus life reward. %00, %01, %10, %11 = 10000, 20000, 40000, no reward
;|||||
;||||Enemy regeneration: %00 low %01 high
;||||
;||DDifficulty: %00 easy, %01 normal, %10 medium, %11 hard
;||
;LLives 3, 4, 5, 6 (%00,%01,%10,%11)
STA DIP2
clear_bg_and_sprites:
JSR init_oam_buffer
JSR init_scroll
JSR clear_both_nametables
RTS
; End of function main_init
BUTTONS = user_var1 ;one byte per controller
readjoy:
lda #$01
sta CTRL_PORT1
sta BUTTONS
lsr a ; now A is 0
sta CTRL_PORT1
@loop:
lda CTRL_PORT2
lsr a ; bit 0 -> Carry
rol BUTTONS ; Carry -> bit 0; bit 7 -> Carry
bcc @loop
rts
; Game main cycle
nmi_call:
LDA PPU_CTRL_VAR
AND #$7F ; Reset bit 7 in order to...
STA PPU_CTRL ; ...disable PPU NMI
STA PPU_CTRL_VAR ; And store it to ZP
LDA SELECTOR
BNE nmi_null_selector ; if SELECTOR != 0 jump
; Else, if SELECTOR == 0
LDA SELECTOR_COPY
BNE nmi_null_selector
; if SELECTOR_COPY == 0
LDA PPU_MASK_VAR
ORA #$1E ; Enable BG, sprites and leftmost 8px of BG and sprites.
STA PPU_MASK
STA PPU_MASK_VAR
nmi_null_selector:
LDA #0
STA PPU_OAM_ADDR
LDA #2
STA OAM_DMA
JSR load_ppu_data ; Load data to the PPU from table
LDA #$3F
STA PPU_ADDR
LDA #0
STA PPU_ADDR ; Set PPU address to $3F00 (BG palette data)
STA PPU_ADDR ; Write 0 to $3f00 (first palette slot)
STA PPU_ADDR ; Write 0 to second palette slot.
LDA SCROLL_X ; Update scroll X
STA PPU_SCROLL
LDA SCROLL_Y ; and Y
STA PPU_SCROLL
LDA PROC_ID_LIST_01
BNE loc_8150
JSR poll_select2 ; I can poll service menu button there
; MAIN MENU LOOP
JSR sub_EA47_decrease_timers
LDA #%00001111
STA APU_SND_CHN
JSR play_music
INC $64
LDA $59F
BNE loc_812C
LDA $68
BNE loc_8129
JSR loc_9260_execute_from_list
JMP loc_812C
; ---------------------------------------------------------------------------
loc_8129:
JSR sub_A4A8
loc_812C:
JSR E6E9_process_starfield
JSR sub_E731 ; Joypad's poll here
LDA JOY1_VAR
sta rapid_a
STA $80
AND #3
CMP #3
BNE loc_8149
LDA #0
STA $80
loc_8149:
LDA JOY2_VAR
STA $81
AND #3
CMP #3
BNE loc_8156
LDA #0
STA $80
JMP loc_8156
; ---------------------------------------------------------------------------
loc_8150:
JSR exec
JSR sub_E731
loc_8156:
LDA PPU_STATUS
LDA PPU_CTRL_VAR
ORA #$80 ; '€'
STA PPU_CTRL
STA PPU_CTRL_VAR
lda dip_NESMODE
beq @exit
lda $80
and #%01111111
sta $80
lda rapid_a
and #%10000000
beq @exit
inc rapid_a_timer
lda rapid_a_timer
and #4
beq @1
lda $80
ora #$80
sta $80
bne @exit ; BRA
@1:
lda $80
and #%01111111
sta $80
@exit:
irq_call:
RTI
; End of function nmi_call
; =============== S U B R O U T I N E =======================================
cnrom_banktable:
.byte $00, $01, $02, $03
cnrom_set_bank:
AND #4+8
LSR A
LSR A
TAX
STA cnrom_banktable,X
RTS
proc_process_dip_menu:
lda dipmenu_state
cmp #251
bne @2
jmp dipmenu_items_init
@2:
cmp #252
bne @3
jmp dipmenu_switches1_init
@3:
cmp #253
bne @4
jmp dipmenu_switches2_init
@4:
cmp #254
bne @dpm_check_buttons
jmp update_menu_attributes
@dpm_check_buttons:
lda JOY1_TRIG
and #PAD_UP
beq dpm_ch_down
lda dipmenu_POS_Y
beq dpm_ch_end
jsr loc_F684
dec dipmenu_POS_Y
lda #254
sta dipmenu_state
dpm_ch_down:
lda JOY1_TRIG
and #PAD_DOWN
beq dpm_ch_left
lda dipmenu_POS_Y
cmp #4
beq dpm_ch_end
jsr loc_F684
inc dipmenu_POS_Y
lda #254
sta dipmenu_state
dpm_ch_left:
lda JOY1_TRIG
and #PAD_LEFT
beq dpm_ch_right
ldx dipmenu_POS_Y
lda dip_LIVES,x
beq dpm_ch_end
dec dip_LIVES,x
lda #251
sta dipmenu_state
jmp _dip_values_array_update
dpm_ch_right:
lda JOY1_TRIG
and #PAD_RIGHT
beq dpm_ch_start
ldx dipmenu_POS_Y
lda dip_LIVES,x
cmp dip_max_values,x
beq dpm_ch_end
inc dip_LIVES,x
lda #251
sta dipmenu_state
jmp _dip_values_array_update
dpm_ch_start:
lda JOY1_TRIG
and #PAD_START
beq dpm_ch_end
; START PRESSED
LDA #$0
STA PROC_ID_LIST_01
STA off_CNROM
LDA #$3
jsr sub_DE7F
jmp loc_F733 ; level restart
dpm_ch_end:
rts
update_menu_attributes:
ldx dipmenu_POS_Y
lda attrs_menu_LO,X
sta $90
lda attrs_menu_HI,X
sta $91
LDY #13
:
LDA ($90),Y
STA $300,Y
DEY
BPL :-
lda #255
sta dipmenu_state
RTS
dipmenu_items_init:
lda #0
sta $96
sta $300
sta $94
lda #3
sta $95 ; $04 = $0301
@loop1:
lda $96
asl a
tax
lda dip_switches,x
sta $90
lda dip_switches+1,x
sta $91
;lda #1
ldx $96
lda dip_LIVES,x
asl a
tay
lda ($90),y
sta $92
iny
lda ($90),y
sta $93
ldy #0
lda ($92),y
tax
clc
adc $300
sta $300
iny
@loop2:
lda ($92),y
sta ($94),y
iny
dex
bne @loop2
txa
sta ($94),y
dey
tya
clc
adc $94
sta $94
inc $96
lda $96
cmp #5
bne @loop1
iny
inc dipmenu_state
rts
dipmenu_switches1_init:
ldx #0
ldy #0
@loop1:
lda dip_addresses+1,x
sta $301,y
lda dip_addresses,x
iny
sta $301,y
iny
lda #$84
sta $301,y
iny
iny
iny
iny
iny
inx
inx
cpx #16
bne @loop1
lda #56
sta $300
ldx #0
ldy #0
:
txa
asl a
tay
lda switches_buff_addr,y
sta $96
iny
lda switches_buff_addr,y
sta $97
stx $92
jsr draw_one_switch
ldx $92
inx
cpx #4
bne :-
inc dipmenu_state
rts
switches_buff_addr:
.word $304, $312, $320, $32E
.word $304, $312, $320, $32E
draw_one_switch:
lda dipmenu_states_1b,x
beq @1
lda #<dip_oneswitch_on
ldx #>dip_oneswitch_on
jmp @2
@1:
lda #<dip_oneswitch_off
ldx #>dip_oneswitch_off
@2:
sta $94
stx $95 ; store needed switch tiles address to 94 and 95
ldy #0
:
lda ($94),y
sta ($96),y
iny
cpy #4
bne :-
inc $96
inc $96
inc $96
:
lda ($94),y
sta ($96),y
iny
cpy #8
bne :-
rts
dipmenu_switches2_init:
ldx #0
ldy #0
@loop1:
lda dip_addresses+16+1,x
sta $301,y
lda dip_addresses+16,x
iny
sta $301,y
iny
lda #$84
sta $301,y
iny
iny
iny
iny
iny
inx
inx
cpx #16
bne @loop1
lda #56
sta $300
ldx #4
ldy #0
:
txa
asl a
tay
lda switches_buff_addr,y
sta $96
iny
lda switches_buff_addr,y
sta $97
stx $92
jsr draw_one_switch
ldx $92
inx
cpx #8
bne :-
inc dipmenu_state
rts
exec:
LDA PROC_ID_LIST_01
JSR execute_procedure
; ---------------------------------------------------------------------------
.WORD proc_81F8 ; 0 NULL (just RTS)
.WORD proc_81ED ; 1 INC PROC_ID_LIST_01
.WORD proc_820B ; 2
.WORD proc_820B ; 3
.WORD proc_820B ; 4
.WORD proc_820B ; 5
.WORD clear_SELECTOR ; 6
proc_81ED:
INC PROC_ID_LIST_01
JSR clear_ppumask ; Disable PPU.
LDA #$52 ; 'R'
STA SELECTOR
STA SELECTOR_COPY
proc_81F8:
RTS
; ---------------------------------------------------------------------------
tbl_B1F9:
.BYTE $27, 3, 0, 0, 0
tbl_B1FE:
.BYTE $10, $E8, $64
tbl_B201:
.BYTE $A, 1, $21, $21
tbl_B205:
.BYTE $22, $22, $53, $B3, $13, $73
; ---------------------------------------------------------------------------
proc_820B: ; 817Eo 8180o ...
LDX #$F
LDA #0
loc_820F: ; 8213j
STA NT_ADDR_HI,X
DEX
BPL loc_820F
LDX #0
LDY #4
loc_8219: ; 821Cj
STX TEMP,Y
DEY
BPL loc_8219
LDY PROC_ID_LIST_01
loc_8220: ; 8249j 824Cj
LDA $599,Y
BNE loc_822A
LDA $595,Y
BEQ loc_824E
loc_822A: ; 8223j
LDA $599,Y
SEC
SBC tbl_B1FE,X
STA $A
LDA $595,Y
SBC tbl_B1F9,X
STA $B
BCC loc_824B
LDA $A
STA $599,Y
LDA $B
STA $595,Y
INC TEMP,X
BNE loc_8220
loc_824B: ; 823Bj
INX
BNE loc_8220
loc_824E: ; 8228j
LDA tbl_B201,Y
STA NT_ADDR_LO
LDA tbl_B205,Y
STA $302
LDA #6
STA $303
LDY #4
loc_8261: ; 8268j
LDA TEMP,Y
STA $305,Y
DEY
BPL loc_8261
LDY #0
loc_826C: ; 8279j
LDA $304,Y
BNE loc_827B
LDA #$24 ; '$'
STA $304,Y
INY
CPY #5
BCC loc_826C
loc_827B: ; 826Fj
INC PROC_ID_LIST_01
RTS
; ---------------------------------------------------------------------------
clear_SELECTOR: ; 8186o
LDA #0
STA SELECTOR_COPY
RTS
loc_9260_execute_from_list: ; 8123p
LDA #0
STA $60
LDA $69
JSR execute_procedure
; ---------------------------------------------------------------------------
.WORD proc_DDE5 ; 0
.WORD proc_DE1F ; 1
.WORD proc_DEB7 ; 2
.WORD proc_DFDC ; 3
.WORD proc_E05D ; 4
.WORD proc_E1D0 ; 5
.WORD proc_E26B ; 6
.WORD proc_E32D ; 7
.WORD proc_E393 ; 8 Lobby handler
.WORD proc_E3F1 ; 9
.WORD proc_E2F3 ; A
.WORD proc_9285 ; B Game loop init
.WORD proc_DFA2 ; C
.WORD proc_E04C ; D
.WORD handler_init_dip_menu ; E
; ---------------------------------------------------------------------------
proc_9285: ; E2FEp
; 927Fo
LDA #1
STA $60
LDA #0
STA $59
STA $5A
LDA $74
CMP #$D
BEQ loc_9298
JSR sub_D190
loc_9298: ; 9293j
LDA $74
JSR execute_procedure
; ---------------------------------------------------------------------------
.WORD init_game ; 0
.WORD proc_9391 ; 1
.WORD proc_93EC ; 2
.WORD proc_961E ; 3
.WORD proc_982B ; 4
.WORD proc_98BE ; 5
.WORD proc_9911 ; 6
.WORD proc_9954 ; 7
.WORD proc_99CE ; 8
.WORD proc_9A08 ; 9
.WORD proc_9A1A ; A
.WORD proc_9A42 ; B
.WORD proc_9C1C ; C
.WORD proc_9C89 ; D
.WORD proc_A0E4 ; E
tbl_unk_92BB: .BYTE $2B, $E, 6, 0, $23, $A1, 6, 0, $23, $B9, 6, 0, 4, $8A, $80, $D9
; loc_936Cr
.BYTE 4, $94, $9C, $6C, $ED, $F6, $45, $3B, $24, $AA
; =============== S U B R O U T I N E =======================================
init_game: ; 929Do
JSR clear_ppumask ; Disable PPU.
LDA #1
STA SELECTOR_COPY
LDA VS_CTRL_VAR
AND #$FB ; 'û'
STA VS_CTRL_VAR
JSR cnrom_set_bank
JSR clear_bg_and_sprites
LDA $6B
BNE loc_934A
STA $62
STA $63
STA $C9
STA $CA
STA $6D
STA $6E
STA $72
STA $73
STA $70
STA $6F
STA $7D4
LDX #7
loc_9305: ; 9308j
STA $2D,X
DEX
BPL loc_9305
STA $589
JSR sub_EDC2
LDA #2
STA $3E2
STA $3E3
STA $42E
STA $42F
LDA $69
CMP #$A
BNE loc_9328
LDA #1
STA $65
loc_9328: ; 9322j
LDX $15
LDA #1
STA $62,X
JSR loc_A15E ; Init 1st player lives
LDA $65
BEQ loc_9340
TXA
EOR #1
TAX
LDA #1
STA $62,X
JSR loc_A15E ; Init 2nd player lives
loc_9340: ; 9333j
LDA #$FE ; 'þ'
STA $47A
LDA #$FF
STA $493
loc_934A: ; 92EAj
LDA #$FF
STA $3DA
STA $3DB
STA $4B8
LDA #1
STA $495
LDA #0
STA $6C
STA $7D
STA $7E
STA $4B7
STA $94
STA $7BD
LDX #$B
loc_936C: ; 9373j
LDA tbl_unk_92BB,X
STA $550,X
DEX
BPL loc_936C
JSR sub_95C4
LDA $C8
BNE loc_9387
LDA $65
BEQ loc_9384
LDA #2
STA $BF
loc_9384: ; 937Ej
INC $74
RTS
; ---------------------------------------------------------------------------
loc_9387: ; 937Aj
LDA #3
STA $74
; End of function init_game
; =============== S U B R O U T I N E =======================================
sub_938B: ; loc_98B6p 9AD3j ...
LDA #0
STA $4B7
RTS
; End of function sub_938B
; ---------------------------------------------------------------------------
proc_9391: ; 929Fo
LDA $69
CMP #$A
BEQ loc_93A7
LDA $65
JMP loc_93A7
LDA $C6
CMP $BF
BNE locret_93A9
LDA #0
STA $BF
STA $C6
loc_93A7: ; 9395j 9399j
INC $74
locret_93A9: ; 939Fj
RTS
; ---------------------------------------------------------------------------
byte_93AA:
.BYTE 3, 4, 5, 0, 5, 6, 6
byte_93B1:
.BYTE 0, 6, $C, 0, $12, $18, $1E, $24, $2A
byte_93BA:
.BYTE 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1
.BYTE 1, 0, 0, 0, 0, 1, 2, 0, 0, 0, 1, 1, 1, 2, 0, 0
.BYTE 1, 1, 2, 2, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0
unk_93EA:
.BYTE 7 ; 9453r
.BYTE 8
; ---------------------------------------------------------------------------
proc_93EC: ; 92A1o
LDX #9
loc_93EE: ; 93F4j
LDA #$FF
STA $5E6,X
DEX
BPL loc_93EE
LDX #7
loc_93F8: ; 942Ej
JSR sub_A243
STA $3E2,X
STA $4AE,X
STA $3F2,X
STA $3FA,X
STA $41E,X
STA $426,X
STA $416,X
STA $454,X
STA $460,X
LDA #$FF
STA $574,X
STA $3DA,X
STA $56E,X
LDA #$B
STA $40E,X
LDA #$20 ; ' '
STA $3D2,X
DEX
CPX #2
BPL loc_93F8
LDX $6E
CPX #7
BCC loc_943A
LDX #3
STX $6E
loc_943A: ; 9434j
LDA byte_93AA,X
BEQ loc_9447
LDY $6D
CPY #$10
BCC loc_9447
LDA #5
loc_9447: ; 943Dj 9443j
STA $76
BEQ loc_949F
LDA $69
CMP #$A
BNE loc_9456
LDY $15
LDX unk_93EA,Y
loc_9456: ; 944Fj
LDY byte_93B1,X
LDX #0
loc_945B: ; 9465j
LDA byte_93BA,Y
STA $456,X
INY
INX
CPX $76
BNE loc_945B
JSR sub_A391
LDX $76
INX
loc_946D: ; 947Bj
LDY $454,X
JSR proc_A169
LDA #$71 ; 'q'
STA $3DA,X
DEX
CPX #1
BNE loc_946D
JSR sub_A273
LDA #4
LDX $6B
BEQ loc_9488
LDA #2
loc_9488: ; 9484j
STA 0
LDY #6
loc_948C: ; 9496j
LDA $51A,Y
CLC
ADC 0
STA $51A,Y
DEY
BPL loc_948C
LDA #$40 ; '@'
STA $75
INC $74
RTS
; ---------------------------------------------------------------------------
loc_949F: ; 9449j
LDA #$B
STA $74
RTS
; ---------------------------------------------------------------------------
byte_94A4: .BYTE $45, $46, $47, $53, $54 ; 95C6r
byte_94A9: .BYTE $1D, $1E, $1F, $20, $21, $22, $23, $24, $25, $1E, $20, $26, $20, $27, $1F, $22
; 95D1r
.BYTE $28, $29, $2A, $21, $2B, $2C, $28, $2B
byte_94C1: .BYTE $0C, $0D, $0E, $0F, $10, $11, $0D, $12, $13, $0D, $0D, $14, $0D, $15, $0E, $11
; 95DBr
.BYTE $16, $17, $18, $10, $19, $1A, $1B
byte_94D8: .BYTE $1C, 0, 2, 4, 6, 8, $A, $C, $E, $10, $12, $14, $16, $18, $1A, $1C
; 95E7r
.BYTE $1E
byte_94E9: .BYTE $20, 0, 4, 8, $C, $10, $14, $18, $1C, $20, $24, $28, $2C, $30, $34, $38
; 9603r
.BYTE $3C, $40, $44
byte_94FC: .BYTE $30, $30, $30, $30, $20, $20, 8, 8, 8, 8, $28, $28, $28, $28, $10, $10
; 95F1r
.BYTE 8, 8, 8, 8, $28, $28, 8, 8, $10, $10, 8, 8, $50, $50, 8, 8
byte_951C: .BYTE $60, $90, $48, $A8, $2C, $C4, $4C, $A4, $34, $C4, $40, $B8, $10, $E0, $40, $B0
; 95F7r
.BYTE $48, $A8, $38, $B8, $44, $A4, $18, $D8, $20, $D0, $28, $C8, $50, $A0, $34, $BC
byte_953C: .BYTE $60, $60, $C0, $C0, $30, $30, $C0, $C0, $20, $60, $60, $D0, $10, $40, $70, $C0
; 960Dr
.BYTE $28, $28, $78, $C0, $38, $38, $90, $90, $30, $30, $78, $78, $20, $20, $80, $C0
.BYTE $38, $38, $C0, $C0, $30, $30, $C0, $C0, $28, $58, $58, $C0, $50, $50, $C0, $C0
.BYTE $50, $50, $C0, $C0, $18, $58, $58, $90, $30, $30, $90, $90, $18, $18, $58, $58
.BYTE $18, $48, $48, $90
byte_9580: .BYTE $68, $88, $28, $C8, $48, $A8, $20, $D0, $78, $10, $E8, $78, $5C, $9C, $5C, $D8
; 9613r
.BYTE $44, $A4, $74, $18, $2C, $C4, $70, $80, $60, $90, $38, $B8, $28, $C8, $E0, $20
.BYTE $50, $98, $20, $D0, $60, $90, $20, $D0, $78, $54, $9C, $D8, $3C, $B4, $18, $D8
.BYTE $28, $C8, $22, $CE, $74, $44, $A4, $74, $64, $8C, $2C, $C4, $7C, $34, $BC, $7C
.BYTE $14, $34, $BC, $D4
; =============== S U B R O U T I N E =======================================
sub_95C4: ; 9375p
LDX $70
LDA byte_94A4,X
STA $A0
LDA #$B
STA $A1
LDX $6F
LDA byte_94A9,X
STA $A2
SEC
SBC #$1C
STA $9F
LDA byte_94C1,X
STA $A3
SEC
SBC #$B
STA $9E
LDX $9F
LDY byte_94D8,X
LDX #1
loc_95EC: ; 95FFj
LDA #1
STA $36D,X
LDA byte_94FC,Y
STA $380,X
LDA byte_951C,Y
STA $352,X
INY
DEX
BPL loc_95EC
LDX $9E
LDY byte_94E9,X
LDX #3
loc_9608: ; 961Bj
LDA #0
STA $36F,X
LDA byte_953C,Y
STA $382,X
LDA byte_9580,Y
STA $354,X
INY
DEX
BPL loc_9608
RTS
; End of function sub_95C4
; ---------------------------------------------------------------------------
proc_961E: ; 92A3o
LDA $4B7
JSR execute_procedure
; ---------------------------------------------------------------------------
.WORD proc_9636
.WORD proc_9636
.WORD proc_9636
.WORD proc_9636
.WORD proc_966F
.WORD proc_9713
.WORD proc_97B6
.WORD proc_97FE
.WORD proc_981E
; ---------------------------------------------------------------------------
proc_9636: ; 9624o 9626o ...
LDX $4B7
LDA $A0,X
JMP loc_9685
; ---------------------------------------------------------------------------
tbl_963E: .BYTE $2D ; - ; 9682r
.BYTE $2E ; .
.BYTE $2F ; /
.BYTE $30 ; 0
.BYTE $31 ; 1
.BYTE $32 ; 2
.BYTE $33 ; 3
.BYTE $34 ; 4
.BYTE $35 ; 5
.BYTE $36 ; 6
.BYTE $37 ; 7
.BYTE $38 ; 8
.BYTE $39 ; 9
.BYTE $3A ; :
.BYTE $3B ; ;
.BYTE $3C ; <
.BYTE $3D ; =
.BYTE $3E ; >
.BYTE $3F ; ?
.BYTE $40 ; @
.BYTE $41 ; A
.BYTE $42 ; B
.BYTE $43 ; C
.BYTE $44 ; D
tbl_9656: .BYTE 0 ; 9671r
tbl_9657: .BYTE 3 ; 9677r
.BYTE 5
.BYTE 8
.BYTE $B
.BYTE $D
.BYTE $10
.BYTE $12
.BYTE $15
.BYTE $17
.BYTE $1A
.BYTE $1C
.BYTE $1E
.BYTE $21 ; !
.BYTE $25 ; %
.BYTE $28 ; (
.BYTE $2B ; +
.BYTE $2E ; .
.BYTE $31 ; 1
.BYTE $34 ; 4
.BYTE $37 ; 7
.BYTE $3B ; ;
.BYTE $3E ; >
.BYTE $40 ; @
.BYTE $44 ; D
; ---------------------------------------------------------------------------
proc_966F: ; 962Co
LDX $6F
LDA tbl_9656,X
STA $773
LDA tbl_9657,X
STA $774
LDA #0
STA $775
LDA tbl_963E,X
loc_9685: ; 963Bj 9A86j ...
STA SELECTOR
; START OF FUNCTION CHUNK FOR sub_985F
loc_9687: ; 97FBj loc_9852j ...
INC $4B7
RTS
; END OF FUNCTION CHUNK FOR sub_985F
; ---------------------------------------------------------------------------
tbl_968B: .BYTE $28, $21, $21, $21, $28, $20, $21, $28, $21, $28, $28, $22, $22, $21, $23, $28
; 9719r
.BYTE $21, $28, $21, $22, $29, $20, $28, $21, $22, $28, $21, $28, $21, $28, $20, $22
.BYTE $28, $21, $22, $28, $28, $22, $28, $29, $21, $22, $28, $21, $22, $29, $20, $21
.BYTE $29, $20, $22, $29, $21, $22, $28, $20, $22, $22, $28, $20, $21, $23, $20, $23
.BYTE $22, $22, $28, $29
tbl_96CF: .BYTE $94, $04, $98, $98, $8C, $98, $04, $94, $84, $10, $84, $04, $18, $88, $10, $84
; 9721r
.BYTE $84, $94, $18, $88, $84, $8C, $10, $84, $98, $90, $90, $84, $98, $0C, $98, $88
.BYTE $98, $04, $94, $84, $98, $8C, $84, $94, $0C, $94, $88, $98, $8C, $98, $94, $04
.BYTE $10, $88, $14, $08, $98, $88, $94, $94, $88, $94, $94, $98, $04, $10, $98, $0C
.BYTE $08, $90, $8C, $98
; ---------------------------------------------------------------------------
; =============== S U B R O U T I N E =======================================
; In: SELECTOR ($16) = table index
load_ppu_data:
LDX SELECTOR
LDA tbl_BG_screens_LO,X
STA TEMP ; Temp variable.
; Usually paired with the next byte
; as a pointer for indirect addressing.
LDA tbl_BG_screens_HI,X
STA TEMP_HI
JSR _do_load_ppu_data
LDA #0
STA SELECTOR
STA NT_ADDR_HI
STA NT_ADDR_LO
RTS
; End of function load_ppu_data
proc_9713: ; 962Eo
LDY $773
LDX $775
LDA tbl_968B,Y
STA $760,X
STA 0
LDA tbl_96CF,Y
STA $764,X
STA 1
STA 2
JSR sub_CD40
LDX $775
LDA $31D
STA $768,X
LDA $31E
STA $76C,X
INC $775
INC $773
LDA $773
CMP $774
BNE locret_974E
INC $4B7
locret_974E: ; 9749j
RTS
; ---------------------------------------------------------------------------
tbl_974F: .BYTE $22, $21, $21, $22, $28, $20, $21, $21, $21, $28, $22, $21, $21, $22, $20, $23
; 97BEr
.BYTE $20, $21, $22, $20, $28, $28, $20, $20
tbl_9767: .BYTE $AE, $E7, $70, $72, $2A, $8F, $B6, $8D, $41, $64, $CD, $83, $8F, $67, $97, $B
; 97C4r
.BYTE $C3, $CB, $46, $4D, $85, $B, $62, $EC
tbl_977F: .BYTE $FF ; loc_97CEr
.BYTE $FF
.BYTE $86 ; †
.BYTE $24 ; $
.BYTE $64 ; d
.BYTE $65 ; e
.BYTE $66 ; f
.BYTE $67 ; g
.BYTE $24 ; $
.BYTE $FF
.BYTE $FF
.BYTE $86 ; †
.BYTE $68 ; h
.BYTE $69 ; i
.BYTE $FD ; ý
.BYTE $6A ; j
.BYTE $6B ; k
.BYTE $6C ; l
.BYTE $FF
.BYTE $FF
.BYTE $86 ; †
.BYTE $6D ; m
.BYTE $FD ; ý
.BYTE $FD ; ý
.BYTE $FD ; ý
.BYTE $6E ; n
.BYTE $6F ; o
.BYTE $FF
.BYTE $FF
.BYTE $86 ; †
.BYTE $70 ; p
.BYTE $71 ; q
.BYTE $FD ; ý
.BYTE $FD ; ý
.BYTE $FD ; ý
.BYTE $72 ; r
.BYTE $FF
.BYTE $FF
.BYTE $86 ; †
.BYTE $73 ; s
.BYTE $74 ; t
.BYTE $75 ; u
.BYTE $FD ; ý
.BYTE $76 ; v
.BYTE $77 ; w
.BYTE $FF
.BYTE $FF
.BYTE $86 ; †
.BYTE $24 ; $
.BYTE $78 ; x
.BYTE $79 ; y
.BYTE $7A ; z
.BYTE $7B ; {
.BYTE $24 ; $
.BYTE 0
; ---------------------------------------------------------------------------
proc_97B6: ; 9630o
LDA $69
CMP #$A
BEQ loc_97F3
LDX $6F
LDA tbl_974F,X
STA $771
LDA tbl_9767,X
STA $772
STA 1
LDX #$36 ; '6'
loc_97CE: ; 97D5j
LDA tbl_977F,X
STA NT_ADDR_LO,X
DEX
BPL loc_97CE
LDX #0
LDY #5
loc_97DB: ; 97EEj
LDA $771
STA $301,X
LDA 1
STA $302,X
INC 1
TXA
CLC
ADC #9
TAX
DEY
BPL loc_97DB
JSR nullsub_1
loc_97F3: ; 97BAj
JSR tbl_C04B
LDA #0
STA $748
JMP loc_9687
; ---------------------------------------------------------------------------
proc_97FE: ; 9632o
LDA $6F
CMP #6
BCC loc_981A
LDA #0
STA NT_ADDR_HI
LDX $748
JSR loc_C194
INC $748
LDA $748
CMP $749
BNE locret_981D
loc_981A: ; 9802j
INC $4B7
locret_981D: ; 9818j
RTS
; ---------------------------------------------------------------------------
proc_981E: ; 9634o
JSR sub_BD4D
loc_9821: ; loc_98B3j
LDA #0
STA $4B7
INC $74
RTS
; ---------------------------------------------------------------------------
tbl_9829:
.BYTE 0 ; 9865r
.BYTE $11
; ---------------------------------------------------------------------------
proc_982B: ; 92A5o
LDA $4B7
BNE loc_9855
LDA $C8
BNE loc_9852
LDX #1
loc_9836: ; 9850j
LDA $62,X
BEQ loc_984F
LDA #1
STA $4E2,X
STA $4E4,X
JSR sub_A1C0
JSR sub_D604
LDA $6C
BNE loc_984F
JSR sub_D056
loc_984F: ; 9838j 984Aj
DEX
BPL loc_9836
loc_9852: ; 9832j
JMP loc_9687
; ---------------------------------------------------------------------------
loc_9855: ; 982Ej
CMP #1
BNE loc_9875
LDA $6C
BNE loc_98B3
LDX #1
; =============== S U B R O U T I N E =======================================
sub_985F: ; 9870j 9D56p
; FUNCTION CHUNK AT 9687 SIZE 00000004 BYTES
LDA $62,X
BEQ loc_986F
TXA
PHA
LDA tbl_9829,X
STA 0
JSR sub_E849
PLA
TAX
loc_986F: ; 9861j
DEX
BPL sub_985F
JMP loc_9687
; End of function sub_985F
; ---------------------------------------------------------------------------
loc_9875: ; 9857j
CMP #2
BNE loc_988B
LDA #$F9 ; 'ù'
STA 0
JSR sub_E9D0
LDA #$FF
STA 0
JSR sub_E849
loc_9887: ; 98A8j
INC $4B7
RTS
; ---------------------------------------------------------------------------
loc_988B: ; 9877j
CMP #3
BNE loc_98B6
LDA $65
BEQ loc_98A6
LDX $15
JSR loc_B032
LDA $15
PHA
EOR #1
STA $15
TAX
JSR loc_B032
PLA
STA $15
loc_98A6: ; 9891j
LDA $C8
BNE loc_9887
LDA #0
STA $56
STA $57
JSR loc_E5A1
loc_98B3: ; 985Bj
JMP loc_9821
; ---------------------------------------------------------------------------
loc_98B6: ; 988Dj
JSR sub_938B ; -> returns A = 0
STA SELECTOR_COPY ; so reset SELECTOR_COPY
JMP proc_9A1A
; ---------------------------------------------------------------------------
proc_98BE: ; 92A7o
LDA $4B7
BNE loc_9904
LDA $6B
BEQ loc_98F0
LDA #7
STA $74
LDA #0
STA $79
LDA #1
STA $7B
LDA #$E0 ; 'à'
LDX $6C
BNE sub_98DF
LDA #4
STA $F2
LDA #$D0 ; 'Ð'
; =============== S U B R O U T I N E =======================================
sub_98DF: ; 98D7j 98F6p ...
STA $7A
STA $13
STA $7CF
CLC
ADC #$F0 ; 'ð'
STA $7C
LDA #0
STA SELECTOR_COPY
RTS
; End of function sub_98DF
; ---------------------------------------------------------------------------
loc_98F0: ; 98C5j
LDA #0
STA $79
STA $7B
JSR sub_98DF
LDA #1
STA $6B
LDA #8
STA $F2
INC $4B7
loc_9904: ; 98C1j
JSR sub_A273
JSR sub_A25D
DEC $75
BNE locret_9910
INC $74
locret_9910: ; 990Cj
RTS
; ---------------------------------------------------------------------------
proc_9911: ; 92A9o
LDA $7A
CLC
ADC #2
STA $7A
STA $13
STA $7CF
LDA $79
ADC #0
STA $79
LDA $7C
CLC
ADC #2
STA $7C
LDA $7B
ADC #0
STA $7B
LDA $13
CMP #$D0 ; 'Ð'
BCC loc_9938
INC $74
loc_9938: ; 9934j loc_9A05j
JSR sub_A273
JSR sub_A25D
RTS
; ---------------------------------------------------------------------------
tbl_993F:
.BYTE $29 ; PPU addr hi
.BYTE $AC ; PPU addr lo
.BYTE 8 ; count
; "PHASE "
.BYTE $19, $11, $A, $1C, $E, $24, $24, $24
.BYTE $2B
.BYTE $22
.BYTE 3
.BYTE $5F, $5C, 1
.BYTE 0
tbl_9951:
.BYTE 2 ; loc_99A6r
.BYTE 5
.BYTE 6
; ---------------------------------------------------------------------------
proc_9954: ; 92ABo
LDA $69
CMP #$A
BEQ loc_99C2
LDA $6C
BNE loc_99BF
LDY #0
LDX $300
loc_9963: ; 996Dj
LDA tbl_993F,Y
STA NT_ADDR_LO,X
INY
INX
CMP #0
BNE loc_9963
LDX $300
LDA $6D
CLC
ADC #1
BEQ loc_99A4
JSR sub_A27B
STA $30B,X
STA $311,X
TYA
JSR sub_A27B
CPY #0
BNE loc_9990
LDY #$24 ; '$'
CMP #0
BEQ loc_99B3
loc_9990: ; 9988j
STA $30A,X
STA $310,X
TYA
STA $309,X
CMP #$24 ; '$'
BEQ loc_99A1
STA $30F,X
loc_99A1: ; 999Cj
JMP loc_99B3
; ---------------------------------------------------------------------------
loc_99A4: ; 9977j
LDY #2
loc_99A6: ; 99B1j
LDA tbl_9951,Y
STA $30B,X
STA $311,X
DEX
DEY
BPL loc_99A6
loc_99B3: ; 998Ej loc_99A1j
LDA #$11
CLC
ADC $300
STA $300
JMP loc_99C2
; ---------------------------------------------------------------------------
loc_99BF: ; 995Cj
JSR sub_D016
loc_99C2: ; 9958j 99BCj
LDA #$30 ; '0'
STA $75
JMP loc_9A03
; ---------------------------------------------------------------------------
tbl_99C9: .BYTE $29 ; ) ; loc_99DBr
.BYTE $AC ; ¬
.BYTE $48 ; H
.BYTE $24 ; $
.BYTE 0
; ---------------------------------------------------------------------------
proc_99CE: ; 92ADo
DEC $75
BNE loc_9A05
LDA $6C
BNE loc_99F3
LDX NT_ADDR_HI
LDY #0
loc_99DB: ; 99E5j
LDA tbl_99C9,Y
STA NT_ADDR_LO,X
INX
INY
CMP #0
BNE loc_99DB
LDA #5
CLC
ADC NT_ADDR_HI
STA NT_ADDR_HI
JMP loc_9A03
; ---------------------------------------------------------------------------
loc_99F3: ; 99D4j
LDY #9
LDX #0
LDA #$F8 ; 'ø'
loc_99F9: ; 9A01j
STA $2C0,X
INX
INX
INX
INX
DEY
BPL loc_99F9
loc_9A03: ; 99C6j 99F0j
INC $74
loc_9A05: ; 99D0j
JMP loc_9938
; ---------------------------------------------------------------------------
proc_9A08: ; 92AFo
LDA #0
STA $74
LDA #1
STA $68
LDA $69
CMP #$A
BNE locret_9A19
JSR sub_EEEE
locret_9A19: ; 9A14j
RTS
; ---------------------------------------------------------------------------
proc_9A1A: ; 98BBj A12Ej
; ...
LDA #$10
STA $4F
JSR sub_BD4D
JSR init_oam_buffer
LDA #$D0 ; 'Ð'
STA SCROLL_Y
LDA #0
STA $6B
STA $74
LDA #1
STA $F2
LDA #$C
STA $69
LDA #$48 ; 'H'
STA SELECTOR
check_tbl_9A3A: ; loc_9AB4r
RTS
; ---------------------------------------------------------------------------
.BYTE $4A ; J
.BYTE $4B ; K
.BYTE $4C ; L
tbl_unk_9A3E: .BYTE $4D, $4E, $4F, $50 ; loc_9AC2r loc_9D27r
; Lenght 4 checked.
; ---------------------------------------------------------------------------
proc_9A42: ; 92B3o
LDA $4B7
BNE loc_9A78
LDA #0
STA $97
STA $98
LDA #1
STA $6C
LDA #$FF
STA $5FA
LDA $1C
AND #3
TAX
LDA $1F,X
AND #7
LDX $72
CPX #3
LDX #3
BCC loc_9A6A
INX
EOR #$80 ; '€'
loc_9A6A: ; 9A65j
STX $4EA
STA $4E9
LDA #2
STA $4EB
JMP loc_9687
; ---------------------------------------------------------------------------
loc_9A78: ; 9A45j
CMP #1
BNE loc_9A80
JSR sub_9B5E
RTS
; ---------------------------------------------------------------------------
loc_9A80: ; 9A7Aj
CMP #2
BNE loc_9A89
LDA #$49 ; 'I'
JMP loc_9685
; ---------------------------------------------------------------------------
loc_9A89: ; 9A82j
CMP #3
BNE loc_9ABA
LDX #9
loc_9A8F: ; 9A98j
LDA #$FF
STA $5E6,X
JSR sub_A472
DEX
BPL loc_9A8F
INC $70
LDA $70
CMP #5
BCC loc_9AA6
LDA #0
STA $70
loc_9AA6: ; 9AA0j
INC $72
INC $73
LDX $73
CPX #5
BCC loc_9AB4
LDX #1
STX $73
loc_9AB4:
; WARNING!
; The table refers to code (RTS) instead of data.
; Need to check it.
LDA check_tbl_9A3A,X
JMP loc_9685
; ---------------------------------------------------------------------------
loc_9ABA: ; 9A8Bj
LDX $72
CPX #4
BCC loc_9AC2
LDX #3
loc_9AC2: ; 9ABEj
LDA tbl_unk_9A3E,X
STA SELECTOR
LDA #4
STA $74
LDA #$40 ; '@'
STA $75
LDA #$20 ; ' '
STA $F2
JMP sub_938B
; ---------------------------------------------------------------------------
tbl_9AD6:
.BYTE $2A, $FF, 1, $93, $2A, $FF, $FF, $94, $2A, $FF, 1, $95, $2A, $FF, $FF, $96
tbl_9AE6:
.BYTE $00, $20, $40, $60, $80, $A0, $C0, $E0
tbl_9AEE:
.BYTE $C8, $C7, $C6, $C5, $C4, $CB, $CA, $C9
tbl_9AF6:
.BYTE $00, $40, $60, $20, $A0, $C0, $00, $80
tbl_9AFE:
.BYTE $C8, $C6, $C5, $CE, $CB, $CA, $CF, $C4
tbl_9B06:
.BYTE $00, $04, $08, $0C, $10, $14, $18, $1C, $20, $25, $2A, $2F, $34, $39, $3E, $43
tbl_9B16:
.BYTE $04, $0B, $13, $1A, $04, $0A, $14, $1A, $03, $09, $15, $1B, $04, $0D, $11, $1A
.BYTE $03, $07, $17, $1B, $05, $0C, $12, $19, $04, $0D, $11, $1A, $03, $09, $15, $1B
.BYTE $04, $09, $0F, $15, $1A, $04, $0A, $0F, $14, $1A, $03, $09, $0F, $15, $1B, $03
.BYTE $08, $0F, $16, $1B, $04, $0B, $0F, $13, $1A, $03, $07, $0F, $17, $1B, $03, $09
.BYTE $0F, $15, $1B, $04, $0B, $0F, $13, $1A
; =============== S U B R O U T I N E =======================================
sub_9B5E: ; 9A7Cp
LDY #$FF
STY $4E6
STY $4E7
loc_9B66: ; 9B6Dj
INY
LDA tbl_9AD6,Y
STA $301,Y
BNE loc_9B66
LDX $4EA
LDA $1C,X
AND #3
TAX
LDA $4EA
AND #1
BNE loc_9B82
INX
INX
INX
INX
loc_9B82: ; 9B7Cj
LDA $65
BEQ loc_9BAC
LDA $72
CMP #2
BCC loc_9BAC
LDA $4EB
BEQ loc_9BAC
CMP #2
BNE loc_9B9C
LDA $4EA
BNE loc_9B9C
LDX #6
loc_9B9C: ; 9B93j 9B98j
LDY tbl_9AFE,X
CPY #$CE ; 'Î'
BCC loc_9BA6
DEC $4EB
loc_9BA6: ; 9BA1j
LDA tbl_9AF6,X
JMP loc_9BB2
; ---------------------------------------------------------------------------
loc_9BAC: ; 9B84j 9B8Aj ...
LDY tbl_9AEE,X
LDA tbl_9AE6,X
loc_9BB2: ; 9BA9j
PHA
STY $307
STY $30F
CPY #$C9 ; 'É'
BCC loc_9BCD
DEC $301
DEC $309
CPY #$C9 ; 'É'
BEQ loc_9BCD
DEC $305
DEC $30D
loc_9BCD: ; 9BBBj 9BC5j
LDY $4E9
TYA
ASL A
BCC loc_9BD8
LSR A
ADC #8
TAY
loc_9BD8: ; 9BD2j
LDA tbl_9B06,Y
CLC
ADC $4EA
TAY
PLA
ADC tbl_9B16,Y
STA 1
STA $302
STA $30A
INC $30A
CLC
ADC #$20 ; ' '
STA $30E
STA $306
INC $30E
LDA $301
STA 0
JSR sub_E604
LDY $4EA
LDA 5
SEC
SBC #$10
STA $4FE,Y
LDA 4
STA $4F9,Y
DEC $4EA
BPL locret_9C1B
INC $4B7
locret_9C1B: ; 9C16j
RTS
; End of function sub_9B5E
; ---------------------------------------------------------------------------
proc_9C1C: ; 92B5o
LDA #0
STA NT_ADDR_HI
JSR sub_E55C
JSR sub_B015
LDA $4B7
BNE loc_9C40
LDA #$80 ; '€'
STA $75
INC $6E
LDA $6C
BNE loc_9C3C
LDA #2
STA $F2
INC $6D
loc_9C3C: ; 9C34j
INC $4B7
RTS
; ---------------------------------------------------------------------------
loc_9C40: ; 9C2Aj
DEC $75
BNE loc_9C55
LDA #$D
LDX $6C
BNE loc_9C4B
TXA
loc_9C4B: ; 9C48j
STA $74
LDA #1
STA $5FB
JSR sub_938B
loc_9C55: ; 9C42j
LDA #0
STA $80
STA $81
LDX #7
loc_9C5D: ; 9C86j
LDA $3DA,X
BNE loc_9C68
JSR sub_D644
JMP loc_9C85
; ---------------------------------------------------------------------------
loc_9C68: ; 9C60j
CMP #$FF
BEQ loc_9C85
AND #$F0 ; 'ð'
CMP #$C0 ; 'À'
BEQ loc_9C7C
CMP #$E0 ; 'à'
BEQ loc_9C82
JSR sub_AE97
JMP loc_9C85
; ---------------------------------------------------------------------------
loc_9C7C: ; 9C70j
JSR sub_D370
JMP loc_9C85
; ---------------------------------------------------------------------------
loc_9C82: ; 9C74j
JSR piranha ; Big piranha!
loc_9C85: ; 9C65j 9C6Aj ...
DEX
BPL loc_9C5D
RTS
; ---------------------------------------------------------------------------
proc_9C89: ; 92B7o
JSR sub_A073
DEC $5FB
BNE proc_9CAF
LDA #$15
STA $5FB
LDA $6C
JSR execute_procedure
; ---------------------------------------------------------------------------
.WORD proc_9CAF
.WORD proc_9CDF
.WORD proc_9D6E
.WORD proc_9DAC
.WORD proc_9DC6
.WORD proc_9DEF
.WORD proc_9E31
.WORD proc_9E51
.WORD proc_9F1A
.WORD proc_9F61
; ---------------------------------------------------------------------------
proc_9CAF: ; 9C8Fj
; 9C9Bo
RTS
; ---------------------------------------------------------------------------
tbl_9CB0:
.BYTE $20, $45, $06, $00, $20, $58, $06, $00, $21, $94, $05, $00, $22, $14, $05, $00
tbl_9CC0:
.BYTE $23, $C0, $43, $AA, $23, $C5, $43, $FF, $23, $D9, $02, $AA, $22, $23, $E1, $02
.BYTE $FF, $33, $20, $42, $03, $8F, $90, $91, $20, $55, $03, $92, $90, $91, $00
; ---------------------------------------------------------------------------
proc_9CDF: ; 9C9Do
LDA #1
STA $5FB
LDA $4B7
BNE loc_9D1B
JSR clear_ppumask ; Disable PPU.
LDA #1
STA SELECTOR_COPY
JSR clear_both_nametables
JSR init_oam_buffer
LDX #$F
loc_9CF8: ; 9CFFj
LDA tbl_9CB0,X
STA $554,X
DEX
BPL loc_9CF8
LDA $65
BNE loc_9D13
LDA $15
BEQ loc_9D13
LDA #$21 ; '!'
STA $560
LDA #$94 ; '”'
STA $561
loc_9D13: ; 9D03j 9D07j
LDA #1
STA $F0
LDA #$51 ; 'Q'
BNE loc_9D2A
loc_9D1B: ; 9CE7j
CMP #1
BNE loc_9D2D
LDX $72
CPX #4
BCC loc_9D27
LDX #3
loc_9D27: ; 9D23j
LDA tbl_unk_9A3E,X
loc_9D2A: ; 9D19j
JMP loc_9685
; ---------------------------------------------------------------------------
loc_9D2D: ; 9D1Dj
CMP #2
BNE loc_9D54
LDX #$1E
loc_9D33: ; 9D3Aj
LDA tbl_9CC0,X
STA $301,X
DEX
BPL loc_9D33
LDA $65
BNE loc_9D51
STA $319
LDA $15
BEQ loc_9D51
LDA #$55 ; 'U'
STA $314
LDA #$D9 ; 'Ù'
STA $30F
loc_9D51: ; 9D3Ej 9D45j
JMP loc_9687
; ---------------------------------------------------------------------------
loc_9D54: ; 9D2Fj
LDX #1
JSR sub_985F
LDA #0
LDX #7
loc_9D5D: ; 9D60j
STA $35,X
DEX
BPL loc_9D5D
STA $79
STA $7B
JSR sub_98DF
loc_9D69: ; 9DA9j 9DB1j ...
INC $6C
RTS
; ---------------------------------------------------------------------------
tbl_9D6C:
.BYTE $58
.BYTE $78
; ---------------------------------------------------------------------------
proc_9D6E: ; 9C9Fo
LDY #0
LDX #0
loc_9D72: ; 9D9Cj
LDA $62,X
BEQ loc_9D99
TYA
PHA
JSR sub_A1C0
PLA
TAY
PHA
LDA #1
STA $3C1,X
LDA #$18
STA $350,X
LDA #0
STA $36B,X
LDA tbl_9D6C,Y
STA $37E,X
JSR sub_D2EF
PLA
TAY
INY
loc_9D99: ; 9D74j
INX
CPX #2
BMI loc_9D72
LDA $F1
ORA #$40 ; '@'
STA $F1
LDA #0
STA $5FC
JMP loc_9D69
; ---------------------------------------------------------------------------
proc_9DAC: ; 9CA1o
LDA #0
STA $5FA
JMP loc_9D69
; ---------------------------------------------------------------------------
tbl_9DB4: ; Apparently PPU data for updating BG
.BYTE $21, $8B ; PPU address
.BYTE 1
.BYTE $2B
.BYTE $22, $B
.BYTE 1
.BYTE $2B
.BYTE 0
.BYTE $21, $92
.BYTE 1
.BYTE $29
.BYTE $22, $12
.BYTE 1
.BYTE $29
.BYTE 0
; ---------------------------------------------------------------------------
proc_9DC6: ; 9CA3o
LDX #8
loc_9DC8: ; 9E38j
LDY #8
loc_9DCA: ; 9DD2j
LDA tbl_9DB4,X
STA $301,Y
DEX
DEY
BPL loc_9DCA
LDA $65
BNE loc_9DDB
STA $305
loc_9DDB: ; 9DD6j loc_9E1Dj ...
LDA $F1
ORA #$40 ; '@'
STA $F1
JMP loc_9D69
; ---------------------------------------------------------------------------
tbl_9DE4: ; PPU data
.BYTE $21,$8E
.BYTE 2
.BYTE 0, 0
.BYTE $22, $E
.BYTE 2
.BYTE 0, 0
.BYTE 0
; ---------------------------------------------------------------------------
proc_9DEF: ; 9CA5o
LDY #$A
loc_9DF1: ; 9DF8j
LDA tbl_9DE4,Y
STA $301,Y
DEY
BPL loc_9DF1
LDA $65
BNE loc_9E06
LDA $15
BEQ loc_9E06
LDA $98
STA $97
loc_9E06: ; 9DFCj 9E00j
LDA $97
LDX #0
JSR sub_9E20
LDA $65
BNE loc_9E16
STA $306
BEQ loc_9E1D
loc_9E16: ; 9E0Fj
LDA $98
LDX #5
JSR sub_9E20
loc_9E1D: ; 9E14j
JMP loc_9DDB
; =============== S U B R O U T I N E =======================================
sub_9E20: ; 9E0Ap 9E1Ap
JSR sub_A27B
STA $305,X
TYA
CMP #0
BNE loc_9E2D
LDA #$24 ; '$'
loc_9E2D: ; 9E29j
STA $304,X
RTS
; End of function sub_9E20
; ---------------------------------------------------------------------------
proc_9E31: ; 9CA7o
LDA #1
STA $5FA
LDX #$11
JMP loc_9DC8
; ---------------------------------------------------------------------------
tbl_9E3B:
; PPU data
.BYTE $21, $9A
.BYTE 4
.BYTE $19
.BYTE $1D
.BYTE $1C
.BYTE $26
.BYTE $22, $1A
.BYTE 4
.BYTE $19
.BYTE $1D
.BYTE $1C
.BYTE $26
tbl_9E49:
.BYTE 0 ; loc_9ED7r
.BYTE 3
.BYTE 5
.BYTE 7
tbl_9E4D:
.BYTE $A
.BYTE $B
tbl_9E4F:
.BYTE $22
.BYTE $33
; ---------------------------------------------------------------------------
proc_9E51: ; 9CA9o
JSR sub_9ECF
STA $D
LDA $97
STA $E
LDA $98
STA $F
LDX #0
loc_9E60: ; 9E7Aj 9EAAj
TXA
PHA
LDA $62,X
BEQ loc_9EA5
LDA $D
STA 0
LDA tbl_9E4D,X
STA 1
DEC $E,X
LDA $E,X
BMI loc_9E7D
JSR sub_E8DE
PLA
TAX
JMP loc_9E60
; ---------------------------------------------------------------------------
loc_9E7D: ; 9E73j
LDA tbl_9E4F,X
STA 0
JSR sub_E849
LDA $300
SEC
SBC #5
TAY
LDX #0
loc_9E8E: ; 9EA3j
LDA $301,Y
BEQ loc_9E97
CMP #$8E ; 'Ž'
BNE loc_9EA5
loc_9E97: ; 9E91j
LDA #$24 ; '$'
STA $301,Y
STA $309,Y
INY
INX
CPX #4
BMI loc_9E8E
loc_9EA5: ; 9E64j 9E95j
PLA
TAX
INX
CPX #2
BMI loc_9E60
LDX $300
LDY #0
loc_9EB1: ; 9EBBj
LDA tbl_9E3B,Y
STA $301,X
INX
INY
CPY #$F
BMI loc_9EB1
LDX $300
LDA $65
BNE loc_9EC7
STA $308,X
loc_9EC7: ; 9EC2j
LDA #1
STA $5FB
JMP loc_9DDB
; =============== S U B R O U T I N E =======================================
sub_9ECF: ; proc_9E51p A0CDp
LDX $72
CPX #4
BCC loc_9ED7
LDX #3
loc_9ED7: ; 9ED3j
LDA tbl_9E49,X
RTS
; End of function sub_9ECF
; ---------------------------------------------------------------------------
tbl_9EDB:
; PPU data
.BYTE $22, $88
.BYTE $11
.BYTE $19, $24, $0E, $24, $1B, $24, $0F, $24, $0E, $24, $0C, $24, $1D
.BYTE $24, $2C, $2C, $2C
.BYTE $22, $C5
.BYTE $18
.BYTE $1C, $1E, $19, $0E, $1B, $24, $0B, $18
.BYTE $17, $1E, $1C, $24, $24, $24, $01, $00
.BYTE $00, $00, $00, $24, $19, $1D, $1C, $2C
.BYTE $00
.BYTE $22, $88
.BYTE $54 ; Bit 6 set, so we need repeat next byte $54-$40 times
.BYTE $24
tbl_9F0F:
.BYTE $00, $01, $01, $02, $02
tbl_9F14:
.BYTE $03, $00, $05, $00, $05, $00
; ---------------------------------------------------------------------------
proc_9F1A: ; 9CABo
LDA #0
STA $5FD
LDA $97
LDX $65
BEQ loc_9F28
CLC
ADC $98
loc_9F28: ; 9F23j
CMP #$14
BNE loc_9F56
LDY $72
CPY #6
BCC loc_9F34
LDY #5
loc_9F34: ; 9F30j
TYA
STA $5FD
LDX #$2F ; '/'
loc_9F3A: ; 9F41j
LDA tbl_9EDB,X
STA NT_ADDR_LO,X
DEX
BPL loc_9F3A
LDY $5FD
LDA tbl_9F0F,Y
STA $326
LDA tbl_9F14,Y
STA $327
LDA #$10
STA $F2
loc_9F56: ; 9F2Aj
JSR sub_938B
LDA #$C0 ; 'À'
STA $5FB
JMP loc_9D69
; ---------------------------------------------------------------------------
proc_9F61: ; 9CADo
LDA #1
STA $5FB
LDA $4B7
BNE loc_9F7A
INC $4B7
; =============== S U B R O U T I N E =======================================
sub_9F6E: ; 9FA4p
LDA #4
STA $43E
LDA $F1
ORA #1
STA $F1
RTS
; End of function sub_9F6E
; ---------------------------------------------------------------------------
loc_9F7A: ; 9F69j
CMP #1
BNE loc_9FBA
LDY #0
LDA $62
BEQ loc_9F90
LDA $36
ORA $37
BEQ loc_9F90
LDX #0
JSR sub_9FEA
INY
loc_9F90: ; 9F82j 9F88j
LDA $63
BEQ loc_9F9F
LDA $3A
ORA $3B
BEQ loc_9F9F
LDX #1
JSR sub_9FEA
loc_9F9F: ; 9F92j 9F98j
DEC $43E
BNE loc_9FA7
JSR sub_9F6E
loc_9FA7: ; 9FA2j
LDA $36
ORA $37
ORA $3A
ORA $3B
BNE locret_9FB9
LDA #$40 ; '@'
loc_9FB3: ; 9FD3j
STA $5FB
INC $4B7
locret_9FB9: ; 9FAFj
RTS
; ---------------------------------------------------------------------------
loc_9FBA: ; 9F7Cj
CMP #2
BNE loc_9FD6
LDA $5FD
BEQ loc_9FD1
LDA $F1
ORA #1
STA $F1
LDX #1
loc_9FCB: ; 9FCFj
JSR sub_A039
DEX
BPL loc_9FCB
loc_9FD1: ; 9FC1j
LDA #$C0 ; 'À'
JMP loc_9FB3
; ---------------------------------------------------------------------------
loc_9FD6: ; 9FBCj
LDA #$F9 ; 'ù'
STA 0
JSR sub_E9D0
LDA #0
STA $74
RTS
; ---------------------------------------------------------------------------
tbl_9FE2: .BYTE $A ; 9FF2r
.BYTE $B
tbl_9FE4: .BYTE 8 ; A000r A04Br
.BYTE 9
tbl_9FE6: .BYTE 2 ; A00Ar
.BYTE $13
tbl_9FE8: .BYTE 0 ; A014r
.BYTE $11
; =============== S U B R O U T I N E =======================================
sub_9FEA: ; 9F8Cp 9F9Cp
STY $F
STX $E
LDA #1
STA TEMP
LDA tbl_9FE2,X
STA TEMP_HI
JSR sub_E8DA
LDX $E
LDA #1
STA TEMP
LDA tbl_9FE4,X
STA TEMP_HI
JSR sub_E8DE
LDX $E
LDA tbl_9FE6,X
STA TEMP
JSR sub_E849
LDX $F
LDY tbl_9FE8,X
LDX #0
loc_A019: ; A02Bj
LDA $304,Y
BEQ loc_A022
CMP #$8E ; 'Ž'
BNE loc_A02D
loc_A022: ; A01Cj
LDA #$24 ; '$'
STA $304,Y
INY
INX
CPX #4
BMI loc_A019
loc_A02D: ; A020j
LDY $F
LDX $E
RTS
; End of function sub_9FEA
; ---------------------------------------------------------------------------
tbl_A032:
.BYTE 0 ; A05Br
tbl_A033:
.BYTE $11 ; A046r
.BYTE $20
.BYTE $30 ; 0
.BYTE $40 ; @
.BYTE $50 ; P
.BYTE $60 ; `
; =============== S U B R O U T I N E =======================================
sub_A039: ; loc_9FCBp
LDA $62,X
BEQ locret_A065
LDA #5
STA $F
loc_A041: ; A057j
TXA
PHA
LDY $5FD
LDA tbl_A033,Y
STA 0
LDA tbl_9FE4,X
STA 1
JSR sub_E8DE
PLA
TAX
DEC $F
BNE loc_A041
TXA
PHA
LDA tbl_A032,X
STA 0
JSR sub_E849
PLA
TAX
locret_A065: ; A03Bj
RTS
; End of function sub_A039
; ---------------------------------------------------------------------------
tbl_A066:
; PPU data
.BYTE $21, $87
.BYTE $03
.BYTE $02, $00, $00
.BYTE $22, $07
.BYTE $03
.BYTE $02, $00, $00
.BYTE $00
; =============== S U B R O U T I N E =======================================
sub_A073: ; proc_9C89p
LDX $65
loc_A075: ; A09Cj
LDA $5FA
BMI locret_A0E3
STA $5E6,X
LDA #1
STA $3C3,X
LDA #$38 ; '8'
STA $352,X
LDA #0
STA $36D,X
LDA tbl_9D6C,X
STA $380,X
INX
INX
LDA #0
JSR sub_D467
DEX
DEX
DEX
BPL loc_A075
LDA $5E6
CMP #2
BCC locret_A0E3
INC $5FC
LDA $5FC
CMP #5
BNE locret_A0E3
LDA #$F8 ; 'ø'
LDX #7
loc_A0B3: ; A0BBj
STA OAM_BUFFER,Y
INY
INY
INY
INY
DEX
BPL loc_A0B3
LDA #$FF
STA $5FA
LDY #$C
loc_A0C4: ; A0CBj
LDA tbl_A066,Y
STA $301,Y
DEY
BPL loc_A0C4
JSR sub_9ECF
STA $304
STA $30A
LDA $F0
ORA #2
STA $F0
LDA $65
BNE locret_A0E3
STA $307
locret_A0E3: ; A078j A0A3j ...
RTS
; End of function sub_A073
; ---------------------------------------------------------------------------
proc_A0E4: ; 92B9o
LDX $61
JSR sub_AE97
LDX #7
loc_A0EB: ; A106j
LDA $3DA,X
CMP #$FF
BEQ loc_A105
CPX $61
BEQ loc_A105
AND #$F0 ; 'ð'
CMP #$C0 ; 'À'
BEQ loc_A102
JSR sub_D644
JMP loc_A105
; ---------------------------------------------------------------------------
loc_A102: ; A0FAj
JSR sub_D370
loc_A105: ; A0F0j A0F4j ...
DEX
BPL loc_A0EB
LDA #$F8 ; 'ø'
STA $2F0
STA $2F4
STA $2F8
STA $2FC
LDX $61
LDA $3DA,X
PHA
AND #$F0 ; 'ð'
CMP #$E0 ; 'à'
BNE loc_A125
JSR piranha ; Big piranha!
loc_A125: ; A120j
PLA
CMP #$FF
BNE locret_A145
LDA $65
BNE loc_A131
JMP proc_9A1A
; ---------------------------------------------------------------------------
loc_A131: ; A12Cj
LDA #1
STA $F0
LDA #0
STA $74
DEC LIVES,X ; Player 1 (or 2) lose life.
LDA #7
CPX $15
BNE loc_A143
LDA #0
loc_A143: ; A13Fj
STA $69
locret_A145: ; A128j
RTS
; ---------------------------------------------------------------------------
tbl_unk_A146:
.BYTE 4 ; sub_A14Cr
.BYTE 8
; The number of lives (initial).
; Set by DIP switches.
tbl_LIVES:
.BYTE 2, 3, 4, 5 ; A160r
; =============== S U B R O U T I N E =======================================
sub_A14C: ; E384p
LDY tbl_unk_A146,X
TXA
PHA
LDX #3
LDA #0
loc_A155: ; A15Aj
STA $2D,Y
DEY
DEX
BPL loc_A155
PLA
TAX
loc_A15E: ; 932Ep 933Dp
LDY dip_LIVES
LDA tbl_LIVES,Y ; Init player(s) lives.
STA LIVES,X
RTS
; End of function sub_A14C
; ---------------------------------------------------------------------------
tbl_A166:
.BYTE $02, $03, $00 ; A193r
; =============== S U B R O U T I N E =======================================
proc_A169: ; 9470p loc_B52Bp
LDA #$1D
STA $41E,X
LDA #$23 ; '#'
STA $426,X
LDA #6
STA $3F2,X
LDA #1
STA $3FA,X
LDA #$E
STA $40E,X
LDA #0
STA $518,X
STA $45A,X
STA $460,X
STA $44E,X
STA $446,X
LDA tbl_A166,Y
STA $4A2,X
LDA #4
STA $42E,X
LDA #$FF
STA $416,X
LDA $1C,X
AND #1
CLC
ADC #1
STA $3C1,X
LDA #0
STA $3EA,X
LDA #1
STA $3E2,X
RTS
; End of function proc_A169
; ---------------------------------------------------------------------------
tbl_A1B8:
.BYTE $20 ; loc_A21Er
.BYTE $D0 ; Ð
tbl_A1BA:
.BYTE 1 ; A218r A221r
.BYTE 2
tbl_A1BC:
.BYTE $48 ; H ; A215r
.BYTE $A8 ; ¨
tbl_A1BE:
.BYTE $80 ; € ; A22Dr
.BYTE $98 ; ˜
; =============== S U B R O U T I N E =======================================
sub_A1C0: ; 9842p 9D78p ...
LDA $6C
EOR #1
STA $3DA,X
LDY #$FF
LDA $6C
BNE loc_A1D4
LDA $3E2,X
CMP #1
BEQ loc_A1DE
loc_A1D4: ; A1CBj
LDA #2
STA $3E2,X
STA $42E,X
LDY #$FE ; 'þ'
loc_A1DE: ; A1D2j
TYA
STA $416,X
JSR sub_A243
STA $510,X
STA $7D2
LDA #$FF
STA $50
LDA #9
STA $84,X
LDA #$20 ; ' '
STA $3D2,X
LDA #$48 ; 'H'
STA $3F2,X
LDA #8
STA $3FA,X
LDA #8
STA $41E,X
LDA #$36 ; '6'
STA $426,X
LDA #$10
STA $40E,X
LDA $6C
BEQ loc_A21E
LDA tbl_A1BC,X
LDY tbl_A1BA,X
JMP loc_A224
; ---------------------------------------------------------------------------
loc_A21E: ; A213j
LDA tbl_A1B8,X
LDY tbl_A1BA,X
loc_A224: ; A21Bj
STA $350,X
TYA
STA $3C1,X
LDY $6C
LDA tbl_A1BE,Y
STA $37E,X
LDA #1
STA $36B,X
TXA
STA $4A2,X
LDA #$F0 ; 'ð'
STA $88,X
STA $8A,X
RTS
; End of function sub_A1C0
; =============== S U B R O U T I N E =======================================
sub_A243: ; loc_93F8p A1E2p
LDA #1
STA $3CA,X
LDA #0
STA $363,X
STA $391,X
STA $3A9,X
STA $3B5,X
STA $3EA,X
STA $406,X
RTS
; End of function sub_A243
; =============== S U B R O U T I N E =======================================
sub_A25D: ; 9907p 993Bp
JSR sub_B015
LDX #1
loc_A262: ; A270j
LDA $62,X
BEQ loc_A26F
LDA #0
STA $80,X
STA $82,X
JSR process_player
loc_A26F: ; A264j
DEX
BPL loc_A262
RTS
; End of function sub_A25D
; =============== S U B R O U T I N E =======================================
sub_A273: ; 947Dp loc_9904p ...
LDA $6C
BNE locret_A27A
JSR process_enemies
locret_A27A: ; A275j
RTS
; End of function sub_A273
; =============== S U B R O U T I N E =======================================
sub_A27B: ; 9979p 9983p ...
LDY #0
loc_A27D: ; A285j
CMP #$A
BCC locret_A288
SEC
SBC #$A
INY
JMP loc_A27D
; ---------------------------------------------------------------------------
locret_A288: ; A27Fj
RTS
; End of function sub_A27B
tbl_A2A0:
.BYTE 0 ; A3D7r
.BYTE $10
.BYTE $20
tbl_A2A3:
.BYTE $25, $26, $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31, $32, $33, $34
.BYTE $2A, $2B, $2C, $2D, $2E, $2F, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39
.BYTE $2E, $2F, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $3A, $3B, $3C, $3D
tbl_A2D3:
.BYTE 6 ; A3C6r
.BYTE $F
.BYTE $15
tbl_A2D6:
.BYTE 1 ; A3CBr
.BYTE 2
.BYTE 4
tbl_A2D9:
.BYTE $30 ; 0 ; A422r
.BYTE $2C ; ,
.BYTE $28 ; (
.BYTE $24 ; $
.BYTE $20
.BYTE $1C
.BYTE $18
.BYTE $14
.BYTE $10
.BYTE $C
.BYTE $A
.BYTE 8
.BYTE 6
.BYTE 4
.BYTE 2
.BYTE 0
.BYTE $28 ; (
.BYTE $24 ; $
.BYTE $20
.BYTE $1C
.BYTE $18
.BYTE $14
.BYTE $10
.BYTE $E
.BYTE $C
.BYTE $A
.BYTE 8
.BYTE 6
.BYTE 4
.BYTE 2
.BYTE 1
.BYTE 0
.BYTE $20
.BYTE $1C
.BYTE $18
.BYTE $17
.BYTE $15
.BYTE $13
.BYTE $11
.BYTE $F
.BYTE $E
.BYTE $D
.BYTE $C
.BYTE $B
.BYTE $A
.BYTE 8
.BYTE 6
.BYTE 4
tbl_A309:
.BYTE $80, $84, $88, $8C, $90, $94, $98, $9C, $A0, $A5, $AA, $B0, $B5, $BA, $C0, $C5
.BYTE $60, $65, $6A, $70, $74, $78, $7C, $80, $85, $8A, $90, $95, $9A, $A0, $A5, $AA
.BYTE $4A, $50, $55, $5A, $60, $65, $6A, $70, $75, $7A, $80, $85, $8A, $90, $95, $9A
tbl_A339:
.BYTE $AF, $A7, $9F, $97, $8F, $87, $7F, $77, $6F, $67, $5F, $57, $4F, $47, $3F, $37
tbl_A349:
.BYTE $20, $20, $20, $20, $1C, $1C, $1C, $1C, $18, $18, $18, $18, $14, $14, $14, $14
tbl_A359:
.BYTE $2C, $2C, $2A, $2A, $28, $28, $26, $26, $24, $24, $22, $22, $20, $20, $1E, $1E
tbl_A369:
.BYTE $0C, $0C, $0C, $0C, $0A, $0A, $0A, $0A, $08, $08, $08, $08, $06, $06, $06, $06
; =============== S U B R O U T I N E =======================================
sub_A379: ; sub_A391p A3D0p
LDA $6D
LDY $69
CPY #$A
BEQ loc_A388
LDY dip_ENEMY_REGEN
BEQ loc_A388
CLC
ADC #8
loc_A388: ; A37Fj A383j
CMP #$20
BCS loc_A38E
LSR A
RTS
; ---------------------------------------------------------------------------
loc_A38E: ; A38Aj
LDA #$F
RTS
; End of function sub_A379
; =============== S U B R O U T I N E =======================================
sub_A391: ; 9467p
JSR sub_A379
TAY
LDA tbl_A339,Y
STA $4F5
LDA tbl_A349,Y
STA $4F6
LDA tbl_A359,Y
STA $4F7
LDA tbl_A369,Y
STA $4F8
RTS
; End of function sub_A391
; =============== S U B R O U T I N E =======================================
sub_A3AE: ; A5D6p
LDA $42E,X
CMP #3
BNE loc_A3B8
INC $42E,X
loc_A3B8: ; A3B3j
LDA $518,X
BEQ loc_A3C1
DEC $518,X
RTS
; ---------------------------------------------------------------------------
loc_A3C1: ; A3BBj
STA $F
LDY $454,X
LDA tbl_A2D3,Y
STA $D
LDA tbl_A2D6,Y
STA $E
JSR sub_A379
LDY $454,X
CLC
ADC tbl_A2A0,Y
TAY
LDA $426,X
CMP tbl_A2A3,Y
BEQ loc_A3F2
LDA $460,X
AND #1
BEQ loc_A3F0
DEC $41E,X
INC $426,X
loc_A3F0: ; A3E8j
INC $F
loc_A3F2: ; A3E1j
LDA $3FA,X
CMP $E
BEQ loc_A40A
LDA $460,X
CMP #6
BCC loc_A408
INC $3FA,X
LDA #0
STA $460,X
loc_A408: ; A3FEj
INC $F
loc_A40A: ; A3F7j
INC $460,X
LDA $3F2,X
CMP $D
BCS loc_A419
INC $3F2,X
INC $F
loc_A419: ; A412j
LDA $F
BEQ loc_A436
LDA $56E,X
BEQ loc_A425
LDA tbl_A2D9,Y
loc_A425: ; A420j
STA $518,X
LDA $3C1,X
LSR A
LDA #0
BCS loc_A432
LDA #$FF
loc_A432: ; A42Ej
STA $363,X
RTS
; ---------------------------------------------------------------------------
loc_A436: ; A41Bj
LDA tbl_A309,Y
STA $45A,X
LDA #0
STA $460,X
RTS
; End of function sub_A3AE
; ---------------------------------------------------------------------------
tbl_A442:
.BYTE $F8, $F0, $E4, $D8, $C4, $B8, $AC, $AC, $AC, $AC, $AC, $AC, $AC, $AC, $AC, $AC
tbl_A452:
.BYTE $B8, $C0, $D0, $C0, $E0, $F0, $FF, 8, $10, $18, $20, $20, $20, $20, $20, $20
tbl_A462:
.BYTE $40, $40, $40, $40, $40, $40, $38, $3C, $40, $44, $46, $48, $4A, $4C, $4E, $50
; =============== S U B R O U T I N E =======================================
sub_A472: ; 9A94p
TYA
PHA
LDY $72
CPY #$10
BCC loc_A47C
LDY #$F
loc_A47C: ; A478j
LDA tbl_A442,Y
STA $5F0,X
LDA tbl_A452,Y
STA $3B7,X
LDA #0
CPY #7
BCC loc_A490
LDA #1
loc_A490: ; A48Cj
STA $3AB,X
LDA tbl_A462,Y
STA $4EC
LDA #$14
STA $5FE
PLA
TAY
RTS
; End of function sub_A472
; =============== S U B R O U T I N E =======================================
sub_A4A8: ; loc_8129p
LDA #0
STA $60
LDA $69
JSR execute_procedure
; ---------------------------------------------------------------------------
.WORD proc_todo_DE0D ; 0
.WORD proc_unk_DE65 ; 1
.WORD proc_unk_DF07 ; 2
.WORD proc_unk_E02A ;3
.WORD proc_unk_E08F ; id 4 "please wait" info screen related
.WORD proc_unk_E21F ;5
.WORD proc_unk_E2E2 ;6
.WORD proc_unk_E345 ;7
.WORD proc_unk_E3B6 ;8
.WORD proc_unk_E404 ;9
.WORD proc_E30C ;A
.WORD proc_unk_A4CD ; B
.WORD proc_unk_DFA7 ; C
.WORD proc_E04C ; D
.WORD proc_process_dip_menu ; E
; ---------------------------------------------------------------------------
proc_unk_A4CD: ; E31Ep
; A4C7o
LDA #1
STA $60
JSR sub_B015
LDX #1
loc_A4D6: ; A4DEj
LDA $62,X
BEQ loc_A4DD
JSR process_player
loc_A4DD: ; A4D8j
DEX
BPL loc_A4D6
JSR sub_C8F0
LDA $6C
BNE loc_A510
JSR sub_CF55
JSR process_enemies
JSR sub_E55C
JSR sub_CFEA
JSR sub_AE00
LDA $68
BEQ loc_A513
TXA
PHA
JSR sub_A625
PLA
TAX
JSR piranha ; Big piranha!
JSR sub_BAEE
JSR sub_C0EB
JSR sub_AE49
JMP loc_A513
; ---------------------------------------------------------------------------
loc_A510: ; A4E5j
JSR sub_A6F8
loc_A513: ; A4F8j A50Dj
JSR sub_D190
LDA $74
CMP #$A
BNE locret_A51F
JSR init_oam_buffer
locret_A51F: ; A51Aj
RTS
; End of function sub_A4A8
; =============== S U B R O U T I N E =======================================
process_player:
TXA
AND #1
EOR $15
STA $7F
LDA $4A2,X
AND #$F
STA $4A2,X
LDY $84,X
LDA $80,X
AND #$C0 ; Check A/B
BEQ loc_A55F
LDA $80,X
AND #3
ORA #$40 ; '@'
STA $80,X
AND #$C0 ; 'À'
EOR $86,X
BEQ loc_A561
STA $86,X
LDA #0
STA $84,X
STA $80,X
LDA #6
STA $446,X
STA $44E,X
LDA #8
STA $9C,X
LDA #$10
STA $7C6,X
JMP loc_A56D
; ---------------------------------------------------------------------------
loc_A55F: ; A535j
STA $86,X
loc_A561: ; A543j
CPY #8
BPL loc_A56D ; branch if Y >= 8
LDA #$80 ; '€'
ORA $80,X
STA $80,X
INC $84,X
loc_A56D: ; A55Cj A563j
JSR sub_AE97
LDA $3DA,X
BNE loc_A5A3
loc_A575: ; B19Ep
LDA $6C
BEQ loc_A57F
JSR sub_C3CE
JMP loc_A582
; ---------------------------------------------------------------------------
loc_A57F: ; A577j
JSR sub_C370
loc_A582: ; A57Cj
JSR player_dpad
LDY $3CA,X
BNE loc_A593
JSR sub_A8BF
JSR sub_AA33
JMP loc_A596
; ---------------------------------------------------------------------------
loc_A593: ; A588j
JSR sub_A8E9
loc_A596: ; A590j
CPX $15
BNE loc_A5A0
JSR sub_CE4A
JSR sub_CDB8
loc_A5A0: ; A598j
JSR sub_D2EF
loc_A5A3: ; A573j
JSR sub_CD35
RTS
; End of function process_player
; =============== S U B R O U T I N E =======================================
process_enemies: ; A277p A4EAp
LDX $76
INX
loc_A5AA: ; A622j
TXA
AND #1
EOR $15
STA $7F
LDA $4A2,X
AND #$F
STA $4A2,X
TXA
PHA
JSR sub_AE97
PLA
TAX
LDY $3DA,X
BNE loc_A610
LDA $42E,X
CMP #5
BEQ loc_A5D1
LDA #$10
STA $7C6,X
loc_A5D1: ; A5CAj
LDA $45A,X
BNE loc_A5DF
JSR sub_A3AE
JSR sub_AB4D
JMP loc_A5E2
; ---------------------------------------------------------------------------
loc_A5DF: ; A5D4j
JSR sub_AB58
loc_A5E2: ; A5DCj
JSR sub_AC3E
JSR sub_ADB5
JSR sub_CF9F
JSR sub_C370
JSR sub_CA55
JSR player_buttons
JSR sub_A8D4
JSR sub_AA4E
LDA $4BE,X
BNE loc_A60A
LDA $F1
ORA #$10
STA $F1
LDA #$10
STA $4BE,X
loc_A60A: ; A5FDj
DEC $4BE,X
JSR sub_D2EF
loc_A610: ; A5C3j
LDY $3DA,X
INY
BEQ loc_A61F
LDY $5E4,X
INY
BNE loc_A61F
JSR sub_CD35
loc_A61F: ; A614j A61Aj
DEX
CPX #1
BNE loc_A5AA
RTS
; End of function process_enemies
; =============== S U B R O U T I N E =======================================
sub_A625: ; A4FCp
; FUNCTION CHUNK AT A67A SIZE 00000052 BYTES
LDA $7D4
BEQ loc_A67A
LDA $7D3
LSR A
LDA $362
LDY #$FD ; 'ý'
BCC loc_A63E
CMP #$F1 ; 'ñ'
BCS sub_A658
LDY #3
JMP loc_A642
; ---------------------------------------------------------------------------
loc_A63E: ; A633j
CMP #3
BCC sub_A658
loc_A642: ; A63Bj
STY 0
LDA $362
CLC
ADC 0
STA $362
JSR sub_CBC8
JSR sub_D319
RTS
; End of function sub_A625
; ---------------------------------------------------------------------------
tbl_A654:
.BYTE $FF, $FF, $FF, $FF
; =============== S U B R O U T I N E =======================================
;
sub_A658: ; A637j A640j ...
LDA #0
STA $7D4
LDA #$F8 ; 'ø'
STA $2D8
STA $2DC
LDX $7D2
CPX #4
BCC loc_A66E
LDX #4
; Weird code, weird table
loc_A66E: ; A66Aj
LDA tbl_A654,X
STA $50
RTS
; End of function sub_A658
; ---------------------------------------------------------------------------
tbl_A674:
.BYTE $F1
.BYTE 0
tbl_A676:
.BYTE $BF
.BYTE $C4
tbl_A678:
.BYTE $C4
.BYTE $BF
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_A625
loc_A67A: ; A628j
LDA $50
BNE locret_A6CB
LDA $15
LDY $65
BEQ loc_A688
LDA $1C
AND #1
loc_A688: ; A682j
TAX
LDA $3DA,X
BNE locret_A6CB
LDA $36B,X
STA $37D
LDA $37E,X
STA $390
LDA $350,X
ASL A
LDA #0
ROL A
TAX
LDY #$43 ; 'C'
LDA tbl_A674,X
STA $362
TXA
BNE loc_A6B1
LDY #3
LDA #2
loc_A6B1: ; A6ABj
STA $7D3
STY $2DA
STY $2DE
LDA tbl_A676,X
STA $2D9
LDA tbl_A678,X
STA $2DD
LDA #1
STA $7D4
locret_A6CB: ; A67Cj A68Cj
RTS
; END OF FUNCTION CHUNK FOR sub_A625
; =============== S U B R O U T I N E =======================================
sub_A6CC: ; loc_B713p
TXA
PHA
LDY $5E4,X
INY
BEQ loc_A6F2
DEY
BNE loc_A6F2
LDA $36B,X
BEQ loc_A6E3
LDA $37E,X
CMP #$98
BCS loc_A6E6
loc_A6E3: ; A6DAj
JSR sub_AD63
loc_A6E6: ; A6E1j
JSR sub_A973
JSR sub_AAFF
JSR sub_CB69
STA $5E4,X
loc_A6F2: ; A6D2j A6D5j
JSR sub_D370
PLA
TAX
RTS
; End of function sub_A6CC
; =============== S U B R O U T I N E =======================================
sub_A6F8: ; loc_A510p
LDX #2
LDA #$FF
loc_A6FC: ; A75Aj
PHA
LDY $5E4,X
BEQ loc_A70B
INY
BNE loc_A750
JSR sub_ACBC
JMP loc_A753
; ---------------------------------------------------------------------------
loc_A70B: ; A700j
CPX $4E7
BNE loc_A722
LDY $4E6
INY
BEQ loc_A71C
JSR sub_AB25
JMP loc_A750
; ---------------------------------------------------------------------------
loc_A71C: ; A714j
JSR sub_AAFF
JMP loc_A750
; ---------------------------------------------------------------------------
loc_A722: ; A70Ej
CPX $4E6
BNE loc_A72D
LDY $4E7
INY
BEQ loc_A750
loc_A72D: ; A725j
JSR sub_AAFF
LDA $36B,X
BEQ loc_A73D
LDA $37E,X
CMP $501,X
BCS loc_A74C
loc_A73D: ; A733j
JSR sub_AD63
JSR sub_A973
JSR sub_CB69
STA $5E4,X
JMP loc_A750
; ---------------------------------------------------------------------------
loc_A74C: ; A73Bj
LDA #3
STA $4F
loc_A750: ; A703j A719j ...
JSR sub_D467
loc_A753: ; A708j
PLA
AND $5E4,X
INX
CPX #$C
BNE loc_A6FC
CMP #$FF
BNE locret_A774
LDA $5FE
BNE locret_A774
LDA $4F
BNE locret_A774
LDA #$FF
STA $4E6
STA $4E7
JSR sub_AE32
locret_A774: ; A75Ej A763j ...
RTS
; End of function sub_A6F8
; =============== S U B R O U T I N E =======================================
player_dpad: ; loc_A582p
LDA $80,X
CMP #$80 ; '€'
BCC loc_A780
PHA
JSR player_buttons
PLA
loc_A780: ; A779j
LDY $3CA,X
BNE loc_A7DE
CMP #$80 ; '€'
AND #3
BCC loc_A7C7
STA $82,X
CMP #0
BEQ loc_A7AE
CMP $3C1,X
BEQ loc_A79A
LDY #0
STY $3E,X
loc_A79A: ; A794j
STA $3C1,X
LDY $3E2,X
DEY
BEQ loc_A7A8
LDA #$3A ; ':'
STA $3F2,X
loc_A7A8: ; A7A1j
LDA #0
STA $4D8,X
RTS
; ---------------------------------------------------------------------------
loc_A7AE: ; A78Fj
LDA $3D2,X
CMP #$20 ; ' '
BEQ loc_A7BB
LDA #0
ROL A
STA $3C1,X
loc_A7BB: ; A7B3j
LDY $3E2,X
DEY
BEQ locret_A7C6
LDA #$48 ; 'H'
STA $3F2,X
locret_A7C6: ; A7BFj
RTS
; ---------------------------------------------------------------------------
loc_A7C7: ; A789j
CMP #0
BEQ loc_A7D7
CMP $3C1,X
BEQ loc_A7D4
LDY #0
STY $3E,X
loc_A7D4: ; A7CEj
STA $3C1,X
loc_A7D7: ; A7C9j
LDA #8
STA $4D8,X
LDA #0
loc_A7DE: ; A783j
AND #3
LDY $3D2,X
CPY #$20 ; ' '
BNE loc_A7F5
LDY #0
STY $82,X
CMP #0
BEQ locret_A803
STA $3C1,X
JMP loc_A801
; ---------------------------------------------------------------------------
loc_A7F5: ; A7E5j
CMP #0
BNE loc_A801
LDA #1
CPY #$20 ; ' '
BCC loc_A801
LDA #2
loc_A801: ; A7F2j A7F7j ...
STA $82,X
locret_A803: ; A7EDj
RTS
; End of function player_dpad
; =============== S U B R O U T I N E =======================================
player_buttons: ; A5F1p A77Cp
LDA $3CA,X
BEQ locret_A83C
LDA $37E,X
SEC
SBC #4
STA $37E,X
; End of function player_buttons
; =============== S U B R O U T I N E =======================================
sub_A812: ; C434p
LDA #0
STA $3CA,X
STA $406,X
STA $3A9,X
STA $3B5,X
STA $4AE,X
LDA #$F
STA $40E,X
CPX #2
BCS locret_A83C
LDA #$F0 ; 'ð'
STA $88,X
STA $8A,X
LDA #1
STA $41E,X
LDA #$3F ; '?'
STA $426,X
locret_A83C: ; A807j A82Aj
RTS
; End of function sub_A812
; ---------------------------------------------------------------------------
byte_A83D:
.BYTE $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE, $FE
.BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
.BYTE 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.BYTE 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
.BYTE 2
byte_A87E:
.BYTE 0, $10, $20, $30, $40, $50, $60, $70, $80, $90, $A0, $B0, $C0, $D0, $E0, $F0
.BYTE 0, $10, $20, $30, $40, $50, $60, $70, $80, $90, $A0, $B0, $C0, $D0, $E0, $F0
.BYTE 0, $10, $20, $30, $40, $50, $60, $70, $80, $90, $A0, $B0, $C0, $D0, $E0, $F0
.BYTE 0, $10, $20, $30, $40, $50, $60, $70, $80, $90, $A0, $B0, $C0, $D0, $E0, $F0
.BYTE 0
; =============== S U B R O U T I N E =======================================
sub_A8BF: ; A58Ap
LDA $406,X
CMP $4D8,X
BCS loc_A8CA
JMP loc_A959
; ---------------------------------------------------------------------------
loc_A8CA: ; A8C5j
LDA #0
STA $406,X
LDA $82,X
JMP loc_A92E
; End of function sub_A8BF
; =============== S U B R O U T I N E =======================================
sub_A8D4: ; A5F4p
LDA $406,X
CMP #2
BCS loc_A8DE
JMP loc_A959
; ---------------------------------------------------------------------------
loc_A8DE: ; A8D9j
LDA #0
STA $406,X
LDA $3C1,X
JMP loc_A92E
; End of function sub_A8D4
; =============== S U B R O U T I N E =======================================
sub_A8E9: ; loc_A593p
LDY $8C,X
INY
BNE loc_A91A
STX 0
TXA
EOR #1
TAX
LDA $350,X
LDY $8C,X
LDX 0
DEY
BNE loc_A904
CLC
ADC #$E
JMP loc_A907
; ---------------------------------------------------------------------------
loc_A904: ; A8FCj
SEC
SBC #$E
loc_A907: ; A901j
STA $350,X
LDA #3
STA $4E0,X
TXA
EOR #1
TAY
LDA $3C1,Y
STA $3C1,X
RTS
; ---------------------------------------------------------------------------
loc_A91A: ; A8ECj
LDA $8C
ORA $8D
CMP #3
BNE loc_A92C
LDA $8C,X
LDY #2
LSR A
BCS loc_A92A
DEY
loc_A92A: ; A927j
STY $82,X
loc_A92C: ; A920j
LDA $82,X
loc_A92E: ; A8D1j A8E6j
LSR A
BCS loc_A948
LSR A
BCC loc_A959
DEC $3D2,X
LDA $3D2,X
CMP $41E,X
BCS loc_A959
LDA $41E,X
STA $3D2,X
JMP loc_A959
; ---------------------------------------------------------------------------
loc_A948: ; A92Fj
INC $3D2,X
LDA $3D2,X
CMP $426,X
BCC loc_A959
LDA $426,X
STA $3D2,X
loc_A959: ; A8C7j A8DBj ...
LDY $3D2,X
LDA $363,X
CLC
ADC byte_A87E,Y
STA $363,X
LDA $350,X
ADC byte_A83D,Y
STA $350,X
INC $406,X
RTS
; End of function sub_A8E9
; =============== S U B R O U T I N E =======================================
sub_A973: ; loc_A6E6p A740p
LDA $350,X
CLC
ADC $5DA,X
STA $350,X
CMP $5D0,X
BCS loc_A992
LDA $5A8,X
BEQ loc_A98D
LDA $59E,X
LSR A
BCC loc_A99D
loc_A98D: ; A985j
LDA #9
JMP loc_A9A5
; ---------------------------------------------------------------------------
loc_A992: ; A980j
LDA $5A8,X
BEQ loc_A9A3
LDA $59E,X
LSR A
BCC loc_A9A3
loc_A99D: ; A98Bj
DEC $5A8,X
JMP loc_A9AB
; ---------------------------------------------------------------------------
loc_A9A3: ; A995j A99Bj
LDA #$A
loc_A9A5: ; A98Fj
STA $59E,X
INC $5A8,X
loc_A9AB: ; A9A0j
LDY #$FF
LDA $5EE,X
BEQ locret_A9DD
LDA $39D,X
CLC
ADC $5A8,X
BCC loc_A9C1
loc_A9BB: ; A9BFj
INY
SBC $5EE,X
BCS loc_A9BB
loc_A9C1: ; A9B9j
SEC
loc_A9C2: ; A9C6j
INY
SBC $5EE,X
BCS loc_A9C2
ADC $5EE,X
STA $39D,X
LDA $59E,X
LSR A
TYA
BCS loc_A9DA
EOR #$FF
CLC
ADC #1
loc_A9DA: ; A9D3j
STA $5DA,X
locret_A9DD: ; A9B0j
; AAC5r
RTS
; End of function sub_A973
; ---------------------------------------------------------------------------
; ---- unused ?
.BYTE 0
.BYTE 0
.BYTE $10
.BYTE $20
.BYTE $30 ; 0
; ----
tbl_A9E3:
.BYTE $FF, $FF ,0 ,0 ,0, $FF, $FF ,0
.BYTE 0, 0, $FF ,$FF, 0, 0, 0 ,0
.BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
.BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
.BYTE $FF, $FF, 0, 0, 0, 0, 0, 0
.BYTE 0, 0, 0, 0, 0, 0, $FF, $FF
.BYTE $FF, $FF, 0, 0, 0, 0, 0, 0
.BYTE 0, 0, $FF, 0, 0, 0, 0, $FF
.BYTE $FF, 0, $FF, 0, $FF, 0, $FF, 0
.BYTE $FF, 0, $FF, 0, $FF, 0, $FF, 0
; =============== S U B R O U T I N E =======================================
sub_AA33: ; A58Dp B753p
LDA $84,X
BNE loc_AA49
INC $4AE,X
LDA $4AE,X
CMP #5
BCC loc_AA49
LDA #0
STA $4AE,X
JMP loc_AA62
; ---------------------------------------------------------------------------
loc_AA49: ; AA35j AA3Fj
LDA $80,X
JMP loc_AA62
; End of function sub_AA33
; =============== S U B R O U T I N E =======================================
sub_AA4E: ; A5F7p
INC $4AE,X
LDA $4AE,X
CMP #5
BCC loc_AA60
LDA #0
STA $4AE,X
JMP loc_AA62
; ---------------------------------------------------------------------------
loc_AA60: ; AA56j
LDA #$80
loc_AA62: ; AA46j AA4Bj ...
PHA
LDA $391,X
CLC
ADC $3B5,X
STA $391,X
LDA $37E,X
ADC $3A9,X
STA $37E,X
LDA $36B,X
LDY $3A9,X
BPL loc_AA83
SBC #0
JMP loc_AA85
; ---------------------------------------------------------------------------
loc_AA83: ; AA7Cj
ADC #0
loc_AA85: ; AA80j
CMP #1
LDA #0
ROL A
STA $36B,X
LDA $3B5,X
CLC
ADC $3FA,X
STA $3B5,X
LDA $3A9,X
ADC #0
STA $3A9,X
CMP #3
BCC loc_AAB1
CMP #$F0 ; 'ð'
BCS loc_AAB1
LDA #3
STA $3A9,X
LDA #0
STA $3B5,X
loc_AAB1: ; AAA1j AAA5j
PLA
ASL A
BCC loc_AAF9
DEC $40E,X
LDA $40E,X
BPL loc_AAC2
LDA #$F
STA $40E,X
loc_AAC2: ; AABBj
LDY $42E,X
LDA locret_A9DD,Y ; Reading code instead of data
CLC
ADC $40E,X
TAY
LDA tbl_A9E3,Y
BEQ locret_AAF8
LDA $3B5,X
SEC
SBC $3F2,X
STA $3B5,X
LDA $3A9,X
SBC #0
STA $3A9,X
CMP $416,X
BCS locret_AAF8
CMP #$20 ; ' '
BCC locret_AAF8
LDA $416,X
STA $3A9,X
LDA #0
STA $3B5,X
locret_AAF8: ; AAD0j AAE7j ...
RTS
; ---------------------------------------------------------------------------
loc_AAF9: ; AAB3j
LDA #$F
STA $40E,X
RTS
; End of function sub_AA4E
; =============== S U B R O U T I N E =======================================
sub_AAFF: ; A6E9p loc_A71Cp ...
LDA $391,X
SEC
SBC $3B5,X
STA $391,X
LDA $37E,X
SBC $3A9,X
STA $37E,X
LDA $36B,X
SBC #0
STA $36B,X
DEC $5BC,X
BPL locret_AB24
LDA #4
STA $5BC,X
locret_AB24: ; AB1Dj
RTS
; End of function sub_AAFF
; =============== S U B R O U T I N E =======================================
sub_AB25: ; A716p ACC1p
LDY $4E6
LDA $350,Y
STA $350,X
LDA $4F
BEQ loc_AB3B
LDA $350,Y
CLC
ADC #4
STA $350,X
loc_AB3B: ; AB30j
LDA $37E,Y
CLC
ADC #$F
STA $37E,X
LDA $36B,Y
ADC #0
STA $36B,X
RTS
; End of function sub_AB25
; =============== S U B R O U T I N E =======================================
sub_AB4D: ; A5D9p
LDY #0
LDA $1C,X
CMP #$A0 ; ' '
BCS locret_AB57
LDY $1D,X
locret_AB57: ; AB53j
RTS
; End of function sub_AB4D
; =============== S U B R O U T I N E =======================================
sub_AB58: ; loc_A5DFp
LDA $460,X
BNE loc_AB7F
LDA $1C,X
CMP #$D0 ; 'Ð'
BNE loc_AB70
LDA #2
LDY $1D,X
CPY #$80 ; '€'
BCC loc_AB70
LDA #1
STA $3C1,X
loc_AB70: ; AB61j AB69j
LDA $1F,X
CMP #$FE ; 'þ'
BCS loc_AB79
LDY $1E,X
RTS
; ---------------------------------------------------------------------------
loc_AB79: ; AB74j
LDA $45A,X
STA $460,X
loc_AB7F: ; AB5Bj
DEC $460,X
TXA
AND #1
TAY
LDA $3DA,Y
BEQ loc_AB8F
TYA
EOR #1
TAY
loc_AB8F: ; AB89j
LDA $350,X
CLC
ADC #8
STA 0
LDA $350,Y
STA 4
CLC
ADC #8
STA 1
LDA $37E,Y
SEC
SBC $37E,X
STA 3
LDA $36B,Y
LDY #$7F ; ''
SBC $36B,X
BEQ loc_ABD9
CMP #1
BEQ loc_ABF7
LDA 3
CMP #$A8 ; '¨'
BCC locret_ABF9
CMP #$F0 ; 'ð'
BCS locret_ABF9
JSR sub_AC0A
BCS locret_ABF9
LDA $454,X
CMP #1
BNE loc_ABD6
JSR sub_ABFA
EOR #3
STA $3C1,X
loc_ABD6: ; ABCCj
LDY #$6F ; 'o'
RTS
; ---------------------------------------------------------------------------
loc_ABD9: ; ABB2j
LDA 3
CMP #$10
BCC locret_ABF9
CMP #$60 ; '`'
BCS loc_ABF7
INY
JSR sub_AC0A
BCC loc_ABF7
LDA $454,X
CMP #1
BNE locret_ABF9
JSR sub_ABFA
STA $3C1,X
RTS
; ---------------------------------------------------------------------------
loc_ABF7: ; ABB6j ABE1j ...
LDY #$6F ; 'o'
locret_ABF9: ; ABBCj ABC0j ...
RTS
; End of function sub_AB58
; =============== S U B R O U T I N E =======================================
sub_ABFA: ; ABCEp ABF0p
LDA 4
SEC
SBC $350,X
BPL loc_AC05
LDA #2
RTS
; ---------------------------------------------------------------------------
loc_AC05: ; AC00j
LDA #1
RTS
; End of function sub_ABFA
; ---------------------------------------------------------------------------
byte_AC08: .BYTE $30 ; AC1Cr loc_AC38r
byte_AC09: .BYTE $D1 ; AC23r
; =============== S U B R O U T I N E =======================================
sub_AC0A: ; ABC2p ABE4p
TYA
PHA
LDA 1
CMP 0
BCS loc_AC1A
PHA
LDA 0
STA 1
PLA
STA 0
loc_AC1A: ; AC10j
LDA 1
CMP byte_AC08
BCC loc_AC2D
LDA 0
CMP byte_AC09
BCC loc_AC2D
SBC 1
JMP loc_AC38
; ---------------------------------------------------------------------------
loc_AC2D: ; AC1Fj AC26j
SEC
LDA 0
SBC 1
BCS loc_AC38
EOR #$FF
ADC #1
loc_AC38: ; AC2Aj AC32j
CMP byte_AC08
PLA
TAY
RTS
; End of function sub_AC0A
; =============== S U B R O U T I N E =======================================
sub_AC3E: ; loc_A5E2p
CPY #0
BEQ locret_AC55
LDA #5
STA $42E,X
CPY #$70 ; 'p'
BCC locret_AC55
DEC $42E,X
CPY #$80 ; '€'
BCS locret_AC55
DEC $42E,X
locret_AC55: ; AC40j AC49j ...
RTS
; End of function sub_AC3E
; =============== S U B R O U T I N E =======================================
sub_AC56: ; loc_B70Cp
LDA $F3
ORA #1
STA $F3
JSR loc_AD49
STA $446,X
STA $44E,X
STA $3A9,X
LDA #$A0 ; ' '
STA $37E,X
LDA #$60 ; '`'
STA $3B5,X
LDA #$C0 ; 'À'
STA $5EE,X
LDA #$40 ; '@'
STA $4EC
LDA #1
STA $59E,X
LDA $350,X
CMP #$60 ; '`'
BCC loc_ACB0
CMP #$A0 ; ' '
BCS loc_ACB0
LDY $1C,X
CMP #$80 ; '€'
BCC loc_AC9D
LDA #$28 ; '('
CPY #$90 ; ''
BCS loc_ACA8
LDA #$D0 ; 'Ð'
JMP loc_ACA5
; ---------------------------------------------------------------------------
loc_AC9D: ; AC90j
LDA #$30 ; '0'
CPY #$60 ; '`'
BCC loc_ACA8
LDA #$D8 ; 'Ø'
loc_ACA5: ; AC9Aj
INC $59E,X
loc_ACA8: ; AC96j ACA1j
CLC
ADC $350,X
STA $5D0,X
RTS
; ---------------------------------------------------------------------------
loc_ACB0: ; AC86j AC8Aj
JSR sub_AD63
RTS
; End of function sub_AC56
; ---------------------------------------------------------------------------
tbl_ACB4:
.BYTE $1C, $24, $2C, $34 ; AD3Er
tbl_ACB8:
.BYTE $3C, $44, $4C, $54 ; loc_AD44r
; =============== S U B R O U T I N E =======================================
sub_ACBC: ; A705p
CPX $4E7
BNE loc_ACD4
JSR sub_AB25
LDA #0
STA $5E4,X
LDA $501,Y
STA $501,X
LDA #3
STA $4F
locret_ACD3: ; ACD6j ACDBj
RTS
; ---------------------------------------------------------------------------
loc_ACD4: ; ACBFj
LDA $40
BNE locret_ACD3
LDA $5FE
BEQ locret_ACD3
CMP #1
BNE loc_ACF6
STX $F
LDY #2
loc_ACE5: ; ACF3j
LDA $5E4,Y
CMP #$FF
BNE loc_ACF0
CPY $F
BNE loc_ACF6
loc_ACF0: ; ACEAj
INY
CPY #$C
BNE loc_ACE5
RTS
; ---------------------------------------------------------------------------
loc_ACF6: ; ACDFj ACEEj
DEC $5FE
BNE loc_AD01
STX $4E6
STY $4E7
loc_AD01: ; ACF9j
LDA $1C,X
AND #3
TAY
LDA $4E9
ASL A
BCC loc_AD13
LDA $1D,X
CMP #$30 ; '0'
BCS loc_AD13
INY
loc_AD13: ; AD0Aj AD10j
LDA $4FE,Y
PHA
CPX $4E6
BNE loc_AD25
LDA #$90 ; ''
STA $37E,X
PLA
JMP loc_AD29
; ---------------------------------------------------------------------------
loc_AD25: ; AD1Aj
PLA
STA $37E,X
loc_AD29: ; AD22j
SEC
SBC #$10
STA $501,X
LDA $4F9,Y
STA $350,X
LDA $1D
AND #3
TAY
LDA $65
BEQ loc_AD44
LDA tbl_ACB4,Y
JMP loc_AD47
; ---------------------------------------------------------------------------
loc_AD44: ; AD3Cj
LDA tbl_ACB8,Y
loc_AD47: ; AD41j
STA $40
loc_AD49: ; AC5Cp
LDA #1
STA $36B,X
LDA #0
STA $5E4,X
STA $5DA,X
STA $39D,X
STA $5A8,X
STA $5BC,X
STA $391,X
RTS
; End of function sub_ACBC
; =============== S U B R O U T I N E =======================================
sub_AD63: ; loc_A6E3p loc_A73Dp ...
LDA $5A8,X
BNE locret_ADB1
LDA $4EC
STA $E
EOR #$FF
CLC
ADC #1
STA $F
LDA $1C,X
AND #$1C
STA 0
LDA $1D,X
LSR A
BCS loc_AD98
LDA #9
STA $59E,X
LDA 0
ADC $350,X
BCS loc_AD8F
CMP $F
BCC loc_ADAE
loc_AD8F: ; AD89j
LDA $350,X
SBC $4EC
JMP loc_ADAE
; ---------------------------------------------------------------------------
loc_AD98: ; AD7Dj
LDA #$A
STA $59E,X
LDA $350,X
SBC 0
BCC loc_ADA8
CMP $E
BCS loc_ADAE
loc_ADA8: ; ADA2j
LDA $350,X
ADC $4EC
loc_ADAE: ; AD8Dj AD95j ...
STA $5D0,X
locret_ADB1: ; AD66j
RTS
; End of function sub_AD63
; ---------------------------------------------------------------------------
tbl_ADB2: .BYTE $68 ; h ; ADCBr
.BYTE $70 ; p
.BYTE $70
; =============== S U B R O U T I N E =======================================
sub_ADB5: ; A5E5p
LDY $454,X
LDA $36B,X
BEQ locret_ADF4
LDA $350,X
CMP #$38 ; '8'
BCC locret_ADF4
CMP #$C8 ; 'È'
BCS locret_ADF4
LDA $37E,X
CMP tbl_ADB2,Y
BCC locret_ADF4
CMP #$88 ; 'ˆ'
BCS loc_ADD8
LDA $1C,X
CMP #$F0 ; 'ð'
loc_ADD8: ; ADD2j
LDA #5
BCS loc_ADF1
LDA $3A9,X
BMI locret_ADF4
BEQ loc_ADEA
LDA $3B5,X
LSR A
STA $3B5,X
loc_ADEA: ; ADE1j
LDA #0
STA $4AE,X
LDA #3
loc_ADF1: ; ADDAj
STA $42E,X
locret_ADF4: ; ADBBj ADC2j ...
RTS
; End of function sub_ADB5
; =============== S U B R O U T I N E =======================================
sub_AE00: ; A4F3p
LDY #0
loc_AE02: ; AE1Ej
LDA $3DC,Y
CMP #$FF
BEQ loc_AE1B
AND #$F0 ; 'ð'
CMP #$30 ; '0'
BEQ loc_AE1B
CMP #$60 ; '`'
BEQ loc_AE1B
CMP #$B0 ; '°'
BEQ loc_AE1B
CMP #$C0 ; 'À'
BNE locret_AE48
loc_AE1B: ; AE07j AE0Dj ...
INY
CPY $76
BNE loc_AE02
JSR sub_BD4D
JSR sub_A658
INC $6F
LDA $6F
CMP #$18
BCC sub_AE32
LDA #9
STA $6F
; End of function sub_AE00
; =============== S U B R O U T I N E =======================================
sub_AE32: ; A771p AE2Cj
LDA #0
STA $68
STA $4B7
LDX #0
LDA $69
CMP #$B
BNE loc_AE46
JSR sub_AE89
LDX #$C
loc_AE46: ; AE3Fj
STX $74
locret_AE48: ; AE19j
RTS
; End of function sub_AE32
; =============== S U B R O U T I N E =======================================
sub_AE49: ; A50Ap
LDX #0
loc_AE4B: ; AE73j
LDA $62,X
BEQ loc_AE70
LDA $3DA,X
CMP #$FF
BEQ loc_AE6C
AND #$F0 ; 'ð'
CMP #$10
BEQ loc_AE6C
CMP #$30 ; '0'
BEQ loc_AE6C
CMP #$80 ; '€'
BEQ loc_AE6C
CMP #$B0 ; '°'
BEQ loc_AE6C
CMP #$E0 ; 'à'
BNE loc_AE70
loc_AE6C: ; AE54j AE5Aj ...
LDA LIVES,X
BEQ loc_AE76
loc_AE70: ; AE4Dj AE6Aj
INX
CPX #2
BCC loc_AE4B
RTS
; ---------------------------------------------------------------------------
loc_AE76: ; AE6Ej
STX $61
LDA #$E
STA $74
LDA #0
STA $68
STA $4B7
JSR sub_BD4D
JSR sub_A658
; End of function sub_AE49
; =============== S U B R O U T I N E =======================================
sub_AE89: ; AE41p
LDX #5
loc_AE8B: ; AE94j
LDA $5E6,X
BNE loc_AE93
INC $5E6,X
loc_AE93: ; AE8Ej
DEX
BPL loc_AE8B
RTS
; End of function sub_AE89
; =============== S U B R O U T I N E =======================================
sub_AE97: ; 9C76p A0E6p ...
; FUNCTION CHUNK AT AEE5 SIZE 00000001 BYTES
LDA $3DA,X
BNE loc_AEB6
LDA $3E2,X
BNE loc_AEAD
LDA #$11
CPX #2
BMI loc_AEA9
LDA #$21 ; '!'
loc_AEA9: ; AEA5j AEB4j
STA $3DA,X
locret_AEAC: ; AEB0j
RTS
; ---------------------------------------------------------------------------
loc_AEAD: ; AE9Fj
LDA $3EA,X
BEQ locret_AEAC
LDA #$41 ; 'A'
BNE loc_AEA9
loc_AEB6: ; AE9Aj
CMP #$FF
BNE loc_AEBE
JSR sub_AEE6
RTS
; ---------------------------------------------------------------------------
loc_AEBE: ; AEB8j
AND #$F0 ; 'ð'
CMP #$E0 ; 'à'
BCS locret_AEE5
LSR A
LSR A
LSR A
LSR A
JSR execute_procedure
; End of function sub_AE97
; ---------------------------------------------------------------------------
.WORD proc_AF2B
.WORD proc_B06E
.WORD proc_B1D3
.WORD proc_B143
.WORD proc_B183
.WORD proc_B327
.WORD proc_B3F6
.WORD proc_B4D5
.WORD proc_B5B6
.WORD proc_B602
.WORD proc_B717
.WORD proc_B630
.WORD proc_B6EC
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_AE97
locret_AEE5: ; AEC2j
RTS
; END OF FUNCTION CHUNK FOR sub_AE97
; =============== S U B R O U T I N E =======================================
sub_AEE6: ; AEBAp
CPX #2
BCS locret_AF10 ; There are only two players in this game,
; so if X is greater or equal to two, let's get out of here.
LDA #2
STA $3E2,X
STA $42E,X
DEC LIVES,X
JSR sub_D056
LDA #1
STA $3DA,X
JSR sub_AFA1
BCC locret_AF10
LDA 2
STA $350,X
CPX $15
BNE locret_AF10
LDA $F2
ORA #$80 ; '€'
STA $F2
locret_AF10: ; AEE8j AEFFj ...
RTS
; End of function sub_AEE6
; ---------------------------------------------------------------------------
tbl_AF11:
.BYTE $00, $34, $35, $03, $36, $37 ; loc_AF76t AF7At
tbl_AF17:
.BYTE $CE, $CF, $D0, $D1, $D2, $D3
tbl_AF1D:
.BYTE $0F, $40, $35, $11, $41, $37
tbl_AF23:
.BYTE $D4, $D5, $D0, $D6, $D7, $D3
tbl_AF29:
.BYTE 0 ; AF81r
.BYTE 6
; ---------------------------------------------------------------------------
proc_AF2B: ; AECBo
LDA $3DA,X
AND #$F
CMP #1
BNE loc_AF4B
JSR sub_A1C0
LDA #$20 ; ' '
STA $518,X
STA $520,X
LDA #1
STA $43E,X
STA $436,X
INC $3DA,X
RTS
; ---------------------------------------------------------------------------
loc_AF4B: ; AF32j
LDA $80,X
BNE loc_AF92
DEC $518,X
BNE loc_AF5E
LDA #$20 ; ' '
STA $518,X
DEC $520,X
BEQ loc_AF92
loc_AF5E: ; AF52j
DEC $43E,X
BNE loc_AF76
LDA $436,X
EOR #1
STA $436,X
BNE loc_AF71
LDA #7
BNE loc_AF73
loc_AF71: ; AF6Bj
LDA #3
loc_AF73: ; AF6Fj
STA $43E,X
loc_AF76: ; AF61j
LDA #<tbl_AF11
STA $E
LDA #>tbl_AF11
STA $F
LDY $436,X
LDA tbl_AF29,Y
LDY $3E2,X
CPY #2
BEQ loc_AF8E
CLC
ADC #$C
loc_AF8E: ; AF89j
JSR sub_B770
RTS
; ---------------------------------------------------------------------------
loc_AF92: ; AF4Dj AF5Cj
TXA
STA $4A2,X
LDA #0
STA $3DA,X
JSR sub_CF1B
RTS
; ---------------------------------------------------------------------------
tbl_AF9F: .BYTE $20 ; sub_AFA1r AFE4r
.BYTE $D0 ; Ð
; =============== S U B R O U T I N E =======================================
sub_AFA1: ; AEFCp
LDA tbl_AF9F,X
STA 2
LDA #2
STA 4
STX 3
loc_AFAC: ; AFEBj
LDY #7
loc_AFAE: ; AFF1j
CPY 3
BEQ loc_AFF0
LDA $3DA,Y
CMP #$FF
BEQ loc_AFF0
LDA $3CA,Y
BEQ loc_AFF0
LDA $36B,Y
BEQ loc_AFF0
LDA $37E,Y
CMP #$80 ; '€'
BNE loc_AFF0
LDA $350,Y
SEC
SBC 2
BPL loc_AFD7
EOR #$FF
CLC
ADC #1
loc_AFD7: ; AFD0j
CMP #$10
BCS loc_AFF0
DEC 4
BEQ loc_AFEE
TXA
PHA
EOR #1
TAX
LDA tbl_AF9F,X
STA 2
PLA
TAX
JMP loc_AFAC
; ---------------------------------------------------------------------------
loc_AFEE: ; AFDDj
CLC
RTS
; ---------------------------------------------------------------------------
loc_AFF0: ; AFB0j AFB7j ...
DEY
BPL loc_AFAE
SEC
RTS
; End of function sub_AFA1
; ---------------------------------------------------------------------------
tbl_AFF5: .BYTE $A ; B037r
.BYTE $10
tbl_AFF7: .BYTE 0 ; B025r
.BYTE 5
tbl_AFF9: .BYTE $23 ; # ; loc_B047r
.BYTE $86 ; †
.BYTE $42 ; B
.BYTE $24 ; $
.BYTE 0
.BYTE $23 ; #
.BYTE $98 ; ˜
.BYTE $42 ; B
.BYTE $24 ; $
.BYTE 0
.BYTE $23 ; #
.BYTE $86 ; †
.BYTE 2
.BYTE $8F ; 
.BYTE $90 ; 
.BYTE 0
.BYTE $23 ; #
.BYTE $98 ; ˜
.BYTE 2
.BYTE $92 ; ’
.BYTE $90 ; 
.BYTE 0
.BYTE $23 ; #
.BYTE $98 ; ˜
.BYTE 2
.BYTE $8F ; 
.BYTE $90 ; 
.BYTE 0
; =============== S U B R O U T I N E =======================================
sub_B015: ; 9C24p sub_A25Dp ...
LDA $6C
BNE locret_B057
LDX $15
DEC $4E2,X
BNE locret_B057
LDA #$10
STA $4E2,X
LDY tbl_AFF7,X
LDA $4E4,X
EOR #1
STA $4E4,X
BNE loc_B044
loc_B032: ; 9895p 98A0p
LDA #$20 ; ' '
STA $4E2,X
LDY tbl_AFF5,X
LDA $65
BNE loc_B044
LDA $15
BEQ loc_B044
LDY #$16
loc_B044: ; B030j B03Cj ...
LDX $300
loc_B047: ; B051j
LDA tbl_AFF9,Y
STA $301,X
INX
INY
CMP #0
BNE loc_B047
DEX
STX $300
locret_B057: ; B017j B01Ej
RTS
; End of function sub_B015
; ---------------------------------------------------------------------------
tbl_B058: .BYTE $FC, $48, $42, $FC, $49, $43, $FC, $48, $44, $FC, $49, $45, $FC, $4A, $46, $FC
.BYTE $4B, $47
tbl_B06A: .BYTE 0 ; B13Cr
.BYTE 6
.BYTE $C
.BYTE 6
; ---------------------------------------------------------------------------
proc_B06E: ; AECDo
LDA $3DA,X
AND #$F
CMP #1
BNE loc_B08B
LDA #1
STA $7D,X
STA $9B
INC $3DA,X
CPX $15
BNE locret_B08A
LDA $F0
ORA #$20 ; ' '
STA $F0
locret_B08A: ; B082j
RTS
; ---------------------------------------------------------------------------
loc_B08B: ; B075j
CMP #2
BNE loc_B0A2
LDA #8
STA $540,X
LDA #0
STA $436,X
LDA #$11
loc_B09B: ; B0E7j B337j ...
STA $43E,X
INC $3DA,X
RTS
; ---------------------------------------------------------------------------
loc_B0A2: ; B08Dj
CMP #3
BNE loc_B0DC
LDA $37E,X
SEC
SBC #1
STA $37E,X
LDA $36B,X
SBC #0
STA $36B,X
CMP #2
BCC loc_B0C3
LDA #0
STA $36B,X
STA $37E,X
loc_B0C3: ; B0B9j
DEC $43E,X
BNE loc_B0D5
LDA #3
STA $436,X
LDA #$A
STA $43E,X
INC $3DA,X
loc_B0D5: ; B0C6j
JSR sub_B12E
JSR sub_D266
locret_B0DB: ; B0E3j
RTS
; ---------------------------------------------------------------------------
loc_B0DC: ; B0A4j
CMP #4
BNE loc_B0E9
DEC $43E,X
BNE locret_B0DB
LDA #2
BNE loc_B09B
loc_B0E9: ; B0DEj
LDA #0
STA $7D,X
LDA $37E,X
CLC
ADC #3
STA $37E,X
LDA $36B,X
ADC #0
STA $36B,X
JSR sub_B117
LDA $6C
BNE loc_B109
JSR loc_C39F
RTS
; ---------------------------------------------------------------------------
loc_B109: ; B103j
JSR sub_C3CE
LDA $3CA,X
BEQ locret_B116
LDA #$A1 ; '¡'
STA $3DA,X
locret_B116: ; B10Fj
RTS
; =============== S U B R O U T I N E =======================================
sub_B117: ; B0FEp B756p
DEC $43E,X
BNE sub_B12E
LDA #2
STA $43E,X
DEC $436,X
LDA $436,X
BPL sub_B12E
LDA #3
STA $436,X
; End of function sub_B117
; =============== S U B R O U T I N E =======================================
sub_B12E: ; loc_B0D5p B11Aj ...
JSR sub_CE4A
LDY $436,X
LDA #<tbl_B058
STA $E
LDA #>tbl_B058
STA $F
LDA tbl_B06A,Y
JSR sub_B770
RTS
; End of function sub_B12E
; ---------------------------------------------------------------------------
proc_B143: ; AED1o
LDA $4A2,X
ORA #$20 ; ' '
STA $4A2,X
LDA $3DA,X
AND #$F
CMP #1
BNE locret_B182
INC $37E,X
JSR loc_B775
LDA $37E,X
CMP #$B8 ; '¸'
BCC locret_B182
LDA #$B1 ; '±'
STA $3DA,X
LDA #0
STA $3E2,X
STA $3EA,X
STA $3CA,X
JSR sub_D604
CPX #2
BCS locret_B182
CPX $15
BNE locret_B182
LDA $F0
ORA #$40 ; '@'
STA $F0
locret_B182: ; B152j B15Fj ...
RTS
; ---------------------------------------------------------------------------
proc_B183: ; AED3o
LDA $3DA,X
AND #$F
CMP #1
BNE loc_B195
LDA #9
STA $540,X
INC $3DA,X
RTS
; ---------------------------------------------------------------------------
loc_B195: ; B18Aj
DEC $540,X
BEQ loc_B1A5
LDA #0
STA $80,X
JSR loc_A575
JSR sub_D266
RTS
; ---------------------------------------------------------------------------
loc_B1A5: ; B198j
LDA #0
STA $3EA,X
STA $3DA,X
RTS
; ---------------------------------------------------------------------------
tbl_B1AE: .BYTE $FC, $5F, $60, $FC, $61, $62, $FC, $5F, $60, $FC, $61, $62, $63, $64, $60, $FC
; sub_B25Ct B260t
.BYTE $65, $62, $66, $67, $60, $68, $69, $62, $6A, $67, $60, $6B, $69, $62
tbl_B1CC: .BYTE $12 ; B264r
.BYTE $C
.BYTE 6
.BYTE 0
tbl_B1D0: .BYTE $18 ; B27Cr
.BYTE $FC ; ü
.BYTE 4
; ---------------------------------------------------------------------------
proc_B1D3: ; AECFo
LDA $F1
ORA #$20 ; ' '
STA $F1
LDA $3DA,X
AND #$F
CMP #1
BNE loc_B1F8
LDA #0
STA $56E,X
STA $436,X
LDA #9
STA $540,X
LDA #0
STA $510,X
INC $3DA,X
RTS
; ---------------------------------------------------------------------------
loc_B1F8: ; B1E0j
CMP #2
BNE loc_B20D
DEC $540,X
BNE loc_B209
LDA #8
STA $43E,X
INC $3DA,X
loc_B209: ; B1FFj
JSR sub_D266
RTS
; ---------------------------------------------------------------------------
loc_B20D: ; B1FAj
CMP #3
BNE loc_B23B
LDA $37E,X
CLC
ADC #1
STA $37E,X
LDA $36B,X
ADC #0
STA $36B,X
JSR sub_B47C
JSR sub_B296
DEC $43E,X
BNE locret_B23A
LDA #5
STA $43E,X
LDA #3
STA $436,X
INC $3DA,X
locret_B23A: ; B22Bj
RTS
; ---------------------------------------------------------------------------
loc_B23B: ; B20Fj
CMP #4
BNE loc_B289
DEC $43E,X
BNE sub_B259
LDA #5
STA $43E,X
DEC $436,X
LDA $436,X
BPL sub_B259
LDA #0
STA $436,X
INC $3DA,X
; =============== S U B R O U T I N E =======================================
sub_B259: ; B242j B24Fj ...
LDY $436,X
; End of function sub_B259
; =============== S U B R O U T I N E =======================================
sub_B25C: ; B30Dp
LDA #<tbl_B1AE
STA $E
LDA #>tbl_B1AE
STA $F
LDA tbl_B1CC,Y
JSR sub_B770
LDA $436,X
CMP #1
BNE locret_B288
JSR sub_D5AE
TXA
PHA
LDA $3C1,X
AND #3
TAX
LDA tbl_B1D0,X
CLC
ADC $203,Y
STA $203,Y
PLA
TAX
locret_B288: ; B26Fj
RTS
; End of function sub_B25C
; ---------------------------------------------------------------------------
loc_B289: ; B23Dj
CMP #5
BEQ loc_B290
JMP loc_B306
; ---------------------------------------------------------------------------
loc_B290: ; B28Bj
JSR sub_B806
JSR loc_B775
; =============== S U B R O U T I N E =======================================
sub_B296: ; B225p
JSR sub_CC1B
LDA $E
BEQ loc_B2A8
LDA #$10
STA $43E,X
LDA #$26 ; '&'
STA $3DA,X
RTS
; ---------------------------------------------------------------------------
loc_B2A8: ; B29Bj
JSR sub_C6B3
LDA $36B,X
BNE loc_B2B6
JSR sub_C67A
JMP loc_B2B9
; ---------------------------------------------------------------------------
loc_B2B6: ; B2AEj
JSR sub_C69D
loc_B2B9: ; B2B3j
JSR sub_C3EE
LDA $3CA,X
BNE loc_B2FA
LDA #0
STA $E
JSR sub_C51C
JSR sub_C5AA
LDA $E
BEQ loc_B2EF
LDY $548,X
CMP #1
BNE loc_B2E2
CPY #$13
BCC loc_B2DE
CPY #$43 ; 'C'
BCC loc_B2EF
loc_B2DE: ; B2D8j
LDA #$14
BNE loc_B2EC
loc_B2E2: ; B2D4j
CPY #$13
BCC loc_B2EA
CPY #$43 ; 'C'
BCS loc_B2EF
loc_B2EA: ; B2E4j
LDA #$44 ; 'D'
loc_B2EC: ; B2E0j
STA $548,X
loc_B2EF: ; B2CDj B2DCj ...
JSR loc_C39F
LDA $3DA,X
CMP #$31 ; '1'
BEQ loc_B2FF
RTS
; ---------------------------------------------------------------------------
loc_B2FA: ; B2BFj
LDA #$51 ; 'Q'
STA $3DA,X
loc_B2FF: ; B2F7j
LDA $F1
ORA #$40 ; '@'
STA $F1
RTS
; End of function sub_B296
; ---------------------------------------------------------------------------
loc_B306: ; B28Dj
DEC $43E,X
BEQ loc_B311
LDY #4
JSR sub_B25C
RTS
; ---------------------------------------------------------------------------
loc_B311: ; B309j B36Bj
LDA #$61 ; 'a'
STA $3DA,X
RTS
; ---------------------------------------------------------------------------
tbl_B317: .BYTE $FC ; ü
.BYTE $71 ; q
.BYTE $FC ; ü
.BYTE $FC ; ü
.BYTE $72 ; r
.BYTE $73 ; s
.BYTE $FC ; ü
.BYTE $72 ; r
.BYTE $FC ; ü
.BYTE $FC ; ü
.BYTE $71 ; q
.BYTE $73 ; s
tbl_B323: .BYTE 0 ; B398r
tbl_B324: .BYTE 6 ; B3A9r
.BYTE $F9 ; ù
.BYTE 7
; ---------------------------------------------------------------------------
proc_B327: ; AED5o
LDA $3DA,X
AND #$F
CMP #1
BNE loc_B33A
LDA #0
STA $436,X
LDA #5
JMP loc_B09B
; ---------------------------------------------------------------------------
loc_B33A: ; B32Ej
CMP #2
BNE loc_B36E
DEC $43E,X
BNE loc_B363
LDA #5
STA $43E,X
INC $436,X
LDA $436,X
CMP #4
BNE loc_B363
LDA $4F5
STA $540,X
LDA #1
STA $436,X
LDA $4F6
JMP loc_B09B
; ---------------------------------------------------------------------------
loc_B363: ; B341j B350j
JSR sub_B259
loc_B366: ; loc_B3DAj
JSR sub_CC1B
LDA $E
BNE loc_B311
RTS
; ---------------------------------------------------------------------------
loc_B36E: ; B33Cj
CMP #3
BNE loc_B3DD
DEC $540,X
BNE loc_B37A
INC $3DA,X
loc_B37A: ; B375j
DEC $43E,X
BNE loc_B38D
LDA $4F6
STA $43E,X
LDA $436,X
EOR #1
STA $436,X
loc_B38D: ; B37Dj
LDA #<tbl_B317
STA $E
LDA #>tbl_B317
STA $F
LDY $436,X
LDA tbl_B323,Y
JSR sub_B770
LDA $436,X
BEQ loc_B3DA
LDA $3C1,X
AND #3
TAY
LDA tbl_B324,Y
STA 0
JSR sub_D5AE
TXA
PHA
LDX #1
loc_B3B5: ; B3D6j
LDA $206,Y
PHA
AND #$BF ; '¿'
STA 1
PLA
EOR #$40 ; '@'
AND #$40 ; '@'
ORA 1
STA $206,Y
LDA $207,Y
CLC
ADC 0
STA $207,Y
TYA
CLC
ADC #$C
TAY
DEX
BPL loc_B3B5
PLA
TAX
loc_B3DA: ; B3A1j
JMP loc_B366
; ---------------------------------------------------------------------------
loc_B3DD: ; B370j
LDA #$71 ; 'q'
STA $3DA,X
LDA #$20 ; ' '
STA $3D2,X
RTS
; ---------------------------------------------------------------------------
tbl_B3E8: .BYTE $FC ; sub_B47Ct B480t
.BYTE $6C ; l
.BYTE $6D ; m
.BYTE $FC ; ü
.BYTE $6E ; n
.BYTE $6F ; o
.BYTE $FC ; ü
.BYTE $6C ; l
.BYTE $6D ; m
.BYTE $FC ; ü
.BYTE $6E ; n
.BYTE $70 ; p
tbl_B3F4: .BYTE 0 ; B487r
.BYTE 6
; ---------------------------------------------------------------------------
proc_B3F6: ; AED7o
LDA $3DA,X
AND #$F
CMP #1
BNE loc_B428
LDA #8
STA $43E,X
LDA #1
STA $436,X
LDA $574,X
CMP $15
BNE loc_B419
LDA $F1
ORA #$80 ; '€'
STA $F1
JMP loc_B41F
; ---------------------------------------------------------------------------
loc_B419: ; B40Ej
LDA $F1
ORA #$40 ; '@'
STA $F1
loc_B41F: ; B416j
LDA #$FF
STA $574,X
INC $3DA,X
RTS
; ---------------------------------------------------------------------------
loc_B428: ; B3FDj
CMP #2
BNE loc_B456
LDA $37E,X
SEC
SBC #2
STA $37E,X
LDA $36B,X
SBC #0
STA $36B,X
CMP #2
BCC loc_B449
LDA #0
STA $36B,X
STA $37E,X
loc_B449: ; B43Fj
DEC $43E,X
BNE sub_B47C
JSR sub_B47C
LDA #$A
JMP loc_B09B
; ---------------------------------------------------------------------------
loc_B456: ; B42Aj
CMP #3
BNE loc_B463
DEC $43E,X
BNE locret_B462
INC $3DA,X
locret_B462: ; B45Dj
RTS
; ---------------------------------------------------------------------------
loc_B463: ; B458j
LDA $37E,X
CLC
ADC #3
STA $37E,X
LDA $36B,X
ADC #0
STA $36B,X
LDA $436,X
EOR #1
STA $436,X
; =============== S U B R O U T I N E =======================================
sub_B47C: ; B222p B44Cj ...
LDA #<tbl_B3E8
STA $E
LDA #>tbl_B3E8
STA $F
LDY $436,X
LDA tbl_B3F4,Y
JSR sub_B770
JSR loc_C39F
RTS
; End of function sub_B47C
; ---------------------------------------------------------------------------
tbl_B491: .BYTE $FC ; ü ; B55Ct B55Et
.BYTE $71 ; q
.BYTE $FC ; ü
.BYTE $FC ; ü
.BYTE $72 ; r
.BYTE $73 ; s
.BYTE $FC ; ü
.BYTE $71 ; q
.BYTE $FC ; ü
.BYTE $FC ; ü
.BYTE $72 ; r
.BYTE $73 ; s
.BYTE $FC ; ü
.BYTE $71 ; q
.BYTE $77 ; w
.BYTE $FC ; ü
.BYTE $72 ; r
.BYTE $73 ; s
.BYTE $FC ; ü
.BYTE $71 ; q
.BYTE $78 ; x
.BYTE $FC ; ü
.BYTE $72 ; r
.BYTE $73 ; s
.BYTE $FC ; ü
.BYTE $71 ; q
.BYTE $79 ; y
.BYTE $FC ; ü
.BYTE $72 ; r
.BYTE $73 ; s
tbl_B4AF: .BYTE $FC ; ü ; loc_B563t B565t
.BYTE $74 ; t
.BYTE $FC ; ü
.BYTE $FC ; ü
.BYTE $75 ; u
.BYTE $76 ; v
.BYTE $FC ; ü
.BYTE $74 ; t
.BYTE $FC ; ü
.BYTE $FC ; ü
.BYTE $75 ; u
.BYTE $76 ; v
.BYTE $FC ; ü
.BYTE $74 ; t
.BYTE $77 ; w
.BYTE $FC ; ü
.BYTE $75 ; u
.BYTE $76 ; v
.BYTE $FC ; ü
.BYTE $74 ; t
.BYTE $78 ; x
.BYTE $FC ; ü
.BYTE $75 ; u
.BYTE $76 ; v
.BYTE $FC ; ü
.BYTE $74 ; t
.BYTE $79 ; y
.BYTE $FC ; ü
.BYTE $75 ; u
.BYTE $76 ; v
tbl_B4CD: .BYTE $18 ; B56Er
.BYTE $12
.BYTE $C
.BYTE 6
.BYTE 0
tbl_B4D2: .BYTE 3 ; B59Fr
.BYTE 0
.BYTE 0
; ---------------------------------------------------------------------------
proc_B4D5: ; AED9o
LDA $3DA,X
AND #$F
CMP #1
BNE loc_B4EE
LDA #4
STA $518,X
LDA #4
STA $436,X
LDA $4F7
JMP loc_B09B
; ---------------------------------------------------------------------------
loc_B4EE: ; B4DCj
JSR sub_CC1B
LDA $E
BEQ loc_B4FB
LDA #$61 ; 'a'
STA $3DA,X
RTS
; ---------------------------------------------------------------------------
loc_B4FB: ; B4F3j
DEC $43E,X
BNE loc_B555
LDA $4F8
STA $43E,X
DEC $518,X
BNE loc_B555
LDA #4
STA $518,X
DEC $436,X
LDA $436,X
BPL loc_B555
LDY $454,X
LDA $56E,X
BNE loc_B52B
INY
CPY #3
BCC loc_B527
LDY #2
loc_B527: ; B523j
TYA
STA $454,X
loc_B52B: ; B51Ej
JSR proc_A169
LDA #0
STA $3DA,X
STA $3CA,X
LDA $37E,X
SEC
SBC #4
STA $37E,X
LDA $36B,X
SBC #0
STA $36B,X
LDA #$FF
STA $3A9,X
LDA #$B0 ; '°'
STA $3B5,X
JSR sub_D2EF
RTS
; ---------------------------------------------------------------------------
loc_B555: ; B4FEj B509j ...
LDA $518,X
AND #1
BNE loc_B563
LDA #<tbl_B491
LDY #>tbl_B491
JMP loc_B567
; ---------------------------------------------------------------------------
loc_B563: ; B55Aj
LDA #<tbl_B4AF
LDY #>tbl_B4AF
loc_B567: ; B560j
STA $E
STY $F
LDY $436,X
LDA tbl_B4CD,Y
JSR sub_B770
LDA $56E,X
BNE locret_B5A7
JSR sub_D5AE
TXA
PHA
LDA $209,Y
CMP #$77 ; 'w'
BEQ loc_B596
CMP #$78 ; 'x'
BEQ loc_B596
CMP #$79 ; 'y'
BEQ loc_B596
CMP #$FC ; 'ü'
BEQ loc_B596
TYA
CLC
ADC #$C
TAY
loc_B596: ; B583j B587j ...
LDA $454,X
TAX
LDA $20A,Y
AND #$FC ; 'ü'
ORA tbl_B4D2,X
STA $20A,Y
PLA
TAX
locret_B5A7: ; B577j
RTS
; ---------------------------------------------------------------------------
tbl_B5A8: .BYTE $FC ; ü ; B5EDt B5F1t
.BYTE $48 ; H
.BYTE $42 ; B
.BYTE $FC ; ü
.BYTE $49 ; I
.BYTE $43 ; C
.BYTE $FC ; ü
.BYTE $A4 ; ¤
.BYTE $A5 ; ¥
.BYTE $FC ; ü
.BYTE $A6 ; ¦
.BYTE $A7 ; §
tbl_B5B4: .BYTE 0 ; B5F5r
.BYTE 6
; ---------------------------------------------------------------------------
proc_B5B6: ; AEDBo
LDA $3DA,X
AND #$F
CMP #1
BNE loc_B5D8
LDA #9
STA $436,X
LDA #0
STA $3E2,X
CPX $15
BNE loc_B5D3
LDA $F0
ORA #$80 ; '€'
STA $F0
loc_B5D3: ; B5CBj
LDA #8
JMP loc_B09B
; ---------------------------------------------------------------------------
loc_B5D8: ; B5BDj
DEC $43E,X
BNE loc_B5E7
LDA #8
STA $43E,X
DEC $436,X
BEQ loc_B5FC
loc_B5E7: ; B5DBj
LDA $436,X
AND #1
TAY
LDA #<tbl_B5A8
STA $E
LDA #>tbl_B5A8
STA $F
LDA tbl_B5B4,Y
JSR sub_B770
RTS
; ---------------------------------------------------------------------------
loc_B5FC: ; B5E5j
LDA #$11
STA $3DA,X
RTS
; ---------------------------------------------------------------------------
proc_B602: ; AEDDo
RTS
; ---------------------------------------------------------------------------
tbl_B603: .BYTE $FC ; ü ; B672t B676t
.BYTE $FC ; ü
.BYTE $AE ; ®
.BYTE $FC ; ü
.BYTE $FC ; ü
.BYTE $FC ; ü
.BYTE $FC ; ü
.BYTE $AF ; ¯
.BYTE $B0 ; °
.BYTE $FC ; ü
.BYTE $FC ; ü
.BYTE $FC ; ü
.BYTE $FC ; ü
.BYTE $B2 ; ²
.BYTE $B3 ; ³
.BYTE $FC ; ü
.BYTE $B1 ; ±
.BYTE $FC ; ü
.BYTE $B5 ; µ
.BYTE $B4 ; ´
.BYTE $FC ; ü
.BYTE $B4 ; ´
.BYTE $B5 ; µ
.BYTE $FC ; ü
.BYTE $FC ; ü
.BYTE $B5 ; µ
.BYTE $B4 ; ´
.BYTE $FC ; ü
.BYTE $B4 ; ´
tbl_B620: .BYTE $B5 ; µ ; B67Dr
.BYTE $18
.BYTE $12
.BYTE $C
.BYTE 6
tbl_B625: .BYTE 0 ; B686r
.BYTE 4
.BYTE 4
.BYTE 4
.BYTE 0
tbl_B62A: .BYTE 0 ; B68Br
.BYTE $30 ; 0
.BYTE $18
.BYTE 0
.BYTE 0
.BYTE 0
; ---------------------------------------------------------------------------
proc_B630: ; AEE1o
LDA $3DA,X
AND #$F
CMP #1
BNE loc_B650
LDA #5
STA $436,X
LDA #$8C ; 'Œ'
STA $37E,X
LDA #3
STA $4A2,X
JSR sub_D604
LDA #4
JMP loc_B09B
; ---------------------------------------------------------------------------
loc_B650: ; B637j
CMP #2
BNE loc_B6CC
JSR sub_D604
DEC $43E,X
BNE loc_B666
LDA #4
STA $43E,X
DEC $436,X
BEQ loc_B6C4
loc_B666: ; B65Aj
LDA #1
STA $3C1,X
JSR sub_D5C2
CMP #$11
BEQ locret_B6C3
LDA #<tbl_B603
STA $E
LDA #>tbl_B603
STA $F
LDY $436,X
LDA tbl_B620,Y
JSR sub_B770
LDY $436,X
LDA tbl_B625,Y
STA 0
LDA tbl_B62A,Y
STA 1
JSR sub_D5AE
TXA
PHA
LDX #5
loc_B697: ; B6BFj
LDA $203,Y
CLC
ADC 0
STA $203,Y
LDA $202,Y
AND #$F
STA $202,Y
LDA 1
AND #1
ASL A
ASL A
ASL A
ASL A
ASL A
ASL A
ORA $202,Y
STA $202,Y
LSR 1
INY
INY
INY
INY
DEX
BPL loc_B697
PLA
TAX
locret_B6C3: ; B670j
RTS
; ---------------------------------------------------------------------------
loc_B6C4: ; B664j
JSR sub_D604
LDA #$40 ; '@'
JMP loc_B09B
; ---------------------------------------------------------------------------
loc_B6CC: ; B652j
DEC $43E,X
BNE locret_B6EB
LDA #$FF
CPX #2
BCC loc_B6DD
LDY $68
BEQ loc_B6DD
LDA #$C1 ; 'Á'
loc_B6DD: ; B6D5j B6D9j
STA $3DA,X
CPX #2
BCS locret_B6EB
TXA
PHA
JSR sub_BD4D
PLA
TAX
locret_B6EB: ; B6CFj B6E2j
RTS
; ---------------------------------------------------------------------------
proc_B6EC: ; AEE3o
LDA $3DA,X
AND #$F
CMP #1
BNE loc_B713
LDY #$10
LDA $350,X
CMP #$10
BCC loc_B704
LDY #$F0 ; 'ð'
CMP #$F0 ; 'ð'
BCC loc_B70C
loc_B704: ; B6FCj
TYA
CLC
ADC $350,X
STA $350,X
loc_B70C: ; B702j
JSR sub_AC56
INC $3DA,X
RTS
; ---------------------------------------------------------------------------
loc_B713: ; B6F3j
JSR sub_A6CC
RTS
; ---------------------------------------------------------------------------
proc_B717: ; AEDFo
LDA $3DA,X
AND #$F
CMP #1
BNE loc_B73E
LDA #6
STA $540,X
LDA #0
STA $3CA,X
STA $40E,X
STA $4AE,X
LDA #$FE ; 'þ'
STA $3A9,X
LDA #$80 ; '€'
STA $3B5,X
INC $3DA,X
RTS
; ---------------------------------------------------------------------------
loc_B73E: ; B71Ej
CMP #2
BNE loc_B74A
DEC $540,X
BNE loc_B74D
INC $3DA,X
loc_B74A: ; B740j
JSR sub_C3CE
loc_B74D: ; B745j
LDA #0
STA $80,X
STA $84,X
JSR sub_AA33
JSR sub_B117
LDA $3CA,X
BEQ locret_B76F
LDA $350,X
PHA
JSR sub_A1C0
PLA
STA $350,X
LDA $F0
ORA #$40 ; '@'
STA $F0
locret_B76F: ; B75Cj
RTS
; =============== S U B R O U T I N E =======================================
; ®å®¦¥ ­  ¨­¨æ¨ «¨§ æ¨î ¢á¥å á¯à ©â®¢ ­  ã஢­¥.
sub_B770: ; loc_AF8Ep B13Fp ...
STA $91
JSR sub_DA87
loc_B775: ; B157p B293p
JSR sub_D5C2
JSR sub_D5AE
JSR sub_D6E6
JSR sub_B785
JSR sub_D5C2
RTS
; End of function sub_B770
; =============== S U B R O U T I N E =======================================
; ‡ ç¥¬ íâ® ¤¥« âì á® á¯à ©â ¬¨?
sub_B785: ; B77Ep sub_CD35p
JSR sub_D5AE
LDA #6
STA $E
loc_B78C: ; B79Dj
LDA $4A2,X
AND #$20 ; ' '
ORA $202,Y
STA $202,Y
INY
INY
INY
INY
DEC $E
BNE loc_B78C
RTS
; End of function sub_B785
; ---------------------------------------------------------------------------
tbl_unk_B7A0: .BYTE $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
; B86Fr
.BYTE $01, $01, $01, $01, $00, $00, $01, $00, $00, $FF, $00, $00, $FF, $FF, $FF, $FF
.BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
.BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
.BYTE $FF, $FF, $FF, $FF, $00, $00, $FF, $00, $00, $01, $00, $00, $01, $01, $01, $01
.BYTE $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01
tbl_unk_B800: .BYTE $80 ; € ; B81Dr
.BYTE $68 ; h
.BYTE $40 ; @
.BYTE $40 ; @
.BYTE $30 ; 0
.BYTE 1
; =============== S U B R O U T I N E =======================================
sub_B806: ; loc_B290p
LDA $510,X
BNE loc_B837
INC $510,X
LDA #3
STA $540,X
LDA #$F0 ; 'ð'
STA $528,X
LDA $1C,X
AND #3
TAY
LDA tbl_unk_B800,Y
STA $538,X
LDA #0
STA $530,X
LDY #1
LDA $3C1,X
AND #1
BEQ loc_B833
LDY #$30 ; '0'
loc_B833: ; B82Fj
TYA
STA $548,X
loc_B837: ; B809j
DEC $530,X
BNE loc_B844
LDA #0
STA $530,X
INC $538,X
loc_B844: ; B83Aj
LDA $528,X
CLC
ADC $538,X
STA $528,X
LDA $37E,X
ADC #0
STA $37E,X
LDA #0
ADC $36B,X
STA $36B,X
DEC $540,X
BNE locret_B892
LDA #3
STA $540,X
LDY $548,X
LDA $350,X
CLC
ADC tbl_unk_B7A0,Y
STA $350,X
JSR sub_B893
BEQ loc_B883
LDA $350,X
CLC
ADC 0
STA $350,X
loc_B883: ; B878j
INC $548,X
LDA $548,X
CMP #$60 ; '`'
BCC locret_B892
LDA #1
STA $548,X
locret_B892: ; B861j B88Bj
RTS
; End of function sub_B806
; =============== S U B R O U T I N E =======================================
sub_B893: ; B875p
STX $E
LDY #7
loc_B897: ; B8E6j
CPY $E
BEQ loc_B8E5
LDA $3DA,Y
CMP #$FF
BEQ loc_B8E5
LDA $3CA,Y
BEQ loc_B8E5
LDA $350,X
CLC
ADC #8
SEC
SBC $350,Y
BPL loc_B8B8
EOR #$FF
CLC
ADC #1
loc_B8B8: ; B8B1j
CMP #$20 ; ' '
BCS loc_B8E5
JSR sub_CCA3
LDA 4
BNE loc_B8E5
LDA $F
BEQ loc_B8E5
LDA 5
CMP #$40 ; '@'
BCS loc_B8E5
CMP #8
BCC loc_B8E5
loc_B8D1: ; B8F7j
LDY #$FF
LDA $548,X
CMP #$19
BCC loc_B8DE
CMP #$50 ; 'P'
BCC loc_B8E0
loc_B8DE: ; B8D8j
LDY #1
loc_B8E0: ; B8DCj
STY 0
LDA #1
RTS
; ---------------------------------------------------------------------------
loc_B8E5: ; B899j B8A0j ...
DEY
BPL loc_B897
LDA #0
SEC
SBC $350,X
BPL loc_B8F5
EOR #$FF
CLC
ADC #1
loc_B8F5: ; B8EEj
CMP #$18
BCC loc_B8D1
LDA #0
RTS
; End of function sub_B893
tbl_unk_B910:
.BYTE $FC, $FC, $7A, $FC, $FC, $FC, $FC, $FC, $7B, $FC, $FC, $7C, $FC, $7D, $7E, $FC
.BYTE $7F, $80, $81, $82, $83, $84, $85, $86, $FC, $87, $88, $FC, $89, $8A, $FC, $8B
.BYTE $8C, $FC, $8D, $8E, $FC, $8F, $90, $FC, $FC, $FC, $FC, $FC, $FC, $FC, $FC, $FC
tbl_unk_SIX:
.BYTE 0, 6, $C, $12, $18, $1E, $24, $2A ; B9B8r
; =============== S U B R O U T I N E =======================================
; Big piranha!
piranha: ; loc_9C82p A122p ...
LDX $4B8
BPL loc_B981
LDA $46
BNE loc_B956
LDA $64
AND #1
TAX
loc_B956: ; B94Fj B95Ej
JSR sub_BA89 ; Piranha's AI.
BEQ loc_B961
INX
CPX #8
BCC loc_B956
RTS
; ---------------------------------------------------------------------------
loc_B961: ; B959j
STX $4B8
LDA #0
STA $4B9
LDA #$20 ; ' '
STA $46
LDA #3
STA $4C
LDA #1
STA $373
LDA #$94 ; '”'
STA $386
LDA #3
STA $4AA
RTS
; ---------------------------------------------------------------------------
loc_B981: ; B94Bj
LDA $4C
BNE loc_B99F
INC $4B9
LDY #3
LDA $4B9
CMP #3
BCC loc_B993
LDY #$10
loc_B993: ; B98Fj
STY $4C
CMP #2
BNE loc_B99F
LDA $F3
ORA #$40 ; '@'
STA $F3
loc_B99F: ; B983j B997j
LDA $4B9
CMP #4
BCS loc_B9A9
JSR sub_BA89 ; Piranha's AI.
loc_B9A9: ; B9A4j
TXA
PHA
LDX #8
LDA #<tbl_unk_B910
STA $E
LDA #>tbl_unk_B910
STA $F
LDY $4B9
LDA tbl_unk_SIX,Y
JSR sub_B770
PLA
TAX
LDA $4B9
CMP #3
BEQ loc_B9CA
JMP loc_BA51
; ---------------------------------------------------------------------------
loc_B9CA: ; B9C5j
LDA $3DA,X
AND #$F0 ; 'ð'
CMP #$E0 ; 'à'
BEQ locret_BA50
LDA $386
SEC
SBC $37E,X
CMP #$16
BCS locret_BA50
LDA $37E,X
CMP #$98 ; '˜'
BCS locret_BA50
LDA $358
SEC
SBC $350,X
BPL loc_B9F3
EOR #$FF
CLC
ADC #1
loc_B9F3: ; B9ECj
CMP #$C
BCS locret_BA50
CPX #2
BCS locret_BA50
JSR sub_D604
LDA #$E0 ; 'à'
STA $3DA,X
STA $37E,X
TXA
PHA
JSR sub_D5AE
LDA #$A2 ; '¢'
STA OAM_BUFFER+1,Y
LDA #$A3 ; '£'
STA OAM_BUFFER+5,Y
TXA
STA OAM_BUFFER+2,Y
STA OAM_BUFFER+6,Y
LDA OAM_BUFFER
CLC
ADC #3
STA OAM_BUFFER,Y
STA OAM_BUFFER+4,Y
LDA #5
LDX $3C9
CPX #1
BNE loc_BA33
LDA #$FC ; 'ü'
loc_BA33: ; BA2Fj
CLC
ADC OAM_BUFFER+3
STA OAM_BUFFER+3,Y
CLC
ADC #8
STA OAM_BUFFER+7,Y
LDA #$12
STA $4C
PLA
TAX
CPX $15
BNE locret_BA50
LDA $F2
ORA #$40 ; '@'
STA $F2
locret_BA50: ; B9D1j B9DCj ...
RTS
; ---------------------------------------------------------------------------
loc_BA51: ; B9C7j
LDA $4B9
CMP #4
BCC locret_BA88
LDA $3DA,X
CMP #$E0 ; 'à'
BNE loc_BA65
JSR sub_D604
INC $3DA,X
loc_BA65: ; BA5Dj
LDA $4B9
CMP #7
BCC locret_BA88
LDA $3DA,X
AND #$F0 ; 'ð'
CMP #$E0 ; 'à'
BNE loc_BA7A
LDA #$B1 ; '±'
STA $3DA,X
loc_BA7A: ; BA73j
LDA #$10
STA $46
LDA #$FF
STA $4B8
LDX #8
JSR sub_D604
locret_BA88: ; BA56j BA6Aj
RTS
; End of function piranha
; =============== S U B R O U T I N E =======================================
; Piranha's AI.
sub_BA89: ; loc_B956p B9A6p
LDA $3DA,X
BNE loc_BAA5
LDA $36B,X
BEQ loc_BAA5
LDA $37E,X
CMP #$68 ; 'h'
BCC loc_BAA5
LDA $350,X
CMP #$B1 ; '±'
BCS loc_BAA5
CMP #$3F ; '?'
BCS loc_BAA8
loc_BAA5: ; BA8Cj BA91j ...
LDA #1
RTS
; ---------------------------------------------------------------------------
loc_BAA8: ; BAA3j
STA $358
LDA $3C1,X
AND #3
STA $3C9
LDA #0
locret_BAB5: ; BCE9r
RTS
; End of function sub_BA89
; ---------------------------------------------------------------------------
.BYTE $A0, $A1, $A0, $9D, $9E, $9F, $9E, $9D
tbl_unk_BABE:
.BYTE 2, 2, $FE, $FE ; BB45r
tbl_unk_BAC2:
.BYTE $FE, 2, $FE, 2 ; BB4Br
tbl_unk_BAC6:
.BYTE $30, $50, $70, $90 ; BB51r
tbl_unk_BACA:
.BYTE $90, $70, $50, $30 ; BB57r
; Difficulty table
tbl_unk_BACE:
; Thunderbolt initial timer
; easy, normal, medium, hard
.BYTE $A0, $90, $80, $70
tbl_unk_BAD2:
; Difficulty related (mb thunderbolt restart timer)
.BYTE $22, $1E, $1A
tbl_unk_BAD5:
.BYTE $16
tbl_unk_BAD6:
.BYTE 0, 2, 4, 6, $A, $C, $E, $10, $12, $14, $16, $18, $1A, $1C, $1E, $20
.BYTE $22, $24, $26, $28, $2A, $2C, $2E, $30
; =============== S U B R O U T I N E =======================================
sub_BAEE: ; A504p
LDX #0
loc_BAF0: ; BD1Cj
LDA $780,X
BEQ loc_BAF8
JMP loc_BB88
; ---------------------------------------------------------------------------
loc_BAF8: ; BAF3j
LDA $5E
BEQ loc_BAFF
JMP loc_BB85
; ---------------------------------------------------------------------------
loc_BAFF: ; BAFAj
LDA #$18
STA $5E
LDA $76
CMP #6
BNE loc_BB0E
LDA $94
BNE loc_BB0E
RTS
; ---------------------------------------------------------------------------
loc_BB0E: ; BB07j BB0Bj
LDA $7BD
BNE loc_BB38
TXA
PHA
LDX #8
loc_BB17: ; BB1Dj
DEX
LDA $3DA,X
CMP #$FF
BNE loc_BB17
STX $7BD
JSR sub_D5AE
TYA
LDX #5
loc_BB28: ; BB2Fj
STA $7BE,X
CLC
ADC #4
DEX
BPL loc_BB28
LDA #0
STA $773
PLA
TAX
loc_BB38: ; BB11j
LDA #0
STA $7A4,X
STA $7AA,X
LDA $1D,X
AND #3
TAY
LDA tbl_unk_BABE,Y
STA $798,X
LDA tbl_unk_BAC2,Y
STA $79E,X
LDA tbl_unk_BAC6,Y
STA $7B0,X
LDA tbl_unk_BACA,Y
STA $7B6,X
INC $792,X
LDY $792,X
CPY #$18
BCC loc_BB69
LDY #$17
loc_BB69: ; BB65j
LDA $7B0,X
CLC
ADC tbl_unk_BAD5,Y
STA $7B0,X
LDA $7B6,X
CLC
ADC tbl_unk_BAD5,Y
STA $7B6,X
LDA #$A0 ; ' '
STA $786,X
INC $780,X
loc_BB85: ; BAFCj
JMP loc_BD17
; ---------------------------------------------------------------------------
loc_BB88: ; BAF5j
CMP #1
BNE loc_BBC9
LDA $786,X
AND #$F
BNE loc_BB99
LDA $F1
ORA #8
STA $F1
loc_BB99: ; BB91j
DEC $786,X
BEQ loc_BBAB
LDA $786,X
AND #4
BEQ loc_BBA8
JSR sub_BDBA
loc_BBA8: ; BBA3j
JMP loc_BD17
; ---------------------------------------------------------------------------
loc_BBAB: ; BB9Cj
JSR sub_BDBA
LDA #$FF
STA $304,Y
LDA #2
STA $786,X
LDA #8
STA $78C,X
LDA $F0
ORA #4
STA $F0
INC $780,X
JMP loc_BD17
; ---------------------------------------------------------------------------
loc_BBC9: ; BB8Aj
CMP #2
BNE loc_BBD3
JSR sub_BE78
JMP loc_BD17
; ---------------------------------------------------------------------------
loc_BBD3: ; BBCBj
LDA $7A4,X
CLC
ADC $7B0,X
STA $7A4,X
BCC loc_BBE9
LDA $359,X
CLC
ADC $798,X
STA $359,X
loc_BBE9: ; BBDDj
LDA $7AA,X
CLC
ADC $7B6,X
STA $7AA,X
BCC loc_BC27
LDA $79E,X
BMI loc_BC0F
LDA $387,X
CLC
ADC $79E,X
STA $387,X
LDA $374,X
ADC #0
STA $374,X
JMP loc_BC27
; ---------------------------------------------------------------------------
loc_BC0F: ; BBF8j
EOR #$FF
CLC
ADC #1
STA 0
LDA $387,X
SEC
SBC 0
STA $387,X
LDA $374,X
SBC #0
STA $374,X
loc_BC27: ; BBF3j BC0Cj
LDA #0
STA $7BC
JSR sub_BD20 ; Fireball (cloud projectile) handler.
LDA $7BC
BNE loc_BC37
JMP loc_BCB8
; ---------------------------------------------------------------------------
loc_BC37: ; BC32j
CMP #$F
BNE loc_BC3E
JMP loc_BCFE
; ---------------------------------------------------------------------------
loc_BC3E: ; BC39j
LDA $F3
ORA #$80 ; '€'
STA $F3
LDA $7BC
AND #1
BEQ loc_BC52
LDA $79E,X
BMI loc_BC5E
BPL loc_BC77
loc_BC52: ; BC49j
LDA $7BC
AND #2
BEQ loc_BC7E
LDA $79E,X
BMI loc_BC7E
loc_BC5E: ; BC4Ej
EOR #$FF
CLC
ADC #1
STA $79E,X
LDA $1F,X
AND #4
BEQ loc_BC7E
LDA #$20 ; ' '
LDY $7B6,X
CPY #$CF ; 'Ï'
BCC loc_BC77
LDA #$E0 ; 'à'
loc_BC77: ; BC50j BC73j
CLC
ADC $7B6,X
STA $7B6,X
loc_BC7E: ; BC57j BC5Cj ...
LDA $7BC
AND #4
BEQ loc_BC8C
LDA $798,X
BMI loc_BC98
BPL loc_BCB8
loc_BC8C: ; BC83j
LDA $7BC
AND #8
BEQ loc_BCB8
LDA $798,X
BMI loc_BCB8
loc_BC98: ; BC88j
EOR #$FF
CLC
ADC #1
STA $798,X
LDA $20,X
AND #4
BEQ loc_BCB8
LDA #$20 ; ' '
LDY $7B0,X
CPY #$CF ; 'Ï'
BCC loc_BCB1
LDA #$E0 ; 'à'
loc_BCB1: ; BCADj
CLC
ADC $7B0,X
STA $7B0,X
loc_BCB8: ; BC34j BC8Aj ...
JSR sub_BDF0
LDA $7BC
BEQ loc_BCC3
JMP sub_BD4D
; ---------------------------------------------------------------------------
loc_BCC3: ; BCBEj
STX 0
TXA
CLC
ADC #9
TAX
JSR sub_D5C2
LDX 0
CMP #0
BNE loc_BD0F
LDY $7BE,X
LDA $8F
STA $200,Y
DEC $78C,X
BNE loc_BCE5
LDA #8
STA $78C,X
loc_BCE5: ; BCDEj
LDA $78C,X
TAX
LDA locret_BAB5,X
STA $201,Y
LDA #0
STA $202,Y
LDA $8E
STA $203,Y
LDX 0
JMP loc_BD17
; ---------------------------------------------------------------------------
loc_BCFE: ; BC3Bj
LDA #0
STA $780,X
LDA #$FF
STA $374,X
LDY dip_DIFFICULTY ; read some initialized dip?
LDA tbl_unk_BAD2,Y
STA $5E
loc_BD0F: ; BCD1j
LDY $7BE,X
LDA #$F8 ; 'ø'
STA $200,Y
loc_BD17: ; loc_BB85j loc_BBA8j ...
INX
CPX #6
BCS locret_BD1F
JMP loc_BAF0
; ---------------------------------------------------------------------------
locret_BD1F: ; BD1Aj
RTS
; End of function sub_BAEE
; =============== S U B R O U T I N E =======================================
; Fireball (cloud projectile) handler.
sub_BD20: ; BC2Cp
TXA
PHA
CLC
ADC #9
TAX
LDA $37E,X
STA $B
CLC
ADC #8
STA $A
LDA $350,X
STA $D
CLC
ADC #8
STA $C
JSR sub_C370
PLA
TAX
RTS
; End of function sub_BD20
; ---------------------------------------------------------------------------
tbl_0toC: .BYTE 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, $A, $B, $C ; loc_BD67r
; =============== S U B R O U T I N E =======================================
sub_BD4D: ; proc_981Ep 9A1Ep ...
LDX #5
loc_BD4F: ; BD6Ej
LDY $7BE,X
LDA #$F8 ; 'ø'
STA $200,Y
STA $374,X
LDA #0
STA $780,X
LDY $6D
CPY #$E
BCC loc_BD67
LDY #$D
loc_BD67: ; BD63j
LDA tbl_0toC,Y
STA $792,X
DEX
BPL loc_BD4F
LDX dip_DIFFICULTY
LDA tbl_unk_BACE,X
LDY $6D
CPY #$E
BCC loc_BD7D
LDY #$D
loc_BD7D:
SEC
SBC tbl_unk_BAD6,Y
LDY $65
BEQ loc_BD88
SEC
SBC #$30
loc_BD88:
LDY $69
CPY #$A
BNE loc_BD90
LDA #$30 ; '0'
loc_BD90:
STA $5E
LDA #0
STA $773
loc_BD97: ; BDABj
LDX $773
JSR sub_BDBA
LDA #$FF
STA $304,Y
INC $773
LDA $773
CMP $775
BNE loc_BD97
JSR sub_BFA7
LDA #0
STA $773
RTS
; End of function sub_BD4D
; ---------------------------------------------------------------------------
tbl_unk_BDB6: .BYTE $FF ; BDDBr
.BYTE $AA ; ª
.BYTE $55 ; U
.BYTE 0
; =============== S U B R O U T I N E =======================================
sub_BDBA: ; BBA5p loc_BBABp ...
STX 0
LDY $300
LDX $773
LDA $768,X
STA $301,Y
LDA $76C,X
STA $302,Y
LDA #1
STA $303,Y
LDX 0
LDA $786,X
AND #3
TAX
LDA tbl_unk_BDB6,X
STA $304,Y
LDA #0
STA $305,Y
TYA
CLC
ADC #4
STA $300
LDX 0
RTS
; End of function sub_BDBA
; =============== S U B R O U T I N E =======================================
sub_BDF0: ; loc_BCB8p
LDA #0
STA $7BC
LDY #1
loc_BDF7: ; BE4Bj
LDA $62,Y
BEQ loc_BE4A
LDA $3DA,Y
BNE loc_BE4A
LDA $359,X
CLC
ADC #4
STA 0
LDA $350,Y
CLC
ADC #8
SEC
SBC 0
BPL loc_BE19
EOR #$FF
CLC
ADC #1
loc_BE19: ; BE12j
CMP #6
BCS loc_BE4A
TXA
PHA
CLC
ADC #9
TAX
JSR sub_CCA3
PLA
TAX
LDA 4
BNE loc_BE4A
TXA
PHA
LDX #8
LDA $F
BNE loc_BE36
LDX #$E
loc_BE36: ; BE32j
STX 0
PLA
TAX
LDA 5
CMP 0
BCS loc_BE4A
LDA #$81 ; ''
STA $3DA,Y
LDA #1
STA $7BC
loc_BE4A: ; BDFAj BDFFj ...
DEY
BPL loc_BDF7
RTS
; End of function sub_BDF0
; ---------------------------------------------------------------------------
tbl_BE4E: .BYTE $91, $FC, $FC, $92, $FC, $FC, $93, $94, $FC, $95, $96, $FC, $97, $98, $99, $9A
; BF43t BF45t
.BYTE $9B, $9C
tbl_BE60: .BYTE $FC, $FC, $91, $FC, $FC, $92, $FC, $94, $93, $FC, $96, $95, $99, $98, $97, $9C
; BF4Et BF50t
.BYTE $9B
unk_BE71: .BYTE $9A ; š ; BF59r
.BYTE 0
.BYTE 3
.BYTE 6
.BYTE 9
.BYTE $C
.BYTE $F
; =============== S U B R O U T I N E =======================================
sub_BE78: ; BBCDp
LDA $4BB
BEQ loc_BE80
JMP loc_BF24
; ---------------------------------------------------------------------------
loc_BE80: ; BE7Bj
LDA #0
STA $37C
LDY $773
LDA $79E,X
BPL loc_BEAC
LDA #$80 ; '€'
STA $4BD
LDA $764,Y
SEC
SBC #$60 ; '`'
STA 1
LDA $760,Y
SBC #0
CMP #$28 ; '('
BCS loc_BEA9
CMP #$23 ; '#'
BCC loc_BEA9
LDA #$23 ; '#'
loc_BEA9: ; BEA1j BEA5j
JMP loc_BEC8
; ---------------------------------------------------------------------------
loc_BEAC: ; BE8Bj
LDA #0
STA $4BD
LDA $764,Y
CLC
ADC #$80 ; '€'
STA 1
LDA $760,Y
ADC #0
CMP #$24 ; '$'
BCC loc_BEC8
CMP #$28 ; '('
BCS loc_BEC8
LDA #$28 ; '('
loc_BEC8: ; loc_BEA9j BEC0j ...
STA 0
STA 2
LDA $798,X
BMI loc_BEE3
LDA $4BD
ORA #$40 ; '@'
STA $4BD
LDA 1
CLC
ADC #4
STA 1
JMP loc_BEEA
; ---------------------------------------------------------------------------
loc_BEE3: ; BECFj
LDA 1
SEC
SBC #1
STA 1
loc_BEEA: ; BEE0j
JSR sub_E604
LDA 2
CMP #$28 ; '('
BCC loc_BF01
LDA 5
SEC
SBC #$10
STA 5
CMP #$F0 ; 'ð'
BCS loc_BF01
INC $37C
loc_BF01: ; BEF1j BEFCj
LDA 5
STA $38F
LDA 4
STA $361
INC $773
LDA $773
CMP $775
BNE loc_BF1B
LDA #0
STA $773
loc_BF1B: ; BF14j
LDA #3
STA $4BC
INC $4BB
RTS
; ---------------------------------------------------------------------------
loc_BF24: ; BE7Dj
DEC $4BC
BNE loc_BF38
LDA #3
STA $4BC
INC $4BB
LDA $4BB
CMP #7
BCS loc_BF85
loc_BF38: ; BF27j
TXA
PHA
LDX #$11
JSR sub_D5C2
CMP #$11
BEQ loc_BF82
LDX #<tbl_BE4E
LDY #>tbl_BE4E
LDA $4BD
AND #$80 ; '€'
BEQ loc_BF52
LDX #<tbl_BE60
LDY #>tbl_BE60
loc_BF52: ; BF4Cj
STX 0
STY 1
LDX $4BB
LDY unk_BE71,X
LDX #0
loc_BF5E: ; BF80j
LDA $8F
STA $2E4,X
CLC
ADC #8
STA $8F
INX
LDA (0),Y
STA $2E4,X
INY
INX
LDA $4BD
STA $2E4,X
INX
LDA $361
STA $2E4,X
INX
CPX #$C
BCC loc_BF5E
loc_BF82: ; BF41j
PLA
TAX
RTS
; ---------------------------------------------------------------------------
loc_BF85: ; BF36j
LDY #0
LDA $4BD
AND #$80 ; '€'
BNE loc_BF90
LDY #$10
loc_BF90: ; BF8Cj
TYA
CLC
ADC $38F
STA $387,X
LDA $37C
STA $374,X
LDA $361
STA $359,X
INC $780,X
; End of function sub_BE78
; =============== S U B R O U T I N E =======================================
sub_BFA7: ; BDADp
LDA #0
STA $4BB
LDA #$F8 ; 'ø'
STA $2E4
loc_BFB1: ; loc_C068r C06Er
STA $2E8
STA $2EC
RTS
; End of function sub_BFA7
; ---------------------------------------------------------------------------
.BYTE 0
.BYTE 1
.BYTE 2
.BYTE 3
.BYTE 5
.BYTE 7
.BYTE 9
.BYTE $C
.BYTE $F
.BYTE $12
.BYTE $16
.BYTE $1A
.BYTE $1E
.BYTE $23 ; #
.BYTE $27 ; '
.BYTE $2C ; ,
.BYTE $31 ; 1
.BYTE $37 ; 7
.BYTE $40 ; @
tbl_BFCB: .BYTE $22, $28, $22, $22, $28, $22, $22, $22, $22, $22, $22, $28, $21, $21, $22, $20
; loc_C079r
.BYTE $21, $29, $20, $21, $28, $28, $22, $22, $28, $28, $21, $22, $22, $28, $20, $21
.BYTE $22, $28, $29, $21, $22, $22, $28, $20, $20, $22, $22, $28, $21, $21, $22, $22
.BYTE $29, $21, $21, $22, $28, $29, $29, $20, $20, $21, $21, $22, $22, $28, $28, $29
tbl_C00B: .BYTE $6F, $F, $8F, $2F, $E, $25, $38, $88, $94, $25, $38, $F, $E5, $F9, $2F, $C4
; C081r
.BYTE $AE, $4F, $AF, $AF, $82, $9B, $66, $77, $EB, $F2, $F, $45, $58, $2E, $4F, $8E
.BYTE $AF, $2E, $2F, $6E, $43, $59, $4E, $C4, $D9, $22, $3B, $EF, $C, $11, $85, $98
.BYTE $F, $A6, $B7, $8F, $4F, $28, $35, $A2, $BB, $66, $77, $63, $7A, $A5, $B8, $2F
; =============== S U B R O U T I N E =======================================
tbl_C04B: ; loc_97F3p
LDA #0
STA $4F
STA $74F
STA $748
STA $749
STA $74A
STA $74D
STA $74E
LDX $6F
CPX #6
BCS loc_C068
RTS
; ---------------------------------------------------------------------------
loc_C068: ; C065j
LDA loc_BFB1+1,X ; Wtf?
STA $748
LDA loc_BFB1+2,X ; Reading code as data?
STA $749
LDY #0
LDX $748
loc_C079: ; C0B7j
LDA tbl_BFCB,X
STA $700,Y
STA 0
LDA tbl_C00B,X
STA $709,Y
STA 1
JSR sub_E604
LDA 4
STA $72D,Y
LDA #0
STA $71B,Y
LDA $700,Y
CMP #$28 ; '('
BCC loc_C0AD
LDA 5
SEC
SBC #$10
STA 5
CMP #$F0 ; 'ð'
BCS loc_C0AD
LDA #1
STA $71B,Y
loc_C0AD: ; C09Bj C0A6j
LDA 5
STA $724,Y
INY
INX
CPX $749
BNE loc_C079
STY $749
LDX #8
LDA #2
LDY $6F
CPY #$13
BCC loc_C0CC
LDA #8
STA $4F
LDA #$FF
loc_C0CC: ; C0C4j
STA 0
loc_C0CE: ; C0E0j
LDA 0
STA $712,X
LDA #1
STA $73F,X
STA $53,X
LDA #4
STA $736,X
DEX
BPL loc_C0CE
LDA #0
STA $748
STA $74A
RTS
; End of function tbl_C04B
; =============== S U B R O U T I N E =======================================
sub_C0EB: ; A507p
LDA $749
BEQ locret_C130
LDA $712
BPL loc_C101
LDA $4F
BNE locret_C130
LDX #8
loc_C0FB: ; C0FFj
STA $712,X
DEX
BPL loc_C0FB
loc_C101: ; C0F3j
LDA #0
STA $748
loc_C106: ; C12Ej
LDA #0
STA $74F
LDX $749
loc_C10E: ; C11Dj
LDA $711,X
CMP #1
BEQ loc_C119
CMP #3
BNE loc_C11C
loc_C119: ; C113j
INC $74F
loc_C11C: ; C117j
DEX
BNE loc_C10E
LDX $748
JSR sub_C181
INC $748
LDA $748
CMP $749
BNE loc_C106
locret_C130: ; C0EEj C0F7j
RTS
; End of function sub_C0EB
; ---------------------------------------------------------------------------
tbl_unk_C131: .BYTE $39, $26, $13, 0 ; C1C7r
tbl_unk_C135: .BYTE $FF, $FF, $83, $24, $24, $24, $FF, $FF, $83, $9E, $9F, $A0, $FF, $FF, $83, $24
; loc_C1CDr
.BYTE $24, $24, 0, $FF, $FF, $83, $A1, $A3, $24, $FF, $FF, $83, $A2, $A4, $A6, $FF
.BYTE $FF, $83, $24, $A5, $A7, 0, $FF, $FF, $83, $24, $A8, $24, $FF, $FF, $83, $24
.BYTE $A9, $24, $FF, $FF, $83, $24, $AA, $24, 0, $FF, $FF, $83, $24, $AD, $B0, $FF
.BYTE $FF, $83, $AB, $AE, $B1, $FF, $FF, $83, $AC, $AF, $24, 0
; =============== S U B R O U T I N E =======================================
sub_C181: ; C122p
LDA $712,X
BEQ loc_C1C2
LDA $53,X
BNE loc_C18F
LDA #2
STA $712,X
loc_C18F: ; C188j
DEC $73F,X
BNE loc_C1C2
loc_C194: ; 980Cp
LDA #2
STA $73F,X
DEC $736,X
LDA $736,X
BPL loc_C1A6
LDA #3
STA $736,X
loc_C1A6: ; C19Fj
TAY
LDA $712,X
BPL loc_C1B0
LDY #1
BNE loc_C1C5
loc_C1B0: ; C1AAj
CMP #2
BNE loc_C1B8
LDY #3
BNE loc_C1C5
loc_C1B8: ; C1B2j
CMP #3
BNE loc_C1C5
LDA #1
STA $712,X
RTS
; ---------------------------------------------------------------------------
loc_C1C2: ; C184j C192j
JMP loc_C214
; ---------------------------------------------------------------------------
loc_C1C5: ; C1AEj C1B6j ...
TXA
PHA
LDX tbl_unk_C131,Y
LDY $300
loc_C1CD: ; C1D7j
LDA tbl_unk_C135,X
STA $301,Y
BEQ loc_C1DA
INX
INY
JMP loc_C1CD
; ---------------------------------------------------------------------------
loc_C1DA: ; C1D3j
PLA
TAX
PHA
LDA $700,X
STA 0
LDA $709,X
STA 1
LDX $300
LDY #2
loc_C1EC: ; C1FEj
LDA 0
STA $301,X
LDA 1
STA $302,X
INC 1
TXA
CLC
ADC #6
TAX
DEY
BPL loc_C1EC
STX $300
PLA
TAX
LDA $712,X
CMP #2
BNE loc_C214
LDA #0
STA $712,X
STA $53,X
locret_C213: ; C217j
RTS
; ---------------------------------------------------------------------------
loc_C214: ; loc_C1C2j C20Aj
LDA $712,X
BMI locret_C213
LDA $72D,X
CLC
ADC #$C
STA $74C
LDA #8
LDY $712,X
BEQ loc_C22B
LDA #$C
loc_C22B: ; C227j
STA $74B
LDY $76
INY
INY
STY $74A
LDY #0
loc_C237: ; C2C1j
CPY #2
BCS loc_C240
LDA $62,Y
BEQ loc_C2BB
loc_C240: ; C239j
LDA $3DA,Y
BNE loc_C2BB
STA $F
LDA $350,Y
CLC
ADC #8
SEC
SBC $74C
BPL loc_C258
EOR #$FF
CLC
ADC #1
loc_C258: ; C251j
CMP $74B
BPL loc_C2BB
LDA $71B,X
STA 0
LDA $724,X
STA 1
JSR sub_CCB1
LDA 4
BNE loc_C2BB
LDA 5
CMP #$19
BCS loc_C2BB
LDA $712,X
BNE loc_C2B8
LDA $74F
CMP #2
BCS loc_C2C5
TYA
PHA
TXA
PHA
LDY #0
LDX $74D
LDA $712,X
BEQ loc_C28F
INY
loc_C28F: ; C28Cj
PLA
TAX
STA $74D,Y
PLA
TAY
LDA #$20 ; ' '
STA $53,X
INC $712,X
LDA $74F
BNE loc_C2A9
LDA #1
STA $73F,X
BNE loc_C2B4
loc_C2A9: ; C2A0j
TXA
PHA
TYA
PHA
JSR sub_C317
PLA
TAY
PLA
TAX
loc_C2B4: ; C2A7j
JSR sub_C333
RTS
; ---------------------------------------------------------------------------
loc_C2B8: ; C277j
JSR sub_C333
loc_C2BB: ; C23Ej C243j ...
INY
CPY $74A
BCS locret_C2C4
JMP loc_C237
; ---------------------------------------------------------------------------
locret_C2C4: ; C2BFj
RTS
; ---------------------------------------------------------------------------
loc_C2C5: ; C27Ej
STX 0
STY 1
LDX $74D
LDY $74E
LDA $53,X
CMP $53,Y
BCS loc_C2F2
CMP #$20 ; ' '
BEQ locret_C332
LDA $712,X
BEQ locret_C332
CMP #3
BEQ locret_C332
LDA #2
STA $712,X
LDY 1
LDX 0
STX $74D
JMP loc_C30E
; ---------------------------------------------------------------------------
loc_C2F2: ; C2D4j
LDA $53,Y
CMP #$20 ; ' '
BEQ locret_C332
LDA $712,Y
BEQ locret_C332
CMP #3
BEQ locret_C332
LDA #2
STA $712,Y
LDY 1
LDX 0
STX $74E
loc_C30E: ; C2EFj
LDA #3
STA $712,X
LDA #$20 ; ' '
STA $53,X
; End of function sub_C181
; =============== S U B R O U T I N E =======================================
sub_C317: ; C2ADp
LDX $74D
LDY $74E
CPX $74E
BCS loc_C328
LDX $74E
LDY $74D
loc_C328: ; C320j
LDA #2
STA $73F,X
LDA #1
STA $73F,Y
locret_C332: ; C2D8j C2DDj ...
RTS
; End of function sub_C317
; =============== S U B R O U T I N E =======================================
sub_C333: ; loc_C2B4p loc_C2B8p
LDA #0
STA $3B5,Y
LDA $F
BNE loc_C340
LDA #$FE ; 'þ'
BNE loc_C342
loc_C340: ; C33Aj
LDA #2
loc_C342: ; C33Ej
STA $3A9,Y
LDA $3D2,Y
CMP #$20 ; ' '
BCS loc_C350
LDA #$3F ; '?'
BNE loc_C352
loc_C350: ; C34Aj
LDA #1
loc_C352: ; C34Ej
STA $3D2,Y
LDA $F1
ORA #2
STA $F1
RTS
; End of function sub_C333
; ---------------------------------------------------------------------------
; UNUSED DATA .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF
; =============== S U B R O U T I N E =======================================
; Collisions.
sub_C370: ; loc_A57Fp A5EBp ...
LDA #0
STA $CB
CPX #9
BCS loc_C37B
JSR sub_C6B3
loc_C37B: ; C376j
LDA $36B,X
BNE loc_C38C
JSR sub_C67A
JSR sub_C61E
LDA $CB
BNE locret_C3C7
BEQ loc_C38F
loc_C38C: ; C37Ej
JSR sub_C69D
loc_C38F: ; C38Aj
JSR sub_C3EE
LDA $CB
BNE locret_C3C7
JSR sub_C49F
JSR sub_C51C
JSR sub_C5AA
loc_C39F: ; B105p loc_B2EFp ...
LDA $36B,X
BEQ locret_C3C7
LDA $37E,X
CMP #$98 ; '˜'
BCC locret_C3C7
CPX #8
BCS loc_C3B7
LDA $4A2,X
ORA #$20 ; ' '
STA $4A2,X
loc_C3B7: ; C3ADj
LDA $37E,X
CMP #$A0 ; ' '
BCC locret_C3C7
CPX #9
BCS loc_C3C8
LDA #$31 ; '1'
STA $3DA,X
locret_C3C7: ; C388j C394j ...
RTS
; ---------------------------------------------------------------------------
loc_C3C8: ; C3C0j
LDA #$F
STA $7BC
RTS
; End of function sub_C370
; =============== S U B R O U T I N E =======================================
sub_C3CE: ; A579p loc_B109p ...
LDA $36B,X
BNE loc_C3D7
JSR sub_C61E
RTS
; ---------------------------------------------------------------------------
loc_C3D7: ; C3D1j
LDA $37E,X
CMP #$98 ; '˜'
BEQ loc_C3E8
BCS locret_C3E7
CLC
ADC #3
CMP #$98 ; '˜'
BCS loc_C3E8
locret_C3E7: ; C3DEj C3F0j
RTS
; ---------------------------------------------------------------------------
loc_C3E8: ; C3DCj C3E5j
LDA #$98 ; '˜'
JSR sub_C447
RTS
; End of function sub_C3CE
; =============== S U B R O U T I N E =======================================
; Collisions.
sub_C3EE: ; loc_B2B9p loc_C38Fp
; FUNCTION CHUNK AT C499 SIZE 00000006 BYTES
LDY 0
BMI locret_C3E7
loc_C3F2: ; C429j
LDA tbl_unk_C7CE,Y
CMP #$10
BCC loc_C3FC
SEC
SBC #$C
loc_C3FC: ; C3F7j
CMP $350,X
BEQ loc_C403
BCS loc_C426
loc_C403: ; C3FFj
LDA tbl_unk_C851,Y
CMP #$F8 ; 'ø'
BCS loc_C40D
SEC
SBC #4
loc_C40D: ; C408j
CMP $350,X
BCC loc_C426
LDA $A
SEC
SBC #1
CMP tbl_unk_C6C8,Y
BEQ loc_C43B
BCS loc_C426
CLC
ADC #3
CMP tbl_unk_C6C8,Y
BCS loc_C43B
loc_C426: ; C401j C410j ...
INY
CPY 1
BNE loc_C3F2
CPX #9
BCS locret_C49E
LDA $3CA,X
BEQ loc_C437
JSR sub_A812
loc_C437: ; C432j
LDA #0
BEQ loc_C495
loc_C43B: ; C41Aj C424j
INC $CB
CPX #9
BCS loc_C499
LDA tbl_unk_C6C8,Y
SEC
SBC #$18
; End of function sub_C3EE
; =============== S U B R O U T I N E =======================================
; Collisions (under feets).
sub_C447: ; C3EAp
STA $37E,X
LDA #0
STA $391,X
STA $3A9,X
LDA #$40 ; '@'
STA $3B5,X
LDA $3D2,X
CMP #$20 ; ' '
BEQ loc_C472
BCC loc_C464
LDA #1
BNE loc_C466
loc_C464: ; C45Ej
LDA #2
loc_C466: ; C462j
STA $F
LDA $3C1,X
AND #$F0 ; 'ð'
ORA $F
STA $3C1,X
loc_C472: ; C45Cj
CPX #2
BPL loc_C480
LDA #$C
STA $41E,X
LDA #$34 ; '4'
STA $426,X
loc_C480: ; C474j
CPX #2
BCS loc_C493
LDA $3CA,X
BNE loc_C493
CPX $15
BNE loc_C493
LDA $F0
ORA #8
STA $F0
loc_C493: ; C482j C487j ...
LDA #1
loc_C495: ; C439j
STA $3CA,X
RTS
; End of function sub_C447
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_C3EE
loc_C499: ; C43Fj
LDA #2
STA $7BC
locret_C49E: ; C42Dj
RTS
; END OF FUNCTION CHUNK FOR sub_C3EE
; =============== S U B R O U T I N E =======================================
; Collision (above balloons).
sub_C49F: ; C396p
LDY 0
BMI locret_C4DA
loc_C4A3: ; C4D8j
LDA $B
SEC
SBC #1
CMP tbl_unk_C74B,Y
BCS loc_C4D5
CLC
ADC #6
CMP tbl_unk_C74B,Y
BCC loc_C4D5
LDA tbl_unk_C7CE,Y
CMP #$10
BCC loc_C4BF
SEC
SBC #$E
loc_C4BF: ; C4BAj
CMP $350,X
BEQ loc_C4C6
BCS loc_C4D5
loc_C4C6: ; C4C2j
LDA tbl_unk_C851,Y
CMP #$F8 ; 'ø'
BCS loc_C4D0
SEC
SBC #3
loc_C4D0: ; C4CBj
CMP $350,X
BCS loc_C4DB
loc_C4D5: ; C4ABj C4B3j ...
INY
CPY 1
BNE loc_C4A3
locret_C4DA: ; C4A1j
RTS
; ---------------------------------------------------------------------------
loc_C4DB: ; C4D3j
INC $CB
CPX #9
BCS loc_C516
LDA $3A9,X
BPL locret_C515
LDA #0
SEC
SBC $3B5,X
STA $3B5,X
LDA #0
SBC $3A9,X
STA $3A9,X
LSR $3A9,X
ROR $3B5,X
CPX #2
BMI loc_C507
LSR $3A9,X
ROR $3B5,X
loc_C507: ; C4FFj loc_C64Bj
CPX #2
BCS locret_C515
CPX $15
BNE locret_C515
LDA $F1
ORA #2
STA $F1
locret_C515: ; C4E4j C509j ...
RTS
; ---------------------------------------------------------------------------
loc_C516: ; C4DFj
LDA #1
STA $7BC
RTS
; End of function sub_C49F
; =============== S U B R O U T I N E =======================================
; Collisions (left).
sub_C51C: ; B2C5p C399p
LDY 0
BMI loc_C54D
loc_C520: ; C54Bj
LDA $B
CMP tbl_unk_C74B,Y
BCS loc_C548
CMP #$E8 ; 'è'
BCS loc_C532
LDA $A
CMP tbl_unk_C6C8,Y
BCC loc_C548
loc_C532: ; C529j
LDA tbl_unk_C851,Y
CMP #$FF
BEQ loc_C548
LDA $D
CMP tbl_unk_C851,Y
BCS loc_C548
CLC
ADC #4
CMP tbl_unk_C851,Y
BCS loc_C55B
loc_C548: ; C525j C530j ...
INY
CPY 1
BNE loc_C520
loc_C54D: ; C51Ej
INC $CB
CPX #9
BCC locret_C55A
LDA $350,X
CMP #3
BCC loc_C59C
locret_C55A: ; C551j
RTS
; ---------------------------------------------------------------------------
loc_C55B: ; C546j
CPX #9
BCS loc_C59C
LDA $3DA,X
BNE loc_C5A5
LDY #1
LDA $3D2,X
CMP #$21 ; '!'
BCS loc_C581
CMP #$20 ; ' '
BNE loc_C578
LDA #$22 ; '"'
STA $3D2,X
BNE loc_C581
loc_C578: ; C56Fj
LDA #$40 ; '@'
SEC
SBC $3D2,X
STA $3D2,X
loc_C581: ; C56Bj C576j ...
TYA
STA $3C1,X
CPX #2
BCS locret_C59B
CPX $15
BNE locret_C59B
LDA $47,X
BNE locret_C59B
LDA #$10
STA $47,X
LDA $F1
ORA #2
STA $F1
locret_C59B: ; C587j C58Bj ...
RTS
; ---------------------------------------------------------------------------
loc_C59C: ; C558j C55Dj
LDA $7BC
ORA #4
STA $7BC
RTS
; ---------------------------------------------------------------------------
loc_C5A5: ; C562j
LDA #2
STA $E
RTS
; End of function sub_C51C
; =============== S U B R O U T I N E =======================================
; Collisions (right).
sub_C5AA: ; B2C8p C39Cp
LDY 0
BMI loc_C5D9
loc_C5AE: ; C5D7j
LDA tbl_unk_C7CE,Y
BEQ loc_C5D4
LDA $B
CMP tbl_unk_C74B,Y
BCS loc_C5D4
CMP #$E8 ; 'è'
BCS loc_C5C5
LDA $A
CMP tbl_unk_C6C8,Y
BCC loc_C5D4
loc_C5C5: ; C5BCj
LDA $C
CMP tbl_unk_C7CE,Y
BCC loc_C5D4
SEC
SBC #4
CMP tbl_unk_C7CE,Y
BCC loc_C5E7
loc_C5D4: ; C5B1j C5B8j ...
INY
CPY 1
BNE loc_C5AE
loc_C5D9: ; C5ACj
INC $CB
CPX #9
BCC locret_C5E6
LDA $350,X
CMP #$FD ; 'ý'
BCS loc_C610
locret_C5E6: ; C5DDj
RTS
; ---------------------------------------------------------------------------
loc_C5E7: ; C5D2j
CPX #9
BCS loc_C610
LDA $3DA,X
BNE loc_C619
LDA $3D2,X
CMP #$20 ; ' '
BCC loc_C60B
CMP #$20 ; ' '
BNE loc_C602
LDA #$1E
STA $3D2,X
BNE loc_C60B
loc_C602: ; C5F9j
LDA #$40 ; '@'
SEC
SBC $3D2,X
STA $3D2,X
loc_C60B: ; C5F5j C600j
LDY #2
JMP loc_C581
; ---------------------------------------------------------------------------
loc_C610: ; C5E4j C5E9j
LDA $7BC
ORA #8
STA $7BC
RTS
; ---------------------------------------------------------------------------
loc_C619: ; C5EEj
LDA #1
STA $E
RTS
; End of function sub_C5AA
; =============== S U B R O U T I N E =======================================
; Upper bound checking.
sub_C61E: ; C383p C3D3p
LDA $37E,X
CMP #$10
BCS locret_C64E
INC $CB
CPX #9
BCS loc_C64F
LDA #$10
STA $37E,X
LDA #0
SEC
SBC $3B5,X
STA $3B5,X
LDA #0
SBC $3A9,X
STA $3A9,X
CPX #2
BCC loc_C64B
LSR $3A9,X
ROR $3B5,X
loc_C64B: ; C643j
JMP loc_C507
; ---------------------------------------------------------------------------
locret_C64E: ; C623j
RTS
; ---------------------------------------------------------------------------
loc_C64F: ; C629j
LDA #1
STA $7BC
RTS
; End of function sub_C61E
; ---------------------------------------------------------------------------
tbl_unk_C655: .BYTE 0 ; loc_C685r
; Array size: 19 bytes
tbl_unk_C656: .BYTE 3, 4, 6, $B, $11, $17, $1C, $1F, $27, $2B, $2C, $2F, $32, $34, $3A, $3D
; C68Ar
.BYTE $41, $42
tbl_unk_C668: .BYTE $42 ; loc_C6A8r
; Array size: 18 bytes
tbl_unk_C669: .BYTE $44, $45, $48, $4D, $51, $56, $5A, $5D, $60, $64, $6A, $6E, $73, $78, $7C, $7E
; C6ADr
.BYTE $83
; =============== S U B R O U T I N E =======================================
sub_C67A: ; B2B0p C380p
LDY #0
LDA $37E,X
CMP #$BC ; '¼'
BCS loc_C685
LDY $9E
loc_C685: ; C681j
LDA tbl_unk_C655,Y
STA 0
LDA tbl_unk_C656,Y
CPY #0
BNE loc_C69A
LDY $9E
CPY #3
BEQ loc_C69A
SEC
SBC #1
loc_C69A: ; C68Fj C695j
STA 1
RTS
; End of function sub_C67A
; =============== S U B R O U T I N E =======================================
sub_C69D: ; loc_B2B6p loc_C38Cp
LDY #0
LDA $37E,X
CMP #$7C ; '|'
BCS loc_C6A8
LDY $9F
loc_C6A8: ; C6A4j
LDA tbl_unk_C668,Y
STA 0
LDA tbl_unk_C669,Y
STA 1
RTS
; End of function sub_C69D
; =============== S U B R O U T I N E =======================================
sub_C6B3: ; loc_B2A8p C378p
LDA $37E,X
STA $B
CLC
ADC #$18
STA $A
LDA $350,X
STA $D
CLC
ADC #$10
STA $C
RTS
; End of function sub_C6B3
; ---------------------------------------------------------------------------
tbl_unk_C6C8: .BYTE $D8, $D8, $E8, $78, $48, $48, $38, $78, $78, $A0, $A0, $28, $28, $58, $58, $88
; C417r C421r ...
.BYTE $88, $40, $40, $40, $40, $90, $90, $50, $50, $50, $50, $A8, $48, $90, $90, $38 ; Table size of 131 bytes.
.BYTE $38, $40, $40, $40, $40, $98, $98, $50, $50, $58, $58, $48, $40, $70, $70, $68
.BYTE $68, $B0, $68, $68, $30, $30, $70, $70, $A8, $A8, $78, $78, $98, $30, $30, $A0
.BYTE $A0, $00, $98, $98, $48, $48, $48, $68, $20, $38, $38, $70, $70, $20, $20, $20
.BYTE $20, $20, $20, $20, $20, $48, $20, $20, $40, $40, $20, $40, $40, $28, $28, $68
.BYTE $20, $20, $20, $20, $20, $20, $20, $20, $48, $48, $20, $20, $40, $40, $20, $20
.BYTE $20, $20, $68, $28, $28, $58, $58, $68, $20, $20, $68, $68, $68, $68, $20, $20
.BYTE $20, $20, $68
tbl_unk_C74B: .BYTE $F4, $F4, $F0, $80, $50, $50, $40, $80, $80, $A8, $A8, $30, $50, $60, $80, $90
; C4A8r C4B0r ...
.BYTE $B0, $48, $80, $48, $80, $98, $B0, $58, $A0, $58, $A0, $B0, $50, $98, $98, $40 ; Table size of 131 bytes.
.BYTE $40, $48, $80, $48, $80, $A0, $A0, $58, $58, $60, $A0, $50, $48, $78, $78, $70
.BYTE $70, $B8, $70, $70, $38, $58, $78, $78, $B0, $C0, $80, $80, $A0, $38, $70, $A8
.BYTE $A8, $00, $C0, $C0, $50, $50, $50, $70, $28, $40, $40, $78, $78, $28, $50, $28
.BYTE $50, $28, $50, $28, $50, $50, $28, $50, $48, $48, $28, $48, $48, $30, $30, $70
.BYTE $28, $60, $28, $60, $28, $50, $28, $50, $50, $50, $28, $50, $48, $48, $28, $50
.BYTE $28, $50, $70, $30, $30, $60, $60, $70, $28, $28, $70, $70, $70, $70, $28, $60
.BYTE $28, $60, $70
tbl_unk_C7CE: .BYTE $00, $BC, $7C, $5C, $44, $A4, $5C, $00, $E4, $3C, $A4, $5C, $62, $9C, $A2, $5C
; loc_C3F2r C4B5r ...
.BYTE $62, $44, $4A, $A4, $AA, $74, $7A, $2C, $32, $C4, $CA, $74, $54, $24, $A4, $24 ; Table size of 131 bytes.
.BYTE $C4, $54, $52, $A4, $AA, $00, $D4, $44, $9C, $74, $7A, $54, $6C, $54, $9C, $3C
.BYTE $B4, $7C, $24, $C4, $74, $7A, $44, $A4, $74, $7A, $14, $D4, $74, $74, $7A, $44
.BYTE $B4, $00, $00, $C4, $54, $44, $A4, $74, $64, $2C, $C4, $4C, $A4, $4C, $52, $A4
.BYTE $AA, $34, $3A, $C4, $CA, $6C, $7C, $82, $3C, $B4, $6C, $00, $CC, $34, $A4, $5C
.BYTE $3C, $42, $9C, $BA, $34, $52, $A4, $AA, $00, $DC, $74, $7A, $34, $A4, $14, $1A
.BYTE $D4, $E2, $64, $00, $BC, $00, $E4, $64, $24, $C4, $4C, $A4, $4C, $9C, $34, $3A
.BYTE $BC, $C2, $74
tbl_unk_C851: .BYTE $44, $FF, $84, $A4, $5C, $BC, $A4, $1C, $FF, $5C, $C4, $6C, $66, $AC, $A6, $6C
; loc_C403r loc_C4C6r ...
.BYTE $66, $54, $4E, $B4, $AE, $84, $7E, $3C, $36, $D4, $CE, $8C, $AC, $5C, $DC, $3C ; Table size of 131 bytes.
.BYTE $DC, $5C, $56, $AC, $AE, $2C, $FF, $5C, $B4, $84, $7E, $AC, $94, $64, $AC, $4C
.BYTE $C4, $84, $3C, $DC, $84, $7E, $54, $B4, $84, $7E, $2C, $EC, $8C, $84, $7E, $54
.BYTE $C4, $00, $3C, $FF, $AC, $5C, $BC, $8C, $9C, $3C, $D4, $5C, $B4, $5C, $56, $B4
.BYTE $AE, $44, $3E, $D4, $CE, $94, $8C, $86, $54, $CC, $94, $34, $FF, $5C, $CC, $A4
.BYTE $64, $46, $C4, $BE, $5C, $56, $CC, $AE, $24, $FF, $84, $7E, $54, $C4, $2C, $1E
.BYTE $EC, $E6, $9C, $44, $FF, $1C, $FF, $9C, $3C, $DC, $64, $BC, $64, $B4, $44, $3E
.BYTE $CC, $C6, $8C
;unknown_data01: .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; =============== S U B R O U T I N E =======================================
sub_C8F0: ; A4E0p
LDA $65
BNE loc_C8F5
RTS
; ---------------------------------------------------------------------------
loc_C8F5: ; C8F2j
LDX #0
LDY #1
LDA $3DA,X
BEQ loc_C905
AND #$F0 ; 'ð'
BEQ loc_C905
loc_C902: ; C90Cj C91Ej ...
JMP loc_C9C5
; ---------------------------------------------------------------------------
loc_C905: ; C8FCj C900j
LDA $3DA,Y
BEQ loc_C90E
AND #$F0 ; 'ð'
BNE loc_C902
loc_C90E: ; C908j
LDA $350,X
SEC
SBC $350,Y
BPL loc_C91C
EOR #$FF
CLC
ADC #1
loc_C91C: ; C915j
CMP #$E
BCS loc_C902
JSR sub_CCA3
LDA 4
BNE loc_C902
LDA 5
CMP #$19
BCS loc_C902
CMP #5
BCC loc_C988
LDA $F
BNE loc_C93B
TXA
PHA
TYA
TAX
PLA
TAY
loc_C93B: ; C933j
JSR sub_CCEF
LDA $6C
BEQ loc_C94E
LDA $3D2,X
CMP #$20 ; ' '
BNE loc_C94E
LDA #$3A ; ':'
STA $3D2,X
loc_C94E: ; C940j C947j
TXA
PHA
TYA
TAX
PLA
TAY
LDA $3DA,X
BNE loc_C985
LDA #$FF
STA $416,X
LDA #1
STA $3EA,X
DEC $3E2,X
LDA $3E2,X
STA $42E,X
BPL loc_C973
LDA #0
STA $3E2,X
loc_C973: ; C96Cj
LDA $F0
ORA #2
STA $F0
LDA $6C
BNE loc_C985
LDA #0
STA $495
JSR sub_D0D6
loc_C985: ; C957j C97Bj
JMP loc_C9C5
; ---------------------------------------------------------------------------
loc_C988: ; C92Fj
LDA $3CA,X
BNE loc_C9CD
LDA $3CA,Y
BNE loc_C9CD
loc_C992: ; C9D3j
LDA $F1
ORA #2
STA $F1
LDA $350,X
SEC
SBC $350,Y
BPL loc_C9A7
TXA
PHA
TYA
TAX
PLA
TAY
loc_C9A7: ; C99Fj
LDA $3DA,X
BNE loc_C9B6
LDA #$34 ; '4'
STA $3D2,X
LDA #1
STA $3C1,X
loc_C9B6: ; C9AAj
LDA $3DA,Y
BNE loc_C9C5
LDA #$E
STA $3D2,Y
LDA #2
STA $3C1,Y
loc_C9C5: ; loc_C902j loc_C985j ...
LDA #0
STA $8C,X
STA $8C,Y
RTS
; ---------------------------------------------------------------------------
loc_C9CD: ; C98Bj C990j
LDA $3DA,X
ORA $3DA,Y
BNE loc_C992
LDA $82,X
ORA $82,Y
BEQ loc_C9C5
LDA $8C,X
CMP #$FF
BEQ loc_C9E6
LDA $82,X
BEQ loc_C9F9
loc_C9E6: ; C9E0j
LDA $8C,Y
CMP #$FF
BEQ loc_C9F2
LDA $82,Y
BEQ loc_C9F9
loc_C9F2: ; C9EBj
LDA $8C,X
ORA $8C,Y
BNE locret_CA54
loc_C9F9: ; C9E4j C9F0j
LDA #0
STA $8C,X
STA $8C,Y
LDA $82,X
BNE loc_CA08
LDA #$FF
BNE loc_CA18
loc_CA08: ; CA02j
LDA $350,X
SEC
SBC $350,Y
BPL loc_CA16
LDA #1
JMP loc_CA18
; ---------------------------------------------------------------------------
loc_CA16: ; CA0Fj
LDA #2
loc_CA18: ; CA06j CA13j
STA $8C,X
LDA $82,Y
BNE loc_CA23
LDA #$FF
BNE loc_CA33
loc_CA23: ; CA1Dj
LDA $350,Y
SEC
SBC $350,X
BPL loc_CA31
LDA #1
JMP loc_CA33
; ---------------------------------------------------------------------------
loc_CA31: ; CA2Aj
LDA #2
loc_CA33: ; CA21j CA2Ej
STA $8C,Y
ORA $8C,X
CMP #$FF
BEQ locret_CA54
LDA $F1
ORA #2
STA $F1
LDA #$40 ; '@'
SEC
SBC $3D2,X
STA $3D2,X
LDA #$40 ; '@'
SEC
SBC $3D2,Y
STA $3D2,Y
locret_CA54: ; C9F7j CA3Aj
RTS
; End of function sub_C8F0
; =============== S U B R O U T I N E =======================================
sub_CA55: ; A5EEp
LDA $3DA,X
BEQ loc_CA5B
RTS
; ---------------------------------------------------------------------------
loc_CA5B: ; CA58j
TXA
TAY
DEY
loc_CA5E: ; CB65j
CPY #2
BCS loc_CA67
LDA $62,Y
BEQ loc_CA82
loc_CA67: ; CA60j
LDA $3DA,Y
BEQ loc_CA70
AND #$F0 ; 'ð'
BNE loc_CA82
loc_CA70: ; CA6Aj
LDA $350,X
SEC
SBC $350,Y
BPL loc_CA7E
EOR #$FF
CLC
ADC #1
loc_CA7E: ; CA77j
CMP #$E
BCC loc_CA85
loc_CA82: ; CA65j CA6Ej ...
JMP loc_CB62
; ---------------------------------------------------------------------------
loc_CA85: ; CA80j
JSR sub_CCA3
LDA 4
BNE loc_CA82
LDA 5
CMP #$19
BCS loc_CA82
CPY #2
BCC loc_CA99
JMP loc_CB0C
; ---------------------------------------------------------------------------
loc_CA99: ; CA94j
CMP #5
BCS loc_CAA0
JMP loc_CB06
; ---------------------------------------------------------------------------
loc_CAA0: ; CA9Bj
LDA $F
BNE loc_CAD2
STX 0
STY 1
LDX 1
LDY 0
JSR sub_CCEF
LDX 0
LDY 1
TYA
STA $574,X
JSR sub_D0D6
LDA #1
STA $3EA,X
DEC $3E2,X
LDA $3E2,X
STA $42E,X
BPL loc_CACF
LDA #0
STA $3E2,X
loc_CACF: ; CAC8j
JMP loc_CAFD
; ---------------------------------------------------------------------------
loc_CAD2: ; CAA2j
JSR sub_CCEF
LDA $3DA,Y
BNE loc_CB03
TXA
PHA
TYA
PHA
TAX
LDA #$FF
STA $416,X
LDA #1
STA $3EA,X
DEC $3E2,X
LDA $3E2,X
STA $42E,X
BPL loc_CAF9
LDA #0
STA $3E2,X
loc_CAF9: ; CAF2j
PLA
TAY
PLA
TAX
loc_CAFD: ; loc_CACFj
LDA $F0
ORA #2
STA $F0
loc_CB03: ; CAD8j
JMP loc_CB62
; ---------------------------------------------------------------------------
loc_CB06: ; CA9Dj
LDA $F1
ORA #2
STA $F1
loc_CB0C: ; CA96j
LDA $3D2,Y
CMP #$20 ; ' '
BCS loc_CB20
LDA $350,Y
SEC
SBC $350,X
BMI loc_CB37
LDA #1
BNE loc_CB2B
loc_CB20: ; CB11j
LDA $350,Y
SEC
SBC $350,X
BPL loc_CB37
LDA #2
loc_CB2B: ; CB1Ej
STA $3C1,Y
LDA #$40 ; '@'
SEC
SBC $3D2,Y
STA $3D2,Y
loc_CB37: ; CB1Aj CB27j
LDA $3D2,X
CMP #$20 ; ' '
BCS loc_CB4B
LDA $350,X
SEC
SBC $350,Y
BMI loc_CB62
LDA #1
BNE loc_CB56
loc_CB4B: ; CB3Cj
LDA $350,X
SEC
SBC $350,Y
BPL loc_CB62
LDA #2
loc_CB56: ; CB49j
STA $3C1,X
LDA #$40 ; '@'
SEC
SBC $3D2,X
STA $3D2,X
loc_CB62: ; loc_CA82j loc_CB03j ...
DEY
BMI locret_CB68
JMP loc_CA5E
; ---------------------------------------------------------------------------
locret_CB68: ; CB63j
RTS
; End of function sub_CA55
; =============== S U B R O U T I N E =======================================
sub_CB69: ; A6ECp A743p
TXA
PHA
LDY #1
loc_CB6D: ; CBC1j
LDA $62,Y
BEQ loc_CBC0
LDA $3DA,Y
BNE loc_CBC0
LDA $350,X
SEC
SBC $350,Y
BPL loc_CB85
EOR #$FF
CLC
ADC #1
loc_CB85: ; CB7Ej
CMP #$C
BCS loc_CBC0
JSR sub_CCA3
LDA 4
BNE loc_CBC0
LDA $F
BNE loc_CB98
LDA #$12
BNE loc_CB9A
loc_CB98: ; CB92j
LDA #$C
loc_CB9A: ; CB96j
CMP 5
BCC loc_CBC0
LDA $F0
ORA #2
STA $F0
sta bubble_flag
LDA $3DA,X
AND #$F0 ; 'ð'
CMP #$C0 ; 'À'
BNE loc_CBB7
TYA
STA $574,X
JSR sub_D0D6
JMP loc_CBBB
; ---------------------------------------------------------------------------
loc_CBB7: ; CBABj
TYA
TAX
INC $97,X
loc_CBBB: ; CBB4j
PLA
TAX
LDA #1
RTS
; ---------------------------------------------------------------------------
loc_CBC0: ; CB70j CB75j ...
DEY
BPL loc_CB6D
PLA
TAX
LDA #0
RTS
; End of function sub_CB69
; =============== S U B R O U T I N E =======================================
sub_CBC8: ; A64Dp
LDY #1
loc_CBCA: ; CC18j
LDA $62,Y
BEQ loc_CC17
LDA $3DA,Y
BNE loc_CC17
STA $F
LDA $37D
STA 0
LDA $390
STA 1
JSR sub_CCB1
LDA 4
BNE loc_CC17
LDA $F
BNE loc_CC17
LDA 5
CMP #$15
BCS loc_CC17
LDA $362
SEC
SBC $350,Y
BPL loc_CBFF
EOR #$FF
CLC
ADC #1
loc_CBFF: ; CBF8j
CMP #$10
BCS loc_CC17
LDA #$FF
STA $416,Y
LDA #0
STA $3E2,Y
STA $42E,Y
LDA $F0
ORA #2
STA $F0
RTS
; ---------------------------------------------------------------------------
loc_CC17: ; CBCDj CBD2j ...
DEY
BPL loc_CBCA
RTS
; End of function sub_CBC8
; =============== S U B R O U T I N E =======================================
sub_CC1B: ; sub_B296p loc_B366p ...
STX $D
LDA #0
STA $E
LDY #1
loc_CC23: ; CC30j
LDA $62,Y
BEQ loc_CC2B
JSR sub_CC43
loc_CC2B: ; CC26j
LDA $E
BNE loc_CC40
DEY
BPL loc_CC23
LDY #2
loc_CC34: ; CC3Ej
JSR sub_CC43
LDA #0
STA $E
INY
CPY #8
BCC loc_CC34
loc_CC40: ; CC2Dj
LDX $D
RTS
; End of function sub_CC1B
; =============== S U B R O U T I N E =======================================
sub_CC43: ; CC28p loc_CC34p
CPY $D
BEQ loc_CC4C
LDA $3DA,Y
BEQ loc_CC4F
loc_CC4C: ; CC45j
JMP locret_CCA2
; ---------------------------------------------------------------------------
loc_CC4F: ; CC4Aj
LDA $350,Y
SEC
SBC $350,X
BPL loc_CC5D
EOR #$FF
CLC
ADC #1
loc_CC5D: ; CC56j
CMP #$C
BCS locret_CCA2
JSR sub_CCA3
LDA 4
BNE locret_CCA2
LDA 5
CMP #$10
BCS locret_CCA2
CPY #2
BCS loc_CC77
LDA $3CA,X
BNE loc_CC93
loc_CC77: ; CC70j
STX 0
STY 1
LDA $F
BNE loc_CC83
LDX 1
LDY 0
loc_CC83: ; CC7Dj
JSR sub_CCEF
LDX 0
LDY 1
LDA $3CA,X
BNE loc_CC93
LDA $F
BNE locret_CCA2
loc_CC93: ; CC75j CC8Dj
CPY #2
BCS locret_CCA2
TYA
STA $574,X
JSR sub_D0D6
LDA #1
STA $E
locret_CCA2: ; loc_CC4Cj CC5Fj ...
RTS
; End of function sub_CC43
; =============== S U B R O U T I N E =======================================
sub_CCA3: ; B8BCp BE23p ...
LDA #0
STA $F
LDA $36B,X
STA 0
LDA $37E,X
STA 1
; End of function sub_CCA3
; =============== S U B R O U T I N E =======================================
sub_CCB1: ; C267p CBE0p
LDA $36B,Y
STA 2
LDA $37E,Y
STA 3
LDA 0
CMP 2
BEQ loc_CCC5
BCC loc_CCCB
BCS loc_CCE1
loc_CCC5: ; CCBFj
LDA 1
CMP 3
BCS loc_CCE1
loc_CCCB: ; CCC1j
LDA 1
PHA
LDA 0
PHA
LDA 2
STA 0
LDA 3
STA 1
PLA
STA 2
PLA
STA 3
INC $F
loc_CCE1: ; CCC3j CCC9j
LDA 1
SEC
SBC 3
STA 5
LDA 0
SBC 2
STA 4
RTS
; End of function sub_CCB1
; =============== S U B R O U T I N E =======================================
sub_CCEF: ; loc_C93Bp CAACp ...
LDA #0
STA $3B5,X
STA $3B5,Y
LDA #$FF
STA $3A9,X
LDA #1
STA $3A9,Y
JSR sub_CD10
TXA
PHA
TYA
TAX
JSR sub_CD10
TXA
TAY
PLA
TAX
RTS
; End of function sub_CCEF
; =============== S U B R O U T I N E =======================================
sub_CD10: ; CD01p CD08p
LDA $3DA,X
BNE locret_CD33
TYA
PHA
LDA $3D2,X
CMP #$20 ; ' '
BEQ loc_CD31
BCS loc_CD26
LDA #$28 ; '('
LDY #1
BNE loc_CD2A
loc_CD26: ; CD1Ej
LDA #$18
LDY #2
loc_CD2A: ; CD24j
STA $3D2,X
TYA
STA $3C1,X
loc_CD31: ; CD1Cj
PLA
TAY
locret_CD33: ; CD13j
RTS
; End of function sub_CD10
; =============== S U B R O U T I N E =======================================
nullsub_1: ; 97F0p
RTS
; End of function nullsub_1
; =============== S U B R O U T I N E =======================================
sub_CD35: ; loc_A5A3p A61Cp
JSR sub_B785
RTS
; End of function sub_CD35
; =============== S U B R O U T I N E =======================================
sub_CD40: ; 972Bp
LDA 1
STA 2
LDA #$7C ; '|'
STA 3
LDX #0
loc_CD4A: ; CD6Fj
LDA 0
STA $301,X
LDA 1
STA $302,X
INC 1
LDA #$84 ; '„'
STA $303,X
LDY #0
loc_CD5D: ; CD68j
LDA 3
STA $304,X
INC 3
INX
INY
CPY #4
BCC loc_CD5D
INX
INX
INX
CPX #$1C
BCC loc_CD4A
LDX #$23 ; '#'
LDA 0
AND #8
BEQ loc_CD7B
LDX #$2B ; '+'
loc_CD7B: ; CD77j
STX $31D
LDA 2
LSR A
LSR A
AND #7
PHA
LDA 0
AND #3
STA 0
LDA 2
AND #$80 ; '€'
STA 2
LDY #3
loc_CD93: ; CD98j
LSR 0
ROR 2
DEY
BPL loc_CD93
PLA
CLC
ADC 2
CLC
ADC #$C0 ; 'À'
STA $31E
LDA #1
STA $31F
LDA #$FF
STA $320
LDA #0
STA $321
RTS
; End of function sub_CD40
; ---------------------------------------------------------------------------
tbl_unk_CDB4: .BYTE $D0 ; CE24r CE3Ar ...
.BYTE $E0
tbl_unk_CDB6: .BYTE $D1 ; CE2Fr CE51r
.BYTE $E1
; =============== S U B R O U T I N E =======================================
sub_CDB8: ; A59Dp
LDA $69
CMP #$A
BEQ locret_CE00
LDA $3DA,X
BNE loc_CDF9
LDA $7CF
SEC
SBC $13
STA $7CE
LDA $36B,X
STA 6
LDA $37E,X
STA 7
LDA $17
ORA $19
AND #8
BEQ loc_CE01
LDA #$88 ; 'ˆ'
JSR sub_CF2A
BMI loc_CE01
LDY #$FF
LDA $3CA,X
BNE loc_CDF3
LDA $7CE
BEQ loc_CDF3
BMI loc_CDF9
loc_CDF3: ; CDEAj CDEFj
LDY #$FE ; 'þ'
LDA $7A
BNE loc_CE29
loc_CDF9: ; CDC1j CDF1j ...
LDA $13
STA $7CF
LDX $15
locret_CE00: ; CDBCj
RTS
; ---------------------------------------------------------------------------
loc_CE01: ; CDDCj CDE3j
LDA $17
ORA $19
AND #4
BEQ loc_CDF9
LDA #$46 ; 'F'
JSR sub_CF2A
BPL loc_CDF9
LDY #1
LDA $3CA,X
BNE loc_CE1E
LDA $7CE
BEQ loc_CE20
BPL loc_CDF9
loc_CE1E: ; CE15j
LDY #2
loc_CE20: ; CE1Aj
LDX $6C
LDA $7A
CMP tbl_unk_CDB4,X
BCS loc_CDF9
loc_CE29: ; CDF7j
TYA
CLC
ADC $7A
LDX $6C
CMP tbl_unk_CDB6,X
BCC loc_CE3E
LDY #0
CMP #$F0 ; 'ð'
BCS loc_CE3D
LDY tbl_unk_CDB4,X
loc_CE3D: ; CE38j
TYA
loc_CE3E: ; CE32j
PHA
LDA $13
STA $7CF
PLA
LDX $15
JMP sub_CF06
; End of function sub_CDB8
; =============== S U B R O U T I N E =======================================
sub_CE4A: ; A59Ap sub_B12Ep
LDY $6C
LDA tbl_unk_CDB4,Y
STA $A
LDA tbl_unk_CDB6,Y
STA $B
LDA $7D,X
BNE locret_CEBE
LDA $36B,X
STA 6
LDA $37E,X
STA 7
LDA $36B,X
CMP $77
BNE loc_CE72
LDA $37E,X
CMP $78
BEQ loc_CEBB
loc_CE72: ; CE69j
LDA $78
STA 1
LDA $77
JSR sub_CF37
LDA $E
ORA $F
BEQ locret_CEBE
LDA $E
BMI loc_CEC6
LDY #$FD ; 'ý'
LDA #$18
JSR sub_CF2A
BPL loc_CEAB
INY
LDA #$30 ; '0'
JSR sub_CF2A
BPL loc_CEAB
INY
LDA #$38 ; '8'
JSR sub_CF2A
BPL loc_CEAB
LDA #$40 ; '@'
JSR sub_CF2A
BMI loc_CEBF
LDA $64
AND #1
BNE loc_CEBB
loc_CEAB: ; CE8Cj CE94j ...
STY 0
LDA $7A
CLC
ADC 0
CMP $B
BCC loc_CEB8
LDA #0
loc_CEB8: ; CEB4j
JSR sub_CF06
loc_CEBB: ; CE70j CEA9j ...
JSR sub_CF1B
locret_CEBE: ; CE58j CE7Fj ...
RTS
; ---------------------------------------------------------------------------
loc_CEBF: ; CEA3j
LDA $3A9,X
BEQ locret_CEBE
BMI locret_CEBE
loc_CEC6: ; CE83j
LDA 7
CLC
ADC #$18
STA 7
LDA 6
ADC #0
STA 6
LDY #3
LDA #$C8 ; 'È'
JSR sub_CF2A
BMI loc_CEF9
DEY
LDA #$B8 ; '¸'
JSR sub_CF2A
BMI loc_CEF9
DEY
LDA #$A0 ; ' '
JSR sub_CF2A
BMI loc_CEF9
LDA #$90 ; ''
JSR sub_CF2A
BPL locret_CEBE
LDA $64
AND #1
BNE loc_CEBB
loc_CEF9: ; CEDAj CEE2j ...
STY 0
LDA $7A
CLC
ADC 0
CMP $B
BCC sub_CF06
LDA $A
; End of function sub_CE4A
; =============== S U B R O U T I N E =======================================
sub_CF06: ; CE47j loc_CEB8p ...
CPX $15
BNE locret_CF29
STA $7A
STA $13
LDA $7A
CLC
ADC #$F0 ; 'ð'
STA $7C
LDA #0
ADC #0
STA $7B
; End of function sub_CF06
; =============== S U B R O U T I N E =======================================
sub_CF1B: ; AF9Bp loc_CEBBp
CPX $15
BNE locret_CF29
LDA $36B,X
STA $77
LDA $37E,X
STA $78
locret_CF29: ; CF08j CF1Dj
RTS
; End of function sub_CF1B
; =============== S U B R O U T I N E =======================================
sub_CF2A: ; CDE0p CE0Bp ...
STA 2
LDA $7A
CLC
ADC 2
STA 1
LDA #0
ADC #0
; End of function sub_CF2A
; =============== S U B R O U T I N E =======================================
sub_CF37: ; CE78p
STA 0
LDA 1
SEC
SBC 7
STA $F
LDA 0
SBC 6
STA $E
RTS
; End of function sub_CF37
; ---------------------------------------------------------------------------
tbl_unk_CF47: .BYTE 0, 0, 0, 0, 1, 1, 1 ; CF7Dr
tbl_unk_CF4E: .BYTE $3F, $7F, $BF, $FF, $3F, $6F, $BF ; CF85r
; =============== S U B R O U T I N E =======================================
sub_CF55: ; A4E7p
LDA #0
LDX #6
loc_CF59: ; CF5Dj
STA $4CE,X
DEX
BPL loc_CF59
LDY #0
loc_CF61: ; CF6Bj
JSR sub_CF78
LDA $65
BEQ loc_CF6D
INY
CPY #2
BCC loc_CF61
loc_CF6D: ; CF66j
LDY #2
loc_CF6F: ; CF75j
JSR sub_CF78
INY
CPY #8
BCC loc_CF6F
RTS
; End of function sub_CF55
; =============== S U B R O U T I N E =======================================
; Unknown. Every frame game cycle.
sub_CF78: ; loc_CF61p loc_CF6Fp
LDX #0
loc_CF7A: ; CF8Dj
LDA $36B,Y
CMP tbl_unk_CF47,X
BNE loc_CF8A
LDA $37E,Y
CMP tbl_unk_CF4E,X
BCC loc_CF91
loc_CF8A: ; CF80j
INX
CPX #7
BCC loc_CF7A
BCS loc_CF99
loc_CF91: ; CF88j
INC $4CE,X
TXA
STA $4C6,Y
RTS
; ---------------------------------------------------------------------------
loc_CF99: ; CF8Fj
LDA #$FF
STA $4C6,Y
RTS
; End of function sub_CF78
; =============== S U B R O U T I N E =======================================
sub_CF9F: ; A5E8p
LDY $4C6,X
BMI locret_CFE3
LDA $4CE,Y
CMP #4
BCC locret_CFE3
INY
CPY #7
BCS loc_CFC7
LDA $4CE,Y
CMP #3
BCS loc_CFC7
LDA $3C1,X
AND #3
ORA #4
STA $3C1,X
LDA #5
STA $42E,X
RTS
; ---------------------------------------------------------------------------
loc_CFC7: ; CFAEj CFB5j
DEY
DEY
CPY #7
BCS locret_CFE3
LDA $4CE,Y
CMP #3
BCS locret_CFE3
LDA $3C1,X
AND #3
ORA #8
STA $3C1,X
LDA #3
STA $42E,X
locret_CFE3: ; CFA2j CFA9j ...
RTS
; End of function sub_CF9F
; ---------------------------------------------------------------------------
CFE4_points_offsets_zp_29:
.BYTE 5 ; D002r
.BYTE 9
tbl_BONUS_REWARDS:
.BYTE 1 ; life for 10000 pts
.BYTE 2 ; life for 20000 pts
.BYTE 4 ; life for 40000 pts
.BYTE 0 ; no rewards
; =============== S U B R O U T I N E =======================================
sub_CFEA: ; A4F0p
LDX $15
JSR sub_CFF7
LDA $65
BEQ locret_D013
TXA
EOR #1
TAX
; End of function sub_CFEA
; =============== S U B R O U T I N E =======================================
; Bonus award?
sub_CFF7:
LDA $C9,X
BNE locret_D013
LDY dip_BONUS ; dip?
LDA tbl_BONUS_REWARDS,Y
BEQ loc_D011 ; dip == no rewards? branch
LDY CFE4_points_offsets_zp_29,X
CMP $29,Y ; cmp high digits with 1, 2 or 4 (10000, 20000, 40000 points)
BEQ loc_D00C
BCS locret_D013
loc_D00C: ; Increase lives
INC LIVES,X
JSR sub_D056
loc_D011:
INC $C9,X ; no reward
locret_D013:
RTS
; End of function sub_CFF7
; ---------------------------------------------------------------------------
unk_D014:
.BYTE $60
.BYTE $70
; =============== S U B R O U T I N E =======================================
sub_D016: ; loc_99BFp
LDA #$DA ; 'Ú'
STA 0
LDX #$FF
LDY #0
loc_D01E: ; D043j
INX
LDA #$68 ; 'h'
loc_D021: ; D041j D047j
STA $2C3,Y
PHA
LDA unk_D014,X
STA $2C0,Y
LDA 0
STA $2C1,Y
LDA #3
STA $2C2,Y
PLA
CLC
ADC #8
INC 0
INY
INY
INY
INY
CPY #$14
BCC loc_D021
BEQ loc_D01E
CPY #$28
BNE loc_D021
RTS
; End of function sub_D016
; ---------------------------------------------------------------------------
unk_D04A: .BYTE $23 ; # ; loc_D05Dr
.BYTE 0
.BYTE 6, $24, $24, $24, $24, $24, $24, 0
byte_D054: .BYTE $80 ; loc_D0B0r
byte_D055: .BYTE $9A ; loc_D09Ar
; =============== S U B R O U T I N E =======================================
sub_D056: ; 984Cp AEF4p ...
STX $F
LDX $300
LDY #0
loc_D05D: ; D067j
LDA unk_D04A,Y
STA $301,X
INX
INY
CPY #$A
BNE loc_D05D
LDY NT_ADDR_HI
LDX $F
LDA LIVES,X
TAX
LDA $F
BEQ loc_D07B
JSR sub_D08E
JMP loc_D07E
; ---------------------------------------------------------------------------
loc_D07B: ; D073j
JSR sub_D09E
loc_D07E: ; D078j
LDY NT_ADDR_HI
STA $302,Y
TYA
CLC
ADC #9
STA NT_ADDR_HI
LDX $F
RTS
; End of function sub_D056
; =============== S U B R O U T I N E =======================================
sub_D08E: ; D075p
LDA #$2A ; '*'
loc_D090: ; D097j
INY
DEX
BMI loc_D09A
STA $303,Y
JMP loc_D090
; ---------------------------------------------------------------------------
loc_D09A: ; D092j
LDA byte_D055
RTS
; End of function sub_D08E
; =============== S U B R O U T I N E =======================================
sub_D09E: ; loc_D07Bp
INY
INY
INY
INY
INY
INY
LDA #$2A ; '*'
loc_D0A6: ; D0ADj
DEY
DEX
BMI loc_D0B0
STA $304,Y
JMP loc_D0A6
; ---------------------------------------------------------------------------
loc_D0B0: ; D0A8j
LDA byte_D054
RTS
; End of function sub_D09E
; ---------------------------------------------------------------------------
tbl_unk_D0B4: .BYTE $F5, $F6, $F7, $F7, $F8, $F9, $F6, $F7, $F8, $F5, $F7
; D13Cr
tbl_unk_D0BF: .BYTE 5, 7, $10, $10, $15, $20, 7, $10, $15, 5, $10, $50 ; D15Fr
tbl_unk_D0CB: .BYTE $FF, 0, $FF, $FF, $FF, $FF, 0, $FF, $FF, $FF, $FF ; D142r
; D170r
; =============== S U B R O U T I N E =======================================
sub_D0D6: ; C982p CAB7p ...
STY $C
STX $D
LDA $3DA,X
STA $F
LDY $494
LDA #2
STA $5C,Y
LDX $C
LDA $37E,X
SEC
SBC #8
STA $38D,Y
LDA $36B,X
SBC #0
STA $37A,Y
LDA $350,X
CLC
ADC #$18
CMP #$F0 ; 'ð'
BCC loc_D106
LDA #$E0 ; 'à'
loc_D106: ; D102j
STA $35F,Y
TXA
BEQ loc_D10D
ASL A
loc_D10D: ; D10Aj
STA $E
LDX #$A
LDA $495
BEQ loc_D135
LDX #9
LDY $D
LDA $3DA,Y
AND #$F0 ; 'ð'
CMP #$C0 ; 'À'
BEQ loc_D135
LDX $454,Y
CMP #0
BEQ loc_D135
INX
INX
INX
LDA $3CA,Y
BEQ loc_D135
INX
INX
INX
loc_D135: ; D114j D121j ...
LDA $494
ASL A
ASL A
ASL A
TAY
LDA tbl_unk_D0B4,X
STA $2F1,Y
LDA tbl_unk_D0CB,X
CMP #1
LDA #0
ADC #$FA ; 'ú'
STA $2F5,Y
LDA $C
STA $2F2,Y
STA $2F6,Y
loc_D156: ; D177j
INC $47A
INC $47A
LDY $47A
LDA tbl_unk_D0BF,X
STA $47B,Y
LDA $C
CPX #$B
BEQ loc_D16D
ORA #8
loc_D16D: ; D169j
STA $47C,Y
LDA tbl_unk_D0CB,X
BNE loc_D17A
LDX #$B
JMP loc_D156
; ---------------------------------------------------------------------------
loc_D17A: ; D173j
LDA $494
EOR #1
STA $494
LDA #1
STA $495
LDX $D
LDY $C
RTS
; End of function sub_D0D6
; ---------------------------------------------------------------------------
tbl_unk_D18C: .BYTE $24, $FA ; D1B9r
.BYTE $FB, $FC
; =============== S U B R O U T I N E =======================================
sub_D190: ; 9295p loc_A513p
LDX $300
CPX #$24 ; '$'
BCS locret_D1D0
LDY #0
LDA #3
STA $F
LDA $1C
loc_D19F: ; D1C6j
AND #$7E ; '~'
TAY
LDA tbl_unk_D1D1,Y
STA $301,X
INY
LDA tbl_unk_D1D1,Y
STA $302,X
INY
LDA #1
STA $303,X
TYA
PHA
LDY $F
LDA tbl_unk_D18C,Y
STA $304,X
PLA
INX
INX
INX
INX
DEC $F
BPL loc_D19F
STX $300
LDA #0
STA $301,X
locret_D1D0: ; D195j
RTS
; End of function sub_D190
; ---------------------------------------------------------------------------
tbl_unk_D1D1: .BYTE $20, $41, $20, $49, $20, $69, $20, $6C, $20, $73, $20, $74, $20, $79, $20, $7E
; D1A2r D1A9r
.BYTE $20, $C0, $20, $DE, $21, 0, $21, $22, $21, $57, $21, $5D, $21, $6B, $21, $7D
.BYTE $21, $80, $21, 1, $21, $41, $21, $96, $21, $BE, $21, $C0, $21, $DC, $22, $21
.BYTE $22, $3E, $22, $40, $22, $53, $22, $72, $22, $C0, $22, $C4, $22, $DD, $22, $FE
.BYTE $23, $18, $23, $22, $23, $26, $23, $3B, $23, $3D, $23, $40, $23, $49, $23, $56
.BYTE $23, $59, $23, $6A, $23, $94, $23, $B5, $28, $B, $28, $20, $28, $36, $28, $43
.BYTE $28, $47, $28, $49, $28, $5B, $28, $64, $28, $69, $28, $78, $28, $74, $28, $9E
.BYTE $28, $C1, $29, $1D, $29, $3F, $29, $82, $29, $9F, $29, $C1, $29, $E2, $2A, $1E
;unknown_data02: .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
tbl_unk_D260: .BYTE 0, 6, $12, $18, $C, $1E ; loc_D2D5r
; =============== S U B R O U T I N E =======================================
sub_D266: ; B0D8p B1A1p ...
TXA
PHA
LDA $540,X
CMP #1
BEQ loc_D286
CMP #5
BCC loc_D289
JSR sub_D2B6
JSR sub_D5C2
CMP #$11
BEQ loc_D289
JSR sub_D5AE
JSR sub_D28C
PLA
TAX
RTS
; ---------------------------------------------------------------------------
loc_D286: ; D26Dj
JSR sub_D2E0
loc_D289: ; D271j D27Bj
PLA
TAX
RTS
; End of function sub_D266
; =============== S U B R O U T I N E =======================================
sub_D28C: ; D280p
JSR sub_D69B
CPX #2
BCS loc_D2A4
LDA $3E2,X
BNE locret_D2B5
LDA $8E
CLC
ADC #3
STA $203,Y
STA $20F,Y
RTS
; ---------------------------------------------------------------------------
loc_D2A4: ; D291j
LDA $8E
STA $207,Y
CLC
ADC #3
STA $203,Y
LDA $217,Y
STA $213,Y
locret_D2B5: ; D296j
RTS
; End of function sub_D28C
; =============== S U B R O U T I N E =======================================
sub_D2B6: ; D273p
LDY #5
CPX #2
BCS loc_D2D5
DEY
LDA $3E2,X
BEQ loc_D2D5
LDY #0
LDA $3CA,X
BEQ loc_D2D5
INY
LDA $4D6,X
BEQ loc_D2D5
INY
CMP #1
BEQ loc_D2D5
INY
loc_D2D5: ; D2BAj D2C0j ...
LDA tbl_unk_D260,Y
STA $91
LDY #5
JSR sub_DA7D
RTS
; End of function sub_D2B6
; =============== S U B R O U T I N E =======================================
sub_D2E0: ; loc_D286p
CPX #2
BCS locret_D312
LDA #$F0 ; 'ð'
STA $88,X
STA $8A,X
LDA $3E2,X
BEQ locret_D312
; End of function sub_D2E0
; =============== S U B R O U T I N E =======================================
sub_D2EF: ; 9D93p loc_A5A0p ...
TXA
PHA
CPX #2
BCS loc_D2FA
LDA $3CA,X
BNE loc_D300
loc_D2FA: ; D2F3j
JSR sub_D82B
JMP loc_D303
; ---------------------------------------------------------------------------
loc_D300: ; D2F8j
JSR sub_D881
loc_D303: ; D2FDj
JSR sub_D5C2
CMP #$11
BEQ loc_D310
JSR sub_D5AE
JSR sub_D69B
loc_D310: ; D308j
PLA
TAX
locret_D312: ; D2E2j D2EDj
RTS
; End of function sub_D2EF
; ---------------------------------------------------------------------------
tbl_unk_D313: .BYTE 1 ; D32Ar
.BYTE 3
tbl_unk_D315: .BYTE $C4 ; Ä ; D33Br
.BYTE $BF ; ¿
tbl_unk_D317: .BYTE $C9 ; É ; D336r
.BYTE $C4 ; Ä
; =============== S U B R O U T I N E =======================================
sub_D319: ; A650p
LDX #0
LDA $7D3
LSR A
BCC loc_D323
LDX #4
loc_D323: ; D31Fj
LDY #1
loc_D325: ; D34Fj
LDA $7D0,Y
BNE loc_D341
LDA tbl_unk_D313,Y
STA $7D0,Y
INC $2D9,X
LDA $2D9,X
CMP tbl_unk_D317,Y
BNE loc_D341
LDA tbl_unk_D315,Y
STA $2D9,X
loc_D341: ; D328j D339j
TXA
EOR #4
TAX
LDA $7D0,Y
SEC
SBC #1
STA $7D0,Y
DEY
BPL loc_D325
LDX #$12
JSR sub_D5C2
BEQ loc_D35C
LDA #$F8 ; 'ø'
STA $8F
loc_D35C: ; D356j
LDA $8E
STA $2DB
CLC
ADC #8
STA $2DF
LDA $8F
STA $2D8
STA $2DC
RTS
; End of function sub_D319
; =============== S U B R O U T I N E =======================================
sub_D370: ; loc_9C7Cp loc_A102p ...
LDA $36B,X
BNE loc_D37C
LDA $37E,X
CMP #2
BCC loc_D3F8
loc_D37C: ; D373j
JSR sub_D5C2
JSR sub_D5AE
JSR sub_D77B
STA 0
STX $E
STY $F
LDA $5E4,X
BNE loc_D3E7
LDA $446,X
BEQ loc_D3AA
CMP #1
BEQ loc_D3B8
LDX $F
INC $200,X
INC $208,X
DEC $204,X
DEC $20C,X
JMP loc_D3B8
; ---------------------------------------------------------------------------
loc_D3AA: ; D393j
LDX $F
INC $203,X
loc_D3AF:
INC $207,X
DEC $20B,X
DEC $20F,X
loc_D3B8: ; D397j D3A7j
LDX $E
LDA $3E,X
BNE loc_D3E0
LDA #$18
STA $3E,X
LDA $446,X
LDY $44E,X
CPY #1
BCS loc_D3D3
ADC #1
CMP #2
JMP loc_D3D7
; ---------------------------------------------------------------------------
loc_D3D3: ; D3CAj
SBC #1
CMP #1
loc_D3D7: ; D3D0j
STA $446,X
LDA #0
ROL A
STA $44E,X
loc_D3E0: ; D3BCj
LDY $F
LDA $5E4,X
BEQ loc_D406
loc_D3E7: ; D38Ej
CMP #$FE ; 'þ'
BNE loc_D430
LDA $574,X
CMP $15
BNE loc_D3F8
LDA $F1
ORA #4
STA $F1
loc_D3F8: ; D37Aj D3F0j
LDA #$FF
STA $3DA,X
STA $5E4,X
INC $94
JSR loc_D610
RTS
; ---------------------------------------------------------------------------
loc_D406: ; D3E5j
LDA #$B6 ; '¶'
STA $201,Y
LDA #$B7 ; '·'
STA $205,Y
LDA #$B8 ; '¸'
STA $209,Y
LDA #$B9 ; '¹'
STA $20D,Y
LDA 0
ORA #3
STA $202,Y
STA $206,Y
STA $20A,Y
STA $20E,Y
LDA #3
STA $4A2,X
RTS
; ---------------------------------------------------------------------------
loc_D430: ; D3E9j
CMP #1
BNE loc_D463
LDA #$BA ; 'º'
STA $201,Y
STA $209,Y
STA $205,Y
STA $20D,Y
LDA 0
ORA #2
STA $202,Y
ORA #$40 ; '@'
STA $20A,Y
ORA #$C0 ; 'À'
STA $20E,Y
EOR #$40 ; '@'
STA $206,Y
LDA $203,Y
STA $207,Y
LDA #$F7 ; '÷'
STA $5E4,X
loc_D463: ; D432j
INC $5E4,X
RTS
; End of function sub_D370
; =============== S U B R O U T I N E =======================================
sub_D467: ; A096p loc_A750p
; FUNCTION CHUNK AT D4B1 SIZE 000000AA BYTES
LDA $36B,X
BNE loc_D473
LDA $37E,X
CMP #2
BCC loc_D48B
loc_D473: ; D46Aj
JSR sub_D5C2
JSR sub_D5BE
JSR sub_D79C
STA 0
LDA $5E4,X
BEQ loc_D4B1
CMP #$FE ; 'þ'
BCS loc_D48B
JSR sub_D55B
RTS
; ---------------------------------------------------------------------------
loc_D48B: ; D471j D485j
CPX $4E6
BNE sub_D4A8
LDY $5E4,X
BEQ loc_D4A1
LDX $4E7
JSR sub_D4A8
STA $4E7
LDX $4E6
loc_D4A1: ; D493j
JSR sub_D4A8
STA $4E6
RTS
; End of function sub_D467
; =============== S U B R O U T I N E =======================================
sub_D4A8: ; D48Ej D498p ...
JSR sub_D604
LDA #$FF
STA $5E4,X
RTS
; End of function sub_D4A8
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_D467
loc_D4B1: ; D481j
LDA #$FC ; 'ü'
STA $201,Y
STA $205,Y
STA $209,Y
STA $20D,Y
LDA $501,X
CLC
ADC #$F
STA $F
LDA $36B,X
CPX $4E7
BNE loc_D505
CMP #0
BEQ loc_D4DA
LDA $37E,X
CMP $F
BCS loc_D4F4
loc_D4DA:
LDA $4F
CMP #2
LDA #$BB
BCS loc_D4F1
LDA $4F
CMP #1
LDA #$BC
BCS loc_D4F1
LDA #$BE
STA $209,Y
LDA #$BD
loc_D4F1:
STA $201,Y
loc_D4F4: ; D4D8j
LDA #2
ORA 0
STA $202,Y
STA $206,Y
STA $20A,Y
STA $20E,Y
RTS
; ---------------------------------------------------------------------------
loc_D505: ; D4CDj
CMP #0
BEQ loc_D510
LDA $37E,X
CMP $F
BCS loc_D535
loc_D510: ; D507j
LDA #$A8 ; '¨'
STA $201,Y
LDA #$A9 ; '©'
STA $209,Y
LDA $36B,X
BEQ loc_D528
LDA $37E,X
ADC #8
CMP $F
BCS loc_D535
loc_D528: ; D51Dj
LDA $50
AND #1
CMP #1
LDA #$AA ; 'ª'
ADC #0
STA $205,Y
loc_D535: ; D50Ej D526j
LDA #3
STA $F
LDA $50
CMP #3
LDA #0
ROR A
LSR A
ORA $F
ORA 0
STA $206,Y
LDA 0
ORA $F
STA $202,Y
STA $20A,Y
LDA $50
BNE locret_D55A
LDA #5
STA $50
locret_D55A: ; D554j
RTS
; END OF FUNCTION CHUNK FOR sub_D467
; =============== S U B R O U T I N E =======================================
sub_D55B: ; D487p
CMP #1
BNE loc_D58C
LDA #$AC ; '¬'
STA $201,Y
STA $209,Y
LDA #$AD ; '­'
STA $205,Y
STA $20D,Y
LDA 0
ORA #3
STA $202,Y
STA $206,Y
ORA #$40 ; '@'
STA $20A,Y
STA $20E,Y
LDA $203,Y
STA $207,Y
LDA #$F7 ; '÷'
STA $5E4,X
loc_D58C: ; D55Dj
INC $5E4,X
RTS
; End of function sub_D55B
; ---------------------------------------------------------------------------
tbl_unk_D590: .BYTE $18, $78, $30, $90, $48, $A8, $60, $C0, 0 ; D5B6r
tbl_unk_D599: .BYTE $78, $18, $90, $30, $A8, $48, $C0, $60, 0 ; loc_D5BAr
tbl_unk_D5A2: .BYTE 0, $18, $30, $40, $50, $60, $70, $80, $90, $A0, $B0, $C0
; sub_D5BEr
; =============== S U B R O U T I N E =======================================
sub_D5AE: ; B271p B3AEp ...
LDA $6C
BNE sub_D5BE
LDA $15
BNE loc_D5BA
LDY tbl_unk_D590,X
RTS
; ---------------------------------------------------------------------------
loc_D5BA: ; D5B4j
LDY tbl_unk_D599,X
RTS
; End of function sub_D5AE
; =============== S U B R O U T I N E =======================================
sub_D5BE: ; D476p D5B0j ...
LDY tbl_unk_D5A2,X
RTS
; End of function sub_D5BE
; =============== S U B R O U T I N E =======================================
sub_D5C2: ; B66Bp loc_B775p ...
LDY #0
LDA $350,X
STA $8E
LDA $37E,X
SEC
SBC $7A
STA $8F
LDA $36B,X
SBC #0
BPL loc_D5E4
LDA $8F
CMP #$F1 ; 'ñ'
BCS loc_D5E4
LDY #$10
CMP #$E7 ; 'ç'
BCC sub_D604
loc_D5E4: ; D5D6j D5DCj
LDA $7C
SEC
SBC $37E,X
STA 1
LDA $7B
SBC $36B,X
BCC sub_D604
BNE loc_D600
LDA 1
CMP #8
BCS loc_D600
INY
CMP #1
BCC sub_D604
loc_D600: ; D5F3j D5F9j
TYA
STA $90
RTS
; End of function sub_D5C2
; =============== S U B R O U T I N E =======================================
sub_D604: ; 9845p B171p ...
LDA $6C
BNE loc_D62A
CPX #9
BPL loc_D63F
CPX #$12
BEQ loc_D63F
loc_D610: ; D402p
JSR sub_D5AE
loc_D613: ; D62Fj
LDA #$F8 ; 'ø'
STA $200,Y
STA $204,Y
STA $208,Y
STA $20C,Y
STA $210,Y
STA $214,Y
JMP loc_D63F
; ---------------------------------------------------------------------------
loc_D62A: ; D606j
JSR sub_D5BE
CPX #2
BCC loc_D613
LDA #$F8 ; 'ø'
STA $200,Y
STA $204,Y
STA $208,Y
STA $20C,Y
loc_D63F: ; D60Aj D60Ej ...
LDA #$11
STA $90
locret_D643: ; D649j
RTS
; End of function sub_D604
; =============== S U B R O U T I N E =======================================
sub_D644: ; 9C62p A0FCp
JSR sub_D5C2
CMP #$11
BEQ locret_D643
JSR sub_D5AE
TXA
PHA
JMP loc_D731
; End of function sub_D644
; ---------------------------------------------------------------------------
tbl_unk_D653: .BYTE $13, $13, $13, $1A, $13, $13 ; D6AAr
tbl_unk_D659: .BYTE $2D, $2D, $2F, $1B, $17, $3E ; D6B2r
tbl_unk_D65F: .BYTE $1C, $20, $22, $20, 2, $35 ; D6BAr
.BYTE $15
.BYTE $15
.BYTE $15
.BYTE $1D
.BYTE $15
.BYTE $15
.BYTE $2E ; .
.BYTE $2E ; .
.BYTE $30 ; 0
.BYTE $1E
.BYTE $18
.BYTE $3F ; ?
.BYTE $1F
.BYTE $FC ; ü
.BYTE $24 ; $
.BYTE $FC ; ü
.BYTE 5
.BYTE $37 ; 7
tbl_unk_D677: .BYTE 2, 1, 2, $FF, $FE, $FE, $FE, $FF, $FE, 1, 2, 2 ; loc_D6D3r
tbl_unk_D683: .BYTE 0, $FF, 0, $FF, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 ; D6D9r
.BYTE 0, 0, 0, 0, 0, 0, 0, 0
; =============== S U B R O U T I N E =======================================
sub_D69B: ; sub_D28Cp D30Dp
TXA
PHA
LDA $3C1,X
LSR A
LDX #5
BCC loc_D6A7
LDX #$17
loc_D6A7: ; D6A3j D6C6j
LDA $201,Y
CMP tbl_unk_D653,X
BNE loc_D6BF
LDA $205,Y
CMP tbl_unk_D659,X
BNE loc_D6BF
LDA $209,Y
CMP tbl_unk_D65F,X
BEQ loc_D6CB
loc_D6BF: ; D6ADj D6B5j
DEX
CPX #$11
BEQ loc_D6C8
CPX #0
BPL loc_D6A7
loc_D6C8: ; D6C2j
JMP loc_D6E4
; ---------------------------------------------------------------------------
loc_D6CB: ; D6BDj
CPX #$11
BCC loc_D6D3
TXA
SBC #$C
TAX
loc_D6D3: ; D6CDj
LDA tbl_unk_D677,X
STA $4AB
LDA tbl_unk_D683,X
STA $4AC
LDA #0
STA $4AD
loc_D6E4: ; loc_D6C8j
PLA
TAX
; End of function sub_D69B
; =============== S U B R O U T I N E =======================================
sub_D6E6: ; B77Bp
TXA
PHA
CPX #2
BCS loc_D71A
LDA $4AB
ORA $4AC
ORA $4AD
BEQ loc_D71A
TYA
PHA
LDA $8E
STA 0
JSR sub_D766
LDA 0
CLC
ADC #8
STA 0
JSR sub_D766
LDA #0
STA $4AB
STA $4AC
STA $4AD
PLA
TAY
JMP loc_D731
; ---------------------------------------------------------------------------
loc_D71A: ; D6EAj D6F5j
LDA $8E
STA $203,Y
STA $207,Y
STA $20B,Y
CLC
ADC #8
STA $20F,Y
STA $213,Y
STA $217,Y
loc_D731: ; D650j D717j
LDA $8F
STA $200,Y
STA $20C,Y
CLC
ADC #8
STA $204,Y
STA $210,Y
CLC
ADC #8
STA $208,Y
STA $214,Y
LDA #$F8 ; 'ø'
LDX $90
BEQ loc_D763
DEX
BNE loc_D75D
STA $208,Y
STA $214,Y
PLA
TAX
RTS
; ---------------------------------------------------------------------------
loc_D75D: ; D752j
STA $200,Y
STA $20C,Y
loc_D763: ; D74Fj
PLA
TAX
RTS
; End of function sub_D6E6
; =============== S U B R O U T I N E =======================================
sub_D766: ; D6FDp D707p
LDX #0
loc_D768: ; D778j
LDA $4AB,X
CLC
ADC 0
STA $203,Y
INY
INY
INY
INY
INX
CPX #3
BNE loc_D768
RTS
; End of function sub_D766
; =============== S U B R O U T I N E =======================================
sub_D77B: ; D382p
JSR sub_D7B9
LDA $203,Y
STA $207,Y
LDA $36B,X
BNE loc_D791
LDA #$10
CMP $37E,X
JMP loc_D796
; ---------------------------------------------------------------------------
loc_D791: ; D787j
LDA $37E,X
CMP #$A8 ; '¨'
loc_D796: ; D78Ej
LDA #0
ROR A
LSR A
LSR A
RTS
; End of function sub_D77B
; =============== S U B R O U T I N E =======================================
sub_D79C: ; D479p
JSR sub_D7B9
LDA $36B,X
BNE loc_D7AC
LDA #$18
CMP $37E,X
JMP loc_D7B2
; ---------------------------------------------------------------------------
loc_D7AC: ; D7A2j
LDA $37E,X
CMP $501,X
loc_D7B2: ; D7A9j
LDA #$20 ; ' '
BCS locret_D7B8
LDA #0
locret_D7B8: ; D7B4j
RTS
; End of function sub_D79C
; =============== S U B R O U T I N E =======================================
sub_D7B9: ; sub_D77Bp sub_D79Cp
; FUNCTION CHUNK AT D800 SIZE 00000002 BYTES
LDA $90
CMP #$11
BEQ locret_D808
LDA $8E
STA $203,Y
PHA
LDA $5E4,X
BEQ loc_D7D4
PLA
STA $207,Y
CLC
ADC #8
JMP loc_D7DE
; ---------------------------------------------------------------------------
loc_D7D4: ; D7C8j
PLA
CLC
ADC #4
STA $207,Y
CLC
ADC #4
loc_D7DE: ; D7D1j
STA $20B,Y
STA $20F,Y
LDA $8F
JSR sub_D802
CLC
ADC #8
JSR sub_D7F9
LDA $90
BEQ locret_D808
CMP #1
BNE loc_D800
LDA #$F8 ; 'ø'
; End of function sub_D7B9
; =============== S U B R O U T I N E =======================================
sub_D7F9: ; D7ECp
STA $204,Y
STA $20C,Y
RTS
; End of function sub_D7F9
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_D7B9
loc_D800: ; D7F5j
LDA #$F8 ; 'ø'
; END OF FUNCTION CHUNK FOR sub_D7B9
; =============== S U B R O U T I N E =======================================
sub_D802: ; D7E6p
STA $200,Y
STA $208,Y
locret_D808: ; D7BDj D7F1j
RTS
; End of function sub_D802
; ---------------------------------------------------------------------------
tbl_unk_D809: .BYTE $FF, 0, $FF, 0, $FF, 0, $FF, 0, $FF, 0, $FF, 0, $FF, 0, $FF, 0
; loc_D852r
tbl_unk_D819: .BYTE $FF, 0, 0, $FF, 0, 0, $FF, 0, 0, $FF, 0, 0, $FF, 0, 0, 0
; D8C1r
.BYTE $A
.BYTE $A
; =============== S U B R O U T I N E =======================================
sub_D82B: ; loc_D2FAp
CPX #2
BCS loc_D848
LDA $9C,X
BMI loc_D85D
CMP #8
BNE loc_D841
CPX $15
BNE loc_D841
LDA $F0
ORA #$10
STA $F0
loc_D841: ; D835j D839j
LDY $9C,X
DEC $9C,X
JMP loc_D852
; ---------------------------------------------------------------------------
loc_D848: ; D82Dj
LDA $42E,X
CMP #5
LDY $40E,X
BCS loc_D85D
loc_D852: ; D845j
LDA tbl_unk_D809,Y
BEQ locret_D85C
LDY #1
JSR sub_DA37
locret_D85C: ; D855j
RTS
; ---------------------------------------------------------------------------
loc_D85D: ; D831j D850j
CPX #2
BCS loc_D86C
LDA $80,X
AND #3
BEQ loc_D86C
CMP $3C1,X
BNE loc_D870
loc_D86C: ; D85Fj D865j
LDA $3E,X
BNE locret_D87C
loc_D870: ; D86Aj
LDA $7C6,X
BNE loc_D87D
LDA #$10
STA $3E,X
JSR sub_DA35
locret_D87C: ; D86Ej
RTS
; ---------------------------------------------------------------------------
loc_D87D: ; D873j
DEC $7C6,X
RTS
; End of function sub_D82B
; =============== S U B R O U T I N E =======================================
sub_D881: ; loc_D300p
LDA #0
STA $4D6,X
LDA $4E0,X
BNE loc_D8E0
LDA $3D2,X
CMP #$20 ; ' '
BEQ loc_D8CC
INC $88,X
LDY $88,X
CPY #$10
BCC loc_D89F
LDY #0
TYA
STA $88,X
loc_D89F: ; D898j
LDA $82,X
CMP $3C1,X
BNE loc_D8E3
LDA $4BE,X
BNE loc_D8BE
LDA $7F
BNE loc_D8B9
CPX $15
BNE loc_D8B9
LDA $F0
ORA #8
STA $F0
loc_D8B9: ; D8ADj D8B1j
LDA #$A
STA $4BE,X
loc_D8BE: ; D8A9j
DEC $4BE,X
LDA tbl_unk_D819,Y
BEQ locret_D8DF
LDY #0
JSR sub_DA37
RTS
; ---------------------------------------------------------------------------
loc_D8CC: ; D890j
LDA #$F0 ; 'ð'
STA $88,X
INC $8A,X
LDA $8A,X
CMP #$80 ; '€'
BCC locret_D8DF
loc_D8D8:
LDA #0
STA $8A,X
JSR sub_DA3C
locret_D8DF: ; D8C4j D8D6j
RTS
; ---------------------------------------------------------------------------
loc_D8E0: ; D889j
DEC $4E0,X
loc_D8E3: ; D8A4j
INC $4D6,X
LDA $3C1,X
PHA
LDA #$F0 ; 'ð'
STA $8A,X
LDY $3E2,X
DEY
STY $F
LDA $8E
LDY $3C1,X
CPY #2
BCS loc_D902
ADC $F
JMP loc_D904
; ---------------------------------------------------------------------------
loc_D902: ; D8FBj
SBC $F
loc_D904: ; D8FFj
STA $8E
LDY #0
LDA $80,X
AND #3
ORA $3C1,X
CMP #3
BNE loc_D91D
LDA $3C1,X
EOR #3
STA $3C1,X
LDY #6
loc_D91D: ; D911j
TYA
LDY $3E2,X
DEY
BEQ loc_D92A
CLC
ADC #$48 ; 'H'
JMP loc_D92D
; ---------------------------------------------------------------------------
loc_D92A: ; D922j
CLC
ADC #$54 ; 'T'
loc_D92D: ; D927j
STA $91
LDY #0
JSR sub_DA7D
PLA
STA $3C1,X
RTS
; End of function sub_D881
; ---------------------------------------------------------------------------
tbl_unk_D939:
.BYTE <tbl_D98D ; sub_DA7Dr
.BYTE <tbl_D945
.BYTE <tbl_D969
.BYTE <tbl_D9ED
.BYTE <tbl_D9FF
.BYTE <tbl_DA11
tbl_unk_D93F: .BYTE >tbl_D98D ; DA82r
.BYTE >tbl_D945
.BYTE >tbl_D969
.BYTE >tbl_D9ED
.BYTE >tbl_D9FF
.BYTE >tbl_DA11
tbl_D945: .BYTE $00, $01, $02, $03, $04, $05, $00, $01, $02, $03, $06, $07, $00, $01, $02, $03
; D93At D940t
.BYTE $06, $08, $0F, $10, $02, $11, $12, $05, $0F, $10, $02, $11, $19, $07, $0F, $10
.BYTE $02, $11, $19, $08
tbl_D969: .BYTE $09, $0A, $02, $0B, $0C, $05, $00, $01, $02, $03, $04, $05, $00, $01, $02, $0D
; D93Bt D941t
.BYTE $0E, $05, $13, $14, $02, $15, $16, $05, $0F, $10, $02, $11, $12, $05, $13, $17
.BYTE $02, $15, $18, $05
tbl_D98D: .BYTE $1A, $1B, $1C, $1D, $1E, $1F, $1A, $1B, $20, $1D, $1E, $FC, $1A, $21, $22, $1D
; tbl_unk_D939t tbl_unk_D93Ft
.BYTE $23, $24, $13, $2D, $1C, $15, $2E, $1F, $13, $2D, $20, $15, $2E, $FC, $13, $2F
.BYTE $22, $15, $30, $24, $00, $38, $35, $0D, $39, $37, $00, $34, $35, $03, $36, $37
.BYTE $09, $3A, $35, $0B, $3B, $37, $0F, $40, $35, $11, $41, $37, $13, $3C, $35, $15
.BYTE $3D, $37, $13, $3E, $35, $15, $3F, $37, $25, $26, $27, $28
.BYTE $29, $2A, $25, $26, $2B, $28, $29, $2C, $25, $31, $27, $32, $33, $2A, $25, $31
.BYTE $2B, $32, $33, $2C
tbl_D9ED: .BYTE $4E, $4F, $50, $51, $52, $53, $4E, $4F, $50, $51, $5E, $58, $4E, $4F, $50, $51
; D93Ct D942t
.BYTE $5E, $5D
tbl_D9FF: .BYTE $54, $55, $50, $56, $57, $53, $4E, $4F, $50, $51, $52, $53, $59, $5A, $50, $5B
; D93Dt D943t
.BYTE $5C, $53
tbl_DA11: .BYTE $4C, $CC, $02, $4D, $CD, $05, $4C, $2F, $22, $4D, $30, $24, $4C, $48, $42, $FC
; D93Et D944t
.BYTE $49, $43, $4C, $2F, $27, $15, $30, $2A, $4C, $2F, $2B, $15, $30, $2C, $4C, $6C
.BYTE $6D, $FC, $6E, $6F
; =============== S U B R O U T I N E =======================================
sub_DA35: ; D879p
LDY #2
; End of function sub_DA35
; =============== S U B R O U T I N E =======================================
sub_DA37: ; D859p D8C8p
LDA #0
JMP loc_DA40
; End of function sub_DA37
; =============== S U B R O U T I N E =======================================
sub_DA3C: ; D8DCp
LDY #0
LDA #$24 ; '$'
loc_DA40: ; DA39j
STA $F
CPX #2
BCC loc_DA48
INY
INY
loc_DA48: ; DA44j
TYA
PHA
LDA $446,X
LDY $44E,X
CPY #1
BCS loc_DA5B
ADC #6
CMP #$C
JMP loc_DA5F
; ---------------------------------------------------------------------------
loc_DA5B: ; DA52j
SBC #6
CMP #1
loc_DA5F: ; DA58j
STA $446,X
LDA #0
ROL A
STA $44E,X
LDA $F
ADC $446,X
CPX #2
BCS loc_DA79
LDY $3E2,X
DEY
BNE loc_DA79
ADC #$12
loc_DA79: ; DA6Fj DA75j
STA $91
PLA
TAY
; End of function sub_DA3C
; =============== S U B R O U T I N E =======================================
sub_DA7D: ; D2DCp D931p
LDA tbl_unk_D939,Y
STA $E
LDA tbl_unk_D93F,Y
STA $F
; End of function sub_DA7D
; =============== S U B R O U T I N E =======================================
sub_DA87: ; B772p
TXA
PHA
JSR sub_D5AE
TYA
PHA
TAX
LDY $91
LDA ($E),Y
STA $201,X
INY
LDA ($E),Y
STA $205,X
INY
LDA ($E),Y
STA $209,X
INY
LDA ($E),Y
STA $20D,X
INY
LDA ($E),Y
STA $211,X
INY
LDA ($E),Y
STA $215,X
PLA
TAY
PLA
TAX
LDA $3C1,X
AND #1
LSR A
ROR A
ROR A
ORA $4A2,X
STA $202,Y
STA $206,Y
STA $20A,Y
STA $20E,Y
STA $212,Y
STA $216,Y
LDA $3C1,X
AND #1
BEQ locret_DB12
LDA $201,Y
PHA
LDA $20D,Y
STA $201,Y
PLA
STA $20D,Y
INY
INY
INY
INY
LDA $201,Y
PHA
LDA $20D,Y
STA $201,Y
PLA
STA $20D,Y
INY
INY
INY
INY
LDA $201,Y
PHA
LDA $20D,Y
STA $201,Y
PLA
STA $20D,Y
INY
INY
INY
INY
locret_DB12: ; DADAj
RTS
; End of function sub_DA87
; ---------------------------------------------------------------------------
; =============== S U B R O U T I N E =======================================
DBA2_read_DIPs: ; 8094p
LDA DIP1
AND #1
STA PROC_ID_LIST_01
LDA DIP1
LSR A
LSR A
LSR A
LSR A
LSR A
AND #7
STA dip_COINAGE
LDA DIP2
PHA
AND #1
STA dip_NESMODE
PLA
LSR A ; shift right
PHA ; push
AND #3
STA dip_BONUS ; dip with rewards info: 0, 1, 2, 3 for 10000, 20000, 40000 and no rewards
PLA ; pop
LSR A
LSR A
PHA ; push
AND #1 ; (A>>3) and 1.
STA dip_ENEMY_REGEN ; store dip
PLA ; pop
LSR A
PHA ; push
AND #3
STA dip_DIFFICULTY ; init difficulty dip
PLA ; pop
LSR A
LSR A
AND #3
STA dip_LIVES
RTS
; End of function DBA2_read_DIPs
; =============== S U B R O U T I N E =======================================
proc_DDE5: ; 9269o
JSR sub_DE77
CMP #$FF
BEQ loc_DDED
RTS
; ---------------------------------------------------------------------------
loc_DDED: ; DDEAj
LDA #1
STA SELECTOR
JSR clear_nametable
JSR init_oam_buffer
LDA #$10
STA $4F
LDA #1
STA $68
LDA #0
STA SELECTOR_COPY
STA $C3
STA $6B
STA $74
JSR cnrom_page_set
RTS
; End of function proc_DDE5
; =============== S U B R O U T I N E =======================================
; ‚믮«­ï¥âáï ’Ž‹œŠŽ ¢ £« ¢­®¬ ¬¥­î.
proc_todo_DE0D: ; A4B1o
JSR sub_DE77
CMP #$FF
BEQ loc_DE15
RTS
; ---------------------------------------------------------------------------
loc_DE15: ; DE12j
LDA $4F
BNE locret_DE1E
LDA #1
JSR sub_DE7F
; End of function proc_todo_DE0D
; START OF FUNCTION CHUNK FOR proc_DE1F
locret_DE1E: ; DE17j DE24j
RTS
; END OF FUNCTION CHUNK FOR proc_DE1F
; =============== S U B R O U T I N E =======================================
proc_DE1F: ; 926Bo
; FUNCTION CHUNK AT DE1E SIZE 00000001 BYTES
; FUNCTION CHUNK AT DE4A SIZE 0000001B BYTES
JSR sub_DE77
CMP #$FF
BNE locret_DE1E
LDA $C3
BNE loc_DE4A
LDA #2
STA SELECTOR
JSR clear_nametable
JSR init_oam_buffer
LDA #$20 ; ' '
STA $4F
STA SELECTOR_COPY
INC $C3
; End of function proc_DE1F
; =============== S U B R O U T I N E =======================================
cnrom_page_set: ; DE09p DED4p ...
LDA VS_CTRL_VAR
ORA #4
STA VS_CTRL_VAR
; TODO: new var with 2 and 3 pages of gfx
ORA off_CNROM
JSR cnrom_set_bank
LDA #0 ; reset scroll
STA SCROLL_Y
RTS
; End of function cnrom_page_set
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR proc_DE1F
loc_DE4A: ; DE28j
CMP #1
BNE loc_DE51
INC $C3
RTS
; ---------------------------------------------------------------------------
loc_DE51: ; DE4Cj
LDX #0
JSR sub_E10F
LDA #0
STA $C3
STA SELECTOR_COPY
LDA #1
STA $68
LDA #9
STA $4F
RTS
; END OF FUNCTION CHUNK FOR proc_DE1F
; ---------------------------------------------------------------------------
proc_unk_DE65: ; A4B3o
JSR sub_DE77
CMP #$FF
BEQ loc_DE6D
RTS
; ---------------------------------------------------------------------------
loc_DE6D: ; DE6Aj
LDA $4F
BNE locret_DE76
LDA #$A
JSR sub_DE7F
locret_DE76: ; DE6Fj
RTS
; =============== S U B R O U T I N E =======================================
sub_DE77: ; proc_DDE5p proc_todo_DE0Dp ...
; FUNCTION CHUNK AT DE88 SIZE 0000000D BYTES
LDA $BD
CMP #4
BNE loc_DE88
LDA #3
; End of function sub_DE77
; =============== S U B R O U T I N E =======================================
; switch scene?
; IN A = scene number
sub_DE7F: ; DE1Bp DE73p ...
STA $69 ; store current A to $69
loc_DE81: ; loc_E0BBj
LDA #0
STA $68 ; reset unknown $68
STA $C3 ; reset unknown $C3
RTS
; End of function sub_DE7F
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_DE77
loc_DE88: ; DE7Bj
LDA COINS_CNT1ST
BEQ loc_DE92
LDA #$2
JSR sub_DE7F
RTS
; ---------------------------------------------------------------------------
loc_DE92: ; DE8Aj
LDA #$FF
RTS
; END OF FUNCTION CHUNK FOR sub_DE77
; ---------------------------------------------------------------------------
; Sprites 46-49 (P1 button)
; Sprites 4A-4D (P1 button)
; Sprite table format:
; Y, T, P, X
; Y position, Tile number, Palette, X position.
sprites_BUTTONS:
; This table was used in the players readiness standby screen and it's no longer needed.
; Button icons are replaced with background labels,
; sprites are disabled. So that's just a memento.
.BYTE $54, $46, 0, $88
.BYTE $5C, $47, 0, $88
.BYTE $54, $48, 0, $90
.BYTE $5C, $49, 0, $90
.BYTE $AC, $4A, 0, $88
.BYTE $B4, $4B, 0, $88
.BYTE $AC, $4C, 0, $90
.BYTE $B4, $4D, 0, $90
tbl_DEB5:
.BYTE $28
.BYTE $10
; ---------------------------------------------------------------------------
proc_DEB7:
; i assume this proc inits screen with waiting for player(s)
LDA #0
STA $6B ; reset unknown $6B
STA $74 ; and $74
JSR sub_DF50 ; if $BD = 4, $69 = 3; $68 = 0; $C3 = 0
BEQ locret_DEDD
LDA COINS_CNT1ST
BEQ loc_DEFD
LDA $C3
BNE loc_DEDE
LDA #3 ; 3 - index procedure of stack manager
STA SELECTOR
JSR clear_nametable
JSR init_oam_buffer
; TODO create new var for CNROM page offset (page #2 DIP switches menu)
JSR cnrom_page_set
LDA #1
STA SELECTOR_COPY
INC $C3
locret_DEDD: ; DEC0j
RTS
; ---------------------------------------------------------------------------
loc_DEDE: ; DEC8j
JSR sub_E1A0
; No need sprites here
; LDX #$1F
;loc_DEE3: ; DEEAj
; LDA sprites_BUTTONS,X
; STA $200,X
; DEX
; BPL loc_DEE3
; loading it to PPU disabled
LDA #$20 ; ' '
STA $3E
LDA #0
STA $C3
STA SELECTOR_COPY
STA $C7
LDA #1
STA $68
RTS
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR proc_unk_DF07
loc_DEFD: ; DEC4j DF0Ej
LDA #0
JSR sub_DE7F
STA SELECTOR_COPY
STA $13
RTS
; END OF FUNCTION CHUNK FOR proc_unk_DF07
; =============== S U B R O U T I N E =======================================
proc_unk_DF07: ; A4B5o
; FUNCTION CHUNK AT DEFD SIZE 0000000A BYTES
; FUNCTION CHUNK AT DF2A SIZE 00000026 BYTES
JSR sub_DF50
BEQ locret_DF4F
LDA COINS_CNT1ST
BEQ loc_DEFD
JSR proc_unk_DF5C
JSR sub_E1A0
loc_DF16: ; DFBEp
LDA JOY1_TRIG
AND #PAD_START
BEQ loc_DF2A
DEC COINS_CNT1ST ;
; End of function proc_unk_DF07
; =============== S U B R O U T I N E =======================================
sub_DF1E: ; DF48p
LDA #$B
JSR sub_DE7F
STA $65
STA $74
STA $C8
RTS
; End of function sub_DF1E
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR proc_unk_DF07
loc_DF2A: ; DF1Aj
LDA $BD
CMP #$A
BEQ loc_DF38
CMP #$C
BEQ loc_DF38
CMP #5
BPL locret_DF4F
loc_DF38: ; DF2Ej DF32j
LDA COINS_CNT1ST
CMP #1
BNE loc_DF42
LDA $BC
BEQ locret_DF4F
; PATCHED: LDA $1A
; AND #$20
; TO: LDA $18
; AND #$10
loc_DF42: ; Checking joypad 2 start button
LDA $1A
AND #$10 ; ' '
BEQ locret_DF4F
;JSR loc_E0A1
;LDA #$B
;STA $69
locret_DF4F: ; DF0Aj DF36j ...
RTS
; END OF FUNCTION CHUNK FOR proc_unk_DF07
; =============== S U B R O U T I N E =======================================
sub_DF50: ; DEBDp proc_unk_DF07p ...
LDA $BD ; check unknown $BD
CMP #4 ;
BNE locret_DF5B ; NO! branch below
; $BD == 4
LDA #3
JSR sub_DE7F ;init $69 = 3; $68 = 0; $C3 = 0
locret_DF5B: ; DF54j
RTS
; End of function sub_DF50
; =============== S U B R O U T I N E =======================================
proc_unk_DF5C: ; DF10p E030p
LDA $3E
BNE locret_DF99
LDA $C7
EOR #1
STA $C7
LDX $C7
LDA tbl_DEB5,X
STA $3E
LDX #$C
loc_DF6F: ; DF97j
LDA $C7
STA $202,X
LDA $BD
CMP #$A
BEQ loc_DF82
CMP #$C
BEQ loc_DF82
CMP #5
BPL loc_DF9A
loc_DF82: ; DF78j DF7Cj
LDA COINS_CNT1ST
BEQ loc_DF9A
CMP #1
BNE loc_DF8E
LDA $BC
BEQ loc_DF9A
loc_DF8E: ; DF88j
LDA $C7
STA $212,X
loc_DF93: ; DF9Fj
DEX
DEX
DEX
DEX
BPL loc_DF6F
locret_DF99: ; DF5Ej
RTS
; ---------------------------------------------------------------------------
loc_DF9A: ; DF80j DF84j ...
LDA #0
STA $212,X
JMP loc_DF93
; End of function proc_unk_DF5C
; ---------------------------------------------------------------------------
proc_DFA2: ; 9281o
LDA #1
STA $68
RTS
; ---------------------------------------------------------------------------
proc_unk_DFA7: ; A4C9o
LDA COINS_CNT1ST
BNE loc_DFB9
loc_DFAB: ; DFC5j
LDA $4F
BNE locret_DFB8
LDA #5
JSR sub_DE7F
STA $74
STA $C8
locret_DFB8: ; DFADj DFBCj
RTS
; ---------------------------------------------------------------------------
loc_DFB9: ; DFA9j
JSR sub_DF50
BEQ locret_DFB8
JSR loc_DF16
LDA $69
CMP #$C
BEQ loc_DFAB
LDA #1
STA $F0
RTS
; ---------------------------------------------------------------------------
tbl_DFCC: .BYTE $94, $4A, 0, $88, $9C, $4B, 0, $88, $94, $4C, 0, $90, $9C, $4D, 0, $90
; loc_E004r
; ---------------------------------------------------------------------------
proc_DFDC: ; 926Fo
LDA $BD
CMP #4
BNE loc_E01F
LDA $C3
BNE loc_DFF7
JSR clear_nametable
JSR cnrom_page_set
LDA #4
STA SELECTOR
LDA #1
STA SELECTOR_COPY
INC $C3
RTS
; ---------------------------------------------------------------------------
loc_DFF7: ; DFE4j
JSR init_oam_buffer
LDA #$20 ; ' '
STA $3E
LDA #$19
STA $4F
LDX #$F
loc_E004: ; E00Bj
LDA tbl_DFCC,X
STA $200,X
DEX
BPL loc_E004
JSR sub_E1A0
LDA #0
STA $C7
STA $C3
STA SELECTOR_COPY
STA SCROLL_Y
LDA #1
STA $68
RTS
; ---------------------------------------------------------------------------
loc_E01F: ; DFE0j E02Ej ...
LDA #0
LDX COINS_CNT1ST
BEQ loc_E027
LDA #2
loc_E027: ; E023j
JMP sub_DE7F
; ---------------------------------------------------------------------------
proc_unk_E02A: ; A4B7o
LDA $BD
CMP #4
BNE loc_E01F
JSR proc_unk_DF5C
JSR sub_E1A0
LDA $1A
AND #$20 ; ' '
BNE loc_E045
LDA $4F
BNE locret_E044
LDA #$D
STA $69
locret_E044: ; E03Ej
RTS
; ---------------------------------------------------------------------------
loc_E045: ; E03Aj
LDA #4
STA $69
JMP loc_E0BB
; ---------------------------------------------------------------------------
proc_E04C: ; 9283o A4CBo
JSR clear_ppumask ; Disable PPU.
LDA #1
STA SELECTOR_COPY
LDA $BD
CMP #4
BEQ locret_E05C
JMP loc_E01F
; ---------------------------------------------------------------------------
locret_E05C: ; E057j
RTS
; ---------------------------------------------------------------------------
; scene change related
proc_E05D: ; 9271o
LDA $BD
CMP #$B
BEQ loc_E0BE
CMP #4
BEQ loc_E0A1
LDA $C3
BNE loc_E081
JSR clear_nametable
JSR init_oam_buffer
LDA #7
STA SELECTOR
LDA #0
STA SELECTOR_COPY
STA $13
JSR cnrom_page_set
INC $C3
RTS
; ---------------------------------------------------------------------------
loc_E081: ; E069j
JSR sub_E1A0
LDA #1
STA $68
LDA #0
STA $C3
STA SELECTOR_COPY
RTS
; ---------------------------------------------------------------------------
proc_unk_E08F: ; A4B9o
LDA $BD
CMP #$D
BEQ loc_E0BE
CMP #$B
BEQ loc_E0BE
CMP #4
BEQ loc_E0A1
JSR sub_E1A0
RTS
; ---------------------------------------------------------------------------
loc_E0A1: ; E065j E09Bj
LDA #$B
STA $69
LDA #1
STA $65
LDA #0
STA $6B
STA $74
LDA COINS_CNT1ST
BEQ loc_E0BB
DEC COINS_CNT1ST
LDA $BC
BNE loc_E0BB
DEC COINS_CNT1ST
loc_E0BB: ; E049j E0B1j ...
JMP loc_DE81
; ---------------------------------------------------------------------------
loc_E0BE: ; E061j E093j ...
LDA #2
JMP sub_DE7F
handler_init_dip_menu:
LDA $C3
BNE loc_E081
JSR clear_nametable
JSR init_oam_buffer
LDA #$55
STA SELECTOR
LDA #0
STA SELECTOR_COPY
STA SCROLL_Y
LDX #8
stx $68
STX off_CNROM
JSR cnrom_page_set
lda #251
sta dipmenu_state
INC $C3
RTS
; ---------------------------------------------------------------------------
tbl_E03C: .BYTE 1, 1, 1, 1, 2, 3, 4, 1, 1, 1, 1, 1, 1, 1, 2, 3
tbl_E0D3: .BYTE 1, 2, 3, 4, 1, 1, 1, $20, 1, 2, 3, 4, 5, 6, 1, 1
; =============== S U B R O U T I N E =======================================
sub_E0E3: ; E169p
LDA #1
STA TEMP
LDA #3
STA TEMP_HI
JSR _do_load_ppu_data
LDA #0
STA NT_ADDR_HI
STA NT_ADDR_LO
RTS
; End of function sub_E0E3
; ---------------------------------------------------------------------------
tbl_E0F7: .BYTE 0 ; E123r
.BYTE 6
.BYTE $C
.BYTE $12
.BYTE $18
.BYTE $1E
tbl_E0FD: .BYTE 6 ; E128r
.BYTE 6
.BYTE 6
.BYTE 6
.BYTE 6
.BYTE 6
tbl_E103: .BYTE $24 ; $ ; E141r
.BYTE $27 ; '
.BYTE $2A ; *
.BYTE $2D ; -
.BYTE $30 ; 0
.BYTE $33 ; 3
tbl_E109: .BYTE 6 ; E146r
.BYTE 6
.BYTE 6
.BYTE 6
.BYTE 6
.BYTE 6
; =============== S U B R O U T I N E =======================================
sub_E10F: ; DE53p E2CBp
LDA #$2D ; '-'
CPX #0
BEQ loc_E117
LDA #$6D ; 'm'
loc_E117: ; E113j
STA $C0
LDA #$22 ; '"'
STA $C1
LDA #0
STA $C2
loc_E121: ; E181j
LDX $C2
LDA tbl_E0F7,X
STA 0
LDA tbl_E0FD,X
STA 1
LDY #5
loc_E12F: ; E135j
LDA (TEMP),Y
STA $304,Y
DEY
BPL loc_E12F
LDA #$24 ; '$'
STA $30A
STA $30B
LDX $C2
LDA tbl_E103,X
STA 0
LDA tbl_E109,X
STA 1
LDY #2
loc_E14D: ; E153j
LDA (0),Y
STA $30C,Y
DEY
BPL loc_E14D
LDA #0
STA $30F
LDA $C1
STA $301
LDA $C0
STA $302
LDA #$B
STA $303
JSR sub_E0E3
LDA $C0
CLC
ADC #$40 ; '@'
STA $C0
CMP #$2D ; '-'
BNE loc_E17B
LDA #$23 ; '#'
STA $C1
loc_E17B: ; E175j
INC $C2
LDA $C2
CMP #5
BNE loc_E121
RTS
; End of function sub_E10F
; ---------------------------------------------------------------------------
E184_str_credits: .BYTE 12
.BYTE $23, $74
.BYTE 9
.BYTE $C, $1B, $E, $D, $12, $1D, $24, 0, 0
.BYTE 0
; tile string "CREDIT"
E192_str_freeplay: .BYTE 12
.BYTE $23, $74
.BYTE $09
.BYTE $0F, $1B, $0E, $E, $24, $19, $15, $A, $22
.BYTE 0
; tile string "FREE PLAY"
attrs_menu_LO: .byte <attr_menuitem_00, <attr_menuitem_01, <attr_menuitem_02, <attr_menuitem_03, <attr_menuitem_04
attrs_menu_HI: .byte >attr_menuitem_00, >attr_menuitem_01, >attr_menuitem_02, >attr_menuitem_03, >attr_menuitem_04
attr_menuitem_00:
.byte 12
.byte $23, $d1
.byte 6+$40
.byte $fa
.byte $23, $d9
.byte 6+$40
.byte $ff
.byte $23, $e1
.byte 6+$40
.byte $ff
.byte 0
attr_menuitem_01:
.byte 12
.byte $23, $d1
.byte 6+$40
.byte $af
.byte $23, $d9
.byte 6+$40
.byte $ff
.byte $23, $e1
.byte 6+$40
.byte $ff
.byte 0
attr_menuitem_02:
.byte 12
.byte $23, $d1
.byte 6+$40
.byte $ff
.byte $23, $d9
.byte 6+$40
.byte $fa
.byte $23, $e1
.byte 6+$40
.byte $ff
.byte 0
attr_menuitem_03:
.byte 12
.byte $23, $d1
.byte 6+$40
.byte $ff
.byte $23, $d9
.byte 6+$40
.byte $af
.byte $23, $e1
.byte 6+$40
.byte $ff
.byte 0
attr_menuitem_04:
.byte 12
.byte $23, $d1
.byte 6+$40
.byte $ff
.byte $23, $d9
.byte 6+$40
.byte $ff
.byte $23, $e1
.byte 6+$40
.byte $fa
.byte 0
nam_dip_off:
; DIP off
.byte 14 ; Block length (without zero?)
.byte $22, $84
.byte 4+$80
.byte $ce
.byte $de
.byte $ee
.byte $fe
.byte $22, $85
.byte 4+$80
.byte $cf
.byte $df
.byte $ef
.byte $ff
; DIP off
; =============== S U B R O U T I N E =======================================
sub_E1A0: ; loc_DEDEp DF13p ...
LDA dip_COINAGE
CMP #7
BNE loc_E1B2
LDX #$D
loc_E1A8: ; E1AFj
LDA E192_str_freeplay,X
STA $300,X
DEX
BPL loc_E1A8
RTS
; ---------------------------------------------------------------------------
loc_E1B2: ; E1A4j
LDX #$D
loc_E1B4: ; E1BBj
LDA E184_str_credits,X
STA $300,X
DEX
BPL loc_E1B4
LDA COINS_CNT1ST
loc_E1BF: ; E1C9j
CMP #$A
BMI loc_E1CC
INC $30B
SEC
SBC #$A
JMP loc_E1BF
; ---------------------------------------------------------------------------
loc_E1CC: ; E1C1j
STA $30C
RTS
; End of function sub_E1A0
; =============== S U B R O U T I N E =======================================
proc_E1D0: ; 9273o
; FUNCTION CHUNK AT E2C9 SIZE 00000014 BYTES
LDA $C3
BNE loc_E20F
JSR sub_E637
JSR sub_EA5D
LDA $589
BPL loc_E1E9 ; 8k banks are switched here.
JSR sub_E265
RTS
; ---------------------------------------------------------------------------
loc_E1E9: ; E1E3j
LDA $BD ; 8k banks are switched here.
CMP #5
BEQ loc_E21A
JSR clear_ppumask ; Disable PPU.
LDA VS_CTRL_VAR
ORA #4
STA VS_CTRL_VAR
JSR cnrom_set_bank
JSR clear_nametable
JSR init_oam_buffer
LDA #0
STA SCROLL_Y
LDA #6
STA SELECTOR
INC $C3
JSR sub_EACD
RTS
; ---------------------------------------------------------------------------
loc_E20F: ; E1D2j
LDA #0
STA $58A
JSR sub_EB94
JMP loc_E2C9
; ---------------------------------------------------------------------------
loc_E21A: ; E1EDj
LDA #6
JMP sub_DE7F
; End of function proc_E1D0
; ---------------------------------------------------------------------------
proc_unk_E21F: ; A4BBo
LDA $C3
BNE loc_E25D
LDA #1
STA $58A
LDA #0
STA $580
JSR sub_EB94
LDA $580
CMP #4
BEQ loc_E238
RTS
; ---------------------------------------------------------------------------
loc_E238: ; E235j
JSR sub_ED89
LDA #$80 ; '€'
STA $3E
LDA #1
STA $C3
LDX #$32 ; '2'
loc_E248: ; E24Fj
LDA $600,X
STA $6100,X
DEX
BPL loc_E248
LDA #$77 ; 'w'
STA $61FE
STA $61FF
JSR sub_E637
RTS
; ---------------------------------------------------------------------------
loc_E25D: ; E221j
LDA $3E
BNE locret_E26A
LDA #1
STA $F0
; =============== S U B R O U T I N E =======================================
sub_E265: ; E1E5p
LDA #0
JSR sub_DE7F
locret_E26A: ; E25Fj
RTS
; End of function sub_E265
; =============== S U B R O U T I N E =======================================
proc_E26B: ; 9275o
; FUNCTION CHUNK AT E2DD SIZE 00000005 BYTES
LDA $C3
BNE loc_E2C9
LDA $15
BNE loc_E279
LDA $BD
CMP #6
BEQ loc_E2DD
loc_E279: ; E271j
LDA $BD
CMP #6
BEQ loc_E283
CMP #5
BNE loc_E2DD
loc_E283: ; E27Dj
INC $C3
JSR clear_ppumask ; Disable PPU.
LDA VS_CTRL_VAR
ORA #4
STA VS_CTRL_VAR
JSR cnrom_set_bank
LDA #1
STA SELECTOR_COPY
JSR clear_nametable
JSR init_oam_buffer
JSR sub_EBC5
LDY #$14
loc_E2A0: ; E2BEj
LDA $2DC,Y
CLC
ADC #$10
STA $2DC,Y
LDA $2DF,Y
SEC
SBC #$28 ; '('
STA $2DF,Y
LDA $2DE,Y
EOR #1
STA $2DE,Y
DEY
DEY
DEY
DEY
BPL loc_E2A0
LDA #0
STA $13
LDA #5
STA SELECTOR
RTS
; End of function proc_E26B
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR proc_E1D0
loc_E2C9: ; E217j E26Dj
LDX #1
JSR sub_E10F
LDA #1
STA $68
LDA #0
STA SELECTOR_COPY
STA $C3
LDA #8
STA $F3
RTS
; END OF FUNCTION CHUNK FOR proc_E1D0
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR proc_E26B
loc_E2DD: ; E277j E281j ...
LDA #5
JMP sub_DE7F
; END OF FUNCTION CHUNK FOR proc_E26B
; ---------------------------------------------------------------------------
proc_unk_E2E2: ; A4BDo
LDA $15
BNE loc_E2EC
LDA $BD
CMP #6
BEQ loc_E2DD
loc_E2EC: ; E2E4j
LDA $BD
CMP #5
BNE loc_E2DD
RTS
; ---------------------------------------------------------------------------
proc_E2F3: ; 927Do
JSR sub_DE77
CMP #$FF
BNE loc_E313
LDA #$FF
STA $C3
JSR proc_9285
; =============== S U B R O U T I N E =======================================
sub_E301: ; loc_E313p E321p ...
LDA #0
STA $F0
STA $F1
STA $F2
STA $F3
RTS
; End of function sub_E301
; ---------------------------------------------------------------------------
proc_E30C: ; A4C5o
JSR sub_DE77
CMP #$FF
BEQ loc_E317
loc_E313: ; E2F8j
JSR sub_E301
RTS
; ---------------------------------------------------------------------------
loc_E317: ; E311j
LDA $C3
BEQ loc_E325
JSR sub_EF33
JSR proc_unk_A4CD
JSR sub_E301
RTS
; ---------------------------------------------------------------------------
loc_E325: ; E319j
JSR sub_E301
LDA #0
JMP sub_DE7F
; ---------------------------------------------------------------------------
proc_E32D: ; 9277o
LDA $BD
CMP #7
BEQ loc_E36D
LDA #$A ; Init selector #10 ()
STA SELECTOR
JSR clear_nametable
JSR init_oam_buffer
JSR cnrom_page_set
LDA #1
STA $68
RTS
; ---------------------------------------------------------------------------
proc_unk_E345: ; A4BFo
LDA $BD
CMP #7
BEQ loc_E36D
CMP #8
BEQ loc_E368
CMP #9
BEQ loc_E368
LDA $C3
BEQ locret_E367
LDA $15
EOR #1
TAX
LDA #0
STA $62,X
STA $65
LDA #$B
JSR sub_DE7F
locret_E367: ; E355j
RTS
; ---------------------------------------------------------------------------
loc_E368: ; E34Dj E351j
LDA #1
STA $C3
RTS
; ---------------------------------------------------------------------------
loc_E36D: ; E331j E349j
LDX #0
LDA LIVES,X
BMI loc_E377
TXA
EOR #1
TAX
loc_E377: ; E371j
LDA #0
STA $3EA,X
LDA #2
STA $3E2,X
STA $42E,X
JSR sub_A14C
LDA #$B
JMP sub_DE7F
; ---------------------------------------------------------------------------
tbl_E38C:
.BYTE 5
.BYTE $22
.BYTE $1A
.BYTE 2
.BYTE 0
.BYTE 0
.BYTE 0
; =============== S U B R O U T I N E =======================================
proc_E393: ; 9279o
LDA COINS_CNT1ST
BNE loc_E3B1
LDA #8
STA SELECTOR
loc_E39B: ; E3F5p
JSR clear_nametable
JSR init_oam_buffer
JSR cnrom_page_set
LDA #$40 ; '@'
STA $3E
LDA #$A
STA $C3
LDA #1
STA $68
RTS
; ---------------------------------------------------------------------------
loc_E3B1: ; E395j E3B8j
LDA #9
JMP sub_DE7F
; End of function proc_E393
; ---------------------------------------------------------------------------
proc_unk_E3B6: ; A4C1o
LDA COINS_CNT1ST
BNE loc_E3B1
loc_E3BA: ; E408j
LDA $3E
BNE locret_E3CB
DEC $C3
BPL loc_E3CC
LDA #1
STA $C8
LDA #$B
JSR sub_DE7F
locret_E3CB: ; E3BCj
RTS
; ---------------------------------------------------------------------------
loc_E3CC: ; E3C0j
LDA #$40 ; '@'
STA $3E
LDX #6
loc_E3D2: ; E3D9j
LDA tbl_E38C,X
STA $300,X
DEX
BPL loc_E3D2
LDA $C3
STA $305
RTS
; ---------------------------------------------------------------------------
tbl_unk_E3E1:
.BYTE $64
.BYTE $4A
.BYTE 0
.BYTE $A4
.BYTE $6C
.BYTE $4B
.BYTE 0
.BYTE $A4
.BYTE $64
.BYTE $4C
.BYTE 0
.BYTE $AC
.BYTE $6C
.BYTE $4D
.BYTE 0
.BYTE $AC
; ---------------------------------------------------------------------------
proc_E3F1: ; 927Bo
LDA #9
STA SELECTOR
JSR loc_E39B
LDX #$F
loc_E3FA: ; E401j
LDA tbl_unk_E3E1,X
STA $200,X
DEX
BPL loc_E3FA
RTS
; ---------------------------------------------------------------------------
proc_unk_E404: ; A4C3o
LDA $1A
AND #$20 ; ' '
BEQ loc_E3BA
LDA #7
STA $69
LDA #0
STA $C3
DEC COINS_CNT1ST
RTS
; ---------------------------------------------------------------------------
high_score_table:
; High score initial
; points table
.BYTE 0, 6, 8, 0, 0, 0 ; 068000 points
.BYTE 0, 4, 7, 1, 0, 0 ; 047100 points
.BYTE 0, 2, 6, 6, 6, 6 ; 029000 points
.BYTE 0, 1, 8, 0, 0, 0 ; 018000 points
.BYTE 0, 0, 7, 0, 0, 0 ; 007000 points
; ??
.BYTE 0, 0, 0, 0, 0, 0 ; 000000 points
; Hall of names
.BYTE 2, 8, 7 ; 1st
.BYTE $A, $18, $11 ; 2nd
.BYTE $23, $18, $10 ; 3rd
.BYTE $A, $17, $d ; 4th
.BYTE $22, $18, $1e ; 5th
; =============== S U B R O U T I N E =======================================
init_high_score: ; 8097p
LDX #$32 ; '2'
@high_score_fill: ; E454j
LDA high_score_table,X
STA $600,X
DEX
BPL @high_score_fill
LDA #$77 ; 'w'
STA $6FF
STA $6FE
JSR sub_E637
RTS
; End of function init_high_score
; =============== S U B R O U T I N E =======================================
poll_select2:
LDA JOY2_TRIG
AND #PAD_START
BEQ not_B_button
LDA $69
CMP #$B
BEQ exit_pol_sel
CMP #$E
BEQ exit_pol_sel
CMP #$5
BEQ exit_pol_sel
LDA #$e ; DIP SWITCHES MENU ENABLE
jsr sub_DE7F
jsr dip_values_array_update
jmp loc_F739 ; piranha
not_B_button:
LDA JOY1_VAR
AND #PAD_SELECT
BEQ exit_pol_sel ; branch, the "select" button is not pressed
lda $69
cmp #$e
beq exit_pol_sel
; SELECT detected
LDA JOY1_TRIG
STA TEMP ; select state store to temp
LDX #0 ; ?
JSR sub_E4F7
LDX #0
LSR TEMP
jmp sub_E4F7
exit_pol_sel:
rts
; =============== S U B R O U T I N E =======================================
sub_E4F7:
LDA $B0,X ; is $B0 == 0 ?
BNE loc_E50A ; branch if so
LDA TEMP ; yes, $B == 1
AND #PAD_SELECT
BEQ sub_E4F7_ret
; triggers when coin inserted
LDA #2
STA $B0,X ;
; -------
LDA #$F ; init attract mode timer?
STA TIMER_ATTRACT,X
sub_E4F7_ret: ; E4FFj
RTS
; ---------------------------------------------------------------------------
loc_E50A: ; E4F9j
; Select pressed
LDA TEMP
AND #PAD_SELECT
BNE loc_E520
LDA $B0,X
CMP #$FF
BEQ loc_E51B
JSR sub_E529 ; dig
INC $B2
loc_E51B: ; E514j
LDA #0
STA $B0,X
RTS
; ---------------------------------------------------------------------------
loc_E520: ; E50Ej
LDA TIMER_ATTRACT,X
BNE locret_E528
LDA #$FF
STA $B0,X
locret_E528: ; E522j
RTS
; End of function sub_E4F7
; =============== S U B R O U T I N E =======================================
sub_E529: ; E516p
LDA #$FF ; sound?
STA $7EA
NOP
INC $57E,X
; End of function sub_E529
; =============== S U B R O U T I N E =======================================
sub_E532: ; E4D7p
INC $B4,X
LDA #8
CPX #1
BEQ loc_E53C
LDA #0
loc_E53C: ; E538j
CLC
ADC dip_COINAGE
TAY
LDA tbl_E03C,Y
CMP $B4,X
BEQ loc_E549
BPL locret_E55B
loc_E549: ; E545j
LDA #0
STA $B4,X
LDA COINS_CNT1ST ; Coins from #1-#2 acceptors
CMP #$5C ; '\' ; No more than 92 ($5c) coins.
BPL locret_E55B
LDA tbl_E0D3,Y
CLC
ADC COINS_CNT1ST ; Increase coins counter.
STA COINS_CNT1ST ; Coins from #1-#2 acceptors
locret_E55B: ; E547j E551j
RTS
; End of function sub_E532
; =============== S U B R O U T I N E =======================================
sub_E55C: ; 9C21p A4EDp
LDY $47A
BMI loc_E586
LDA $47B,Y
STA 0
LDA $47C,Y
STA 1
INC $493
LDY $493
AND #3
STA $496,Y
JSR sub_E8DE
DEC $47A
DEC $47A
LDA #$F9 ; 'ù'
STA 0
JSR sub_E9D0
loc_E586: ; E55Fj
LDA $300
BNE loc_E5A1
LDA SELECTOR
BNE loc_E5A1
LDY $493
BMI loc_E5A1
LDA $496,Y
ORA #$F0 ; 'ð'
STA 0
JSR sub_E849
DEC $493
loc_E5A1: ; 98B0p E589j ...
LDX #0
TXA
JSR sub_E5AB
LDX #1
LDA #8
; End of function sub_E55C
; =============== S U B R O U T I N E =======================================
sub_E5AB: ; E5A4p
PHA
LDA $5C,X
BEQ loc_E5CC
TXA
CLC
ADC #$F
TAX
JSR sub_D5C2
BNE loc_E5D6
PLA
TAY
LDA $8E
STA $2F3,Y
CLC
ADC #8
STA $2F7,Y
LDA $8F
JMP loc_E5DA
; ---------------------------------------------------------------------------
loc_E5CC: ; E5AEj
LDA #1
STA $37A,X
LDA #$F8 ; 'ø'
STA $38D,X
loc_E5D6: ; E5B8j
PLA
TAY
LDA #$F8 ; 'ø'
loc_E5DA: ; E5C9j
STA $2F0,Y
STA $2F4,Y
RTS
; End of function sub_E5AB
; ---------------------------------------------------------------------------
proc_UNUSED:
LDA #8
STA 5
LDA 1
AND #$F8 ; 'ø'
STA 1
LDA 0
AND #$F8 ; 'ø'
LSR A
LSR A
LSR A
ASL 1
ROL 5
ASL 1
ROL 5
CLC
ADC 1
STA 0
LDA 5
STA 1
RTS
; =============== S U B R O U T I N E =======================================
sub_E604: ; 9C00p loc_BEEAp ...
LDA 1
ASL A
ASL A
ASL A
STA 4
LDA 1
AND #$E0 ; 'à'
LSR A
LSR A
STA 5
LDA 0
AND #7
CLC
ROR A
ROR A
ROR A
ORA 5
STA 5
RTS
; End of function sub_E604
; =============== S U B R O U T I N E =======================================
sub_E637: ; 8056p 808Bp ...
LDA VS_CTRL_VAR
AND #$FD ; 'ý' ; Reset bit 1
STA CTRL_PORT1 ; and write it to register.
STA VS_CTRL_VAR ; Store var.
RTS
; End of function sub_E637
; =============== S U B R O U T I N E =======================================
execute_procedure: ; 8177p 9266p ...
ASL A
TAY
PLA
STA TEMP
PLA
STA TEMP_HI
INY
LDA (TEMP),Y
STA PROC_POINTER
INY
LDA (TEMP),Y
STA PROC_POINTER_HI
JMP (PROC_POINTER)
; End of function execute_procedure
; =============== S U B R O U T I N E =======================================
; Init 256 bytes of OAM buffer $0200.
init_oam_buffer: ; clear_bg_and_spritesp 9A21p ...
LDA #0
LDX #$40 ; '@'
STA PTR1
LDA #2
STA PTR1_HI
LDY #0
loc_E66C: ; E679j
LDA #$F8 ; 'ø'
STA (PTR1),Y
INY
INY
LDA #0
STA (PTR1),Y
INY
INY
DEX
BNE loc_E66C
RTS
; End of function init_oam_buffer
; =============== S U B R O U T I N E =======================================
clear_both_nametables: ; 80BBp 9CF0p
LDA #0
STA NT_ADDR_HI
STA NT_ADDR_LO
clear_nametable: ; DDF1p DE2Ep ...
JSR clear_ppumask ; Disable PPU.
LDA #$20 ; ' '
JSR wipe_nametable ; IN: A = High PPU address (ex. $20, $28).
; Fills nametable with tile $24 (" " sym from BG page).
; Wipes attribute grid (64 bytes) with 0.
LDA #$28 ; '('
JSR wipe_nametable ; IN: A = High PPU address (ex. $20, $28).
; Fills nametable with tile $24 (" " sym from BG page).
; Wipes attribute grid (64 bytes) with 0.
RTS
; End of function clear_both_nametables
; =============== S U B R O U T I N E =======================================
init_scroll: ; 80B8p
LDA #$10
STA PPU_CTRL ; BG page = 2 (tiles 257-512)
; This code is repeated twice (the first time when the console is initialized).
STA PPU_CTRL_VAR
LDA #0 ; Init scroll.
STA PPU_SCROLL
STA SCROLL_X
STA PPU_SCROLL
STA SCROLL_Y
RTS
; End of function init_scroll
; =============== S U B R O U T I N E =======================================
; Disable PPU.
clear_ppumask: ; 81EFp init_gamep ...
LDA #0
STA PPU_MASK
RTS
; End of function clear_ppumask
; =============== S U B R O U T I N E =======================================
; IN: A = High PPU address (ex. $20, $28).
; Fills nametable with tile $24 (" " sym from BG page).
; Wipes attribute grid (64 bytes) with 0.
wipe_nametable: ; E689p E68Ep
STA TEMP ; Store A to $00
LDA PPU_STATUS ; Clear vblank flag
LDA PPU_CTRL_VAR ; Load PPU_CTRL_VAR
AND #$FB ; 'û' ; Reset bit #2 ($FB = %1111_1011)
STA PPU_CTRL ; Now VRAM increment = 1
LDA TEMP ; Restore input parameter
STA PPU_ADDR ; Set PPU address
LDA #0
STA PPU_ADDR ; Set PPU address
LDX #4
LDY #0
LDA #$24 ; '$'
clr_nam: ; E6CCj E6CFj
STA PPU_DATA ; Fill 1024 tiles of nametable with $24
DEY
BNE clr_nam ; Fill 1024 tiles of nametable with $24
DEX
BNE clr_nam ; Fill 1024 tiles of nametable with $24
LDA TEMP ; Restore input parameter
CLC ; Add 960 ($3c0)
ADC #3
STA PPU_ADDR
LDA #$C0 ; 'À'
STA PPU_ADDR
LDY #$40 ; '@' ; Wipe 64 bytes
LDA #0
clr_attr: ; E6E6j
STA PPU_DATA ; Fill 64 bytes of attributes with 0
DEY
BNE clr_attr ; Fill 64 bytes of attributes with 0
RTS
; End of function wipe_nametable
; =============== S U B R O U T I N E =======================================
E6E9_process_starfield:
LDX #0
LDY #$E
LDA $1B
AND #2
STA TEMP
LDA $1C
AND #2
EOR TEMP
CLC
BEQ loc_E6FD
SEC
loc_E6FD: ; E6FAj E701j
ROR $1B,X
INX
DEY
BNE loc_E6FD
LDA $69
CMP #$A
BNE loc_E70A
RTS
; ---------------------------------------------------------------------------
loc_E70A: ; E707j
LDY #3
loc_E70C: ; E722j
ASL TEMP_PTR_LO
ROL TEMP_PTR_HI
ROL A
ROL A
EOR TEMP_PTR_LO
ROL A
EOR TEMP_PTR_LO
LSR A
LSR A
EOR #$FF
AND #1
ORA TEMP_PTR_LO
STA TEMP_PTR_LO
DEY
BPL loc_E70C
LDA TEMP_PTR_LO
STA $1B
LDA TEMP_PTR_HI
STA $1D
EOR #$FF
STA $20
RTS
; End of function E6E9_process_starfield
; =============== S U B R O U T I N E =======================================
sub_E731: ; 812Fp 8153p
JSR sub_E783
LDA VS_CTRL_VAR
LDA #1
STA CTRL_PORT1
STA VS_CTRL_VAR
LDX #0
LDA VS_CTRL_VAR
AND #$FE ; 'þ'
STA CTRL_PORT1
STA VS_CTRL_VAR
JSR sub_E750
INX
JSR sub_E750
RTS
; End of function sub_E731
; =============== S U B R O U T I N E =======================================
sub_E750: ; E748p E74Cp
LDY #8
loc_E752: ; E75Dj
PHA
LDA CTRL_PORT1,X
NOP
NOP
NOP
LSR A
PLA
ROL A
DEY
BNE loc_E752
STX TEMP
ASL TEMP
LDX TEMP
LDY JOY1_VAR,X
STY TEMP
STA JOY1_VAR,X
STA JOY1_TRIG,X
LDY #6
loc_E76F: ; E781j
LDA 2
BIT TEMP
BEQ loc_E77B
LDA JOY1_TRIG,X
AND 1
STA JOY1_TRIG,X
loc_E77B: ; E773j
SEC
ROR 1
LSR 2
DEY
BNE loc_E76F
; End of function sub_E750
; 7F 80
; 01111111 10000000
; 01111111 11000000
; 10111111 11100000
; 11011111 11110000
; 11101111 11111000
; 11110111 11111100
; 11111011 11111110
; =============== S U B R O U T I N E =======================================
; 3f, 40 ?
sub_E783: ; sub_E731p
lda $69
cmp #$e
bne joymode_game
LDA #$1F
STA TEMP_HI
LDA #$20
STA PROC_POINTER
rts
joymode_game:
LDA #$7F ; $7f default
STA TEMP_HI
LDA #$80 ; $80 default
STA PROC_POINTER
RTS
; End of function sub_E783
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR _do_load_ppu_data
loc_E78C:
STA PPU_ADDR ; Write high byte of PPU address.
INY ; Increase pointer.
LDA (TEMP),Y ; Load low byte of PPU address
STA PPU_ADDR ; and write it to PPU_ADDR.
INY
LDA (TEMP),Y ; Load next byte: tile counter.
ASL A ; Depending on high #7 bit
; set (or not to set) carry flag:
; 1 = autoincrement 32
; 0 = autoincrement 1
PHA
LDA PPU_CTRL_VAR
ORA #4 ; Set PPU autoincrement to 32
BCS loc_E7A2 ; Let be so, if carry (bit #7 in data byte).
AND #$FB ; BUT! If NOT carry, wipe PPU_CTRL_VAR bit #2
; 1111_1011:
; So now PPU autoincrement is 1.
loc_E7A2: ; E79Ej
STA PPU_CTRL ; Update PPU control reg
STA PPU_CTRL_VAR ; And store it.
PLA ; Restore shifted data.
ASL A ; Shift it again.
BCC shift_byte_back ; If bit #6 disabled, jump
ORA #2 ; Set bit #2 for carry.
INY
shift_byte_back: ; E7A9j
LSR A ; Shift it to the right twice to "normalize"
LSR A ; (bits #7 and #6 are cleared)
; and carry contains bit #6 again.
TAX ; Repeat %counter% times
loc_E7B1: ; E7BAj
BCS loc_E7B4
INY
loc_E7B4: ; loc_E7B1j
LDA (TEMP),Y
STA PPU_DATA
DEX
BNE loc_E7B1
SEC
TYA
ADC TEMP
STA TEMP
LDA #0
ADC TEMP_HI
STA TEMP_HI ; Increment the pointer by the number of %counter%.
; END OF FUNCTION CHUNK FOR _do_load_ppu_data ;
; And do it over again:
; read 2 bytes PPU address,
; read %counter%,
; fill PPU with data.
; =============== S U B R O U T I N E =======================================
; IN: TEMP = screen gfx data
_do_load_ppu_data:
; FUNCTION CHUNK AT E78C SIZE 0000003C BYTES
LDX PPU_STATUS
LDY #0
LDA (TEMP),Y ; Read value from 0 (indirect)
BNE loc_E78C ; If this value not zero, jump to processing.
LDA SCROLL_X ; Else load the scrolling register with the contents of $12
STA PPU_SCROLL
LDA SCROLL_Y ; and $13.
STA PPU_SCROLL ; And let's get out of here.
RTS
; End of function _do_load_ppu_data
; =============== S U B R O U T I N E =======================================
sub_E7DC: ; ED6Ap ED7Bp
TXA
PHA
TYA
PHA
LDY #0
LDA (PROC_POINTER),Y
AND #$F
STA 5
LDA (PROC_POINTER),Y
LSR A
LSR A
LSR A
LSR A
STA 4
LDX NT_ADDR_HI
loc_E7F3: ; E82Cj
LDA 1
STA NT_ADDR_LO,X
JSR sub_E838
LDA 0
STA NT_ADDR_LO,X
JSR sub_E838
LDA 5
STA 6
STA NT_ADDR_LO,X
loc_E80A: ; E815j
JSR sub_E838
INY
LDA (PROC_POINTER),Y
STA NT_ADDR_LO,X
DEC 6
BNE loc_E80A
JSR sub_E838
STX NT_ADDR_HI
CLC
LDA #$20 ; ' '
ADC TEMP
STA TEMP
LDA #0
ADC TEMP_HI
STA TEMP_HI
DEC 4
BNE loc_E7F3
LDA #0
STA NT_ADDR_LO,X
PLA
TAY
PLA
TAX
RTS
; End of function sub_E7DC
; =============== S U B R O U T I N E =======================================
sub_E838: ; E7F8p E800p ...
INX
TXA
; End of function sub_E838
; =============== S U B R O U T I N E =======================================
sub_E83A: ; E887p
CMP #$3F ; '?'
BCC locret_E848
LDX NT_ADDR_HI
LDA #0
STA NT_ADDR_LO,X
PLA
PLA
locret_E848: ; E83Cj
RTS
; End of function sub_E83A
; =============== S U B R O U T I N E =======================================
sub_E849: ; 986Ap 9884p ...
LDX TEMP
JSR sub_E855
LDA TEMP
LSR A
LSR A
LSR A
LSR A
TAX
; End of function sub_E849
; =============== S U B R O U T I N E =======================================
sub_E855: ; E84Bp
INX
TXA
AND #$F
CMP #9
BCS loc_E8C9
ASL A
ASL A
TAY
STA PROC_POINTER
LDX $300
LDA $550,Y
STA $301,X
JSR sub_E838
INY
LDA $550,Y
STA $301,X
JSR sub_E838
INY
LDA $550,Y
AND #7
STA $301,X
STA TEMP_HI
TXA
SEC
ADC TEMP_HI
JSR sub_E83A
TAX
STX $300
LDA #0
STA $301,X
INY
LDA $550,Y
STA PROC_POINTER_HI
loc_E899: ; E8B6j
DEX
LDA $29,Y
AND #$F
STA $301,X
DEC TEMP_HI
BEQ loc_E8B8
DEX
LDA $29,Y
AND #$F0 ; 'ð'
LSR A
LSR A
LSR A
LSR A
STA $301,X
DEY
DEC TEMP_HI
BNE loc_E899
loc_E8B8: ; E8A4j
LDA 3
AND #1
BEQ loc_E8C9
LDY 2
CLC
LDA $29,Y
ADC #$F8 ; 'ø'
STA $301,X
loc_E8C9: ; E85Bj E8BCj
LDY #2
loc_E8CB: ; E8D7j
LDA $301,X
BNE locret_E8D9
LDA #$8E ; 'Ž'
STA $301,X
INX
DEY
BPL loc_E8CB
locret_E8D9: ; E8CEj
RTS
; End of function sub_E855
; =============== S U B R O U T I N E =======================================
sub_E8DA: ; 9FF7p
LDX #$FF
BNE loc_E8E0
; End of function sub_E8DA
; =============== S U B R O U T I N E =======================================
sub_E8DE: ; 9E75p A005p ...
LDX #0
loc_E8E0: ; E8DCj
STX PTR1
LDX #0
STX PTR1_HI
STX 6
STX 7
LDA TEMP_HI
AND #8
BNE loc_E8F1
INX
loc_E8F1: ; E8EEj
LDA 0
STA 6,X
LDA TEMP_HI
JMP loc_E8FA
; ---------------------------------------------------------------------------
loc_E8FA: ; E8F7j
AND #7
ASL A
ASL A
TAX
LDA PTR1
BEQ loc_E925
LDA $2D,X
BEQ loc_E929
loc_E907: ; E927j
CLC
JSR sub_E9C9
JSR sub_E961
JSR sub_E9B6
STA PROC_POINTER_HI
LDA 6
JSR sub_E961
JSR sub_E9BE
STA PROC_POINTER_HI
LDA PTR1_HI
JSR sub_E961
JMP loc_E9C6
; ---------------------------------------------------------------------------
loc_E925: ; E901j
LDA $2D,X
BEQ loc_E907
loc_E929: ; E905j
SEC
JSR sub_E9C9
JSR sub_E9B3
STA PROC_POINTER_HI
LDA 6
JSR sub_E9BB
STA PROC_POINTER_HI
LDA PTR1_HI
JSR sub_E9C3
BNE loc_E948
LDA $2F,X
BNE loc_E948
LDA $30,X
BEQ loc_E94E
loc_E948: ; E93Ej E942j
BCS locret_E960
LDA $2D,X
EOR #$FF
loc_E94E: ; E946j
STA $2D,X
SEC
LDA #0
STA PROC_POINTER_HI
LDA $30,X
JSR sub_E9B3
JSR sub_E9BB
JSR sub_E9C3
locret_E960: ; loc_E948j
RTS
; End of function sub_E8DE
; =============== S U B R O U T I N E =======================================
sub_E961: ; E90Bp E915p ...
JSR sub_E9A4
ADC TEMP_HI
CMP #$A
BCC loc_E96C
ADC #5
loc_E96C: ; E968j
CLC
ADC PROC_POINTER
STA PROC_POINTER
LDA PROC_POINTER_HI
AND #$F0 ; 'ð'
ADC PROC_POINTER
BCC loc_E97D
loc_E979: ; E97Fj
ADC #$5F ; '_'
SEC
RTS
; ---------------------------------------------------------------------------
loc_E97D: ; E977j
CMP #$A0 ; ' '
BCS loc_E979
RTS
; End of function sub_E961
; =============== S U B R O U T I N E =======================================
sub_E982: ; sub_E9B3p sub_E9BBp ...
JSR sub_E9A4
SBC 1
STA 1
BCS loc_E995
ADC #$A
STA 1
LDA 2
ADC #$F
STA 2
loc_E995: ; E989j
LDA 3
AND #$F0 ; 'ð'
SEC
SBC 2
BCS loc_E9A1
ADC #$A0 ; ' '
CLC
loc_E9A1: ; E99Cj
ORA 1
RTS
; End of function sub_E982
; =============== S U B R O U T I N E =======================================
sub_E9A4: ; sub_E961p sub_E982p
PHA
AND #$F
STA 1
PLA
AND #$F0 ; 'ð'
STA 2
LDA 3
AND #$F
RTS
; End of function sub_E9A4
; =============== S U B R O U T I N E =======================================
sub_E9B3: ; E92Dp E957p
JSR sub_E982
; End of function sub_E9B3
; =============== S U B R O U T I N E =======================================
sub_E9B6: ; E90Ep
STA $30,X
LDA $2F,X
RTS
; End of function sub_E9B6
; =============== S U B R O U T I N E =======================================
sub_E9BB: ; E934p E95Ap
JSR sub_E982
; End of function sub_E9BB
; =============== S U B R O U T I N E =======================================
sub_E9BE: ; E918p
STA $2F,X
LDA $2E,X
RTS
; End of function sub_E9BE
; =============== S U B R O U T I N E =======================================
sub_E9C3: ; E93Bp E95Dp
JSR sub_E982
loc_E9C6: ; E922j
STA $2E,X
RTS
; End of function sub_E9C3
; =============== S U B R O U T I N E =======================================
sub_E9C9: ; E908p E92Ap
LDA $30,X
STA 3
LDA 7
RTS
; End of function sub_E9C9
; =============== S U B R O U T I N E =======================================
sub_E9D0: ; 987Dp 9FDAp ...
LDA #0
STA 4
CLC
LDA 0
ADC #$10
AND #$F0 ; 'ð'
LSR A
LSR A
TAY
LDA 0
AND #7
ASL A
ASL A
TAX
loc_E9E5: ; EA38j
LDA $29,Y
BEQ loc_EA3B
LDA $2D,X
BEQ loc_EA14
loc_E9EE: ; EA3Dj
SEC
LDA $2C,Y
STA 3
LDA $30,X
JSR sub_E982
LDA $2B,Y
STA 3
LDA $2F,X
JSR sub_E982
LDA $2A,Y
STA 3
LDA $2E,X
JSR sub_E982
BCS loc_EA3F
LDA $29,Y
BNE loc_EA44
loc_EA14: ; E9ECj EA42j
LDA #$FF
STA 4
SEC
loc_EA19: ; EA45j
TYA
BNE locret_EA3A
BCC loc_EA2E
LDA $2D,X
STA $29
LDA $2E,X
STA $2A
LDA $2F,X
STA $2B
LDA $30,X
STA $2C
loc_EA2E: ; EA1Cj
LDA 0
AND #8
BEQ locret_EA3A
DEX
DEX
DEX
DEX
BPL loc_E9E5
locret_EA3A: ; EA1Aj EA32j
RTS
; ---------------------------------------------------------------------------
loc_EA3B: ; E9E8j
LDA $2D,X
BEQ loc_E9EE
loc_EA3F: ; EA0Dj
LDA $29,Y
BNE loc_EA14
loc_EA44: ; EA12j
CLC
BCC loc_EA19
; End of function sub_E9D0
; =============== S U B R O U T I N E =======================================
sub_EA47_decrease_timers: ; 810Dp
LDX #$10
DEC TIMER_01
BPL loc_EA53 ; branch if TIMER_01 > 0 -> check 16 bytes from $3E
LDA #$14 ; else
STA TIMER_01 ; init TIMER_01 with $14 (High Score and Main Menu scenes timer)
LDX #$20 ; Check 32 bytes from $3E
loc_EA53: ; EA4Bj EA5Aj
LDA $3E,X
BEQ loc_EA59 ; if zero, process next byte
DEC $3E,X ; if NOT zero, decrease itself
loc_EA59: ; EA55j
DEX
BPL loc_EA53
RTS
; End of function sub_EA47
; =============== S U B R O U T I N E =======================================
sub_EA5D: ; E1DDp
LDA $15
BEQ loc_EA6A
LDX #2
loc_EA63: ; EA68j
LDA $32,X
STA $2E,X
DEX
BPL loc_EA63
loc_EA6A: ; EA5Fj
LDY #0
LDX #0
loc_EA6E: ; EA83j
LDA $2E,X
LSR A
LSR A
LSR A
LSR A
STA $581,Y
LDA $2E,X
AND #$F
STA $582,Y
INY
INY
INX
CPX #3
BNE loc_EA6E
LDA $581
ORA $582
ORA $583
BEQ loc_EAB2
LDA #5
STA $587
LDA #0
loc_EA97: ; EAB0j
STA $588
TAX
LDY #0
loc_EA9D: ; EABCj
LDA $581,Y
CMP $600,X
BEQ loc_EAB8
BCS loc_EABE
LDA #6
CLC
ADC $588
DEC $587
BNE loc_EA97
loc_EAB2: ; EA8Ej
LDA #$FF
STA $589
RTS
; ---------------------------------------------------------------------------
loc_EAB8: ; EAA3j
INX
INY
CPY #3
BNE loc_EA9D
loc_EABE: ; EAA5j
LDA #5
SEC
SBC $587
STA $589
LDA #2
STA $580
RTS
; End of function sub_EA5D
; =============== S U B R O U T I N E =======================================
sub_EACD: ; E20Bp
LDX #4
LDA $589
JSR sub_EDB7
LDX #$1E
loc_EAD7: ; EAE0j
DEX
LDA $600,X
STA $606,X
CPX 0
BNE loc_EAD7
LDY #0
LDX 0
loc_EAE6: ; EAF0j
LDA $581,Y
STA $600,X
INX
INY
CPY #6
BNE loc_EAE6
LDX #1
LDA $589
JSR sub_EDB7
LDX #$F
loc_EAFC: ; EB05j
DEX
LDA $624,X
STA $627,X
CPX 0
BNE loc_EAFC
LDX 0
LDY #2
LDA #$24 ; '$'
loc_EB0D: ; EB12j
STA $624,X
INX
DEY
BPL loc_EB0D
LDA #3
STA $580
RTS
; End of function sub_EACD
; ---------------------------------------------------------------------------
tbl_unk_EB1A: .BYTE 0 ; EC37r EC5Br
.BYTE $A
.BYTE $B
.BYTE $C
.BYTE $D
.BYTE $E
.BYTE $F
.BYTE $10
.BYTE $11
.BYTE $12
.BYTE $13
.BYTE $14
.BYTE $15
.BYTE $16
.BYTE $17
.BYTE $18
.BYTE $19
.BYTE $1A
.BYTE $1B
.BYTE $1C
.BYTE $1D
.BYTE $1E
.BYTE $1F
.BYTE $20
.BYTE $21 ; !
.BYTE $22 ; "
.BYTE $23 ; #
.BYTE $2A ; *
.BYTE $2D ; -
.BYTE 1
.BYTE 2
.BYTE 0
tbl_unk_EB3A: .BYTE 0 ; ECAFr
tbl_unk_EB3B: .BYTE 0 ; ECE3r
.BYTE $43 ; C
.BYTE $33 ; 3
.BYTE $43 ; C
.BYTE $43 ; C
.BYTE $43 ; C
.BYTE $53 ; S
.BYTE $43 ; C
.BYTE $63 ; c
.BYTE $43 ; C
.BYTE $73 ; s
.BYTE $43 ; C
.BYTE $83 ; ƒ
.BYTE $43 ; C
.BYTE $93 ; “
.BYTE $43 ; C
.BYTE $A3 ; £
.BYTE $43 ; C
.BYTE $B3 ; ³
.BYTE $43 ; C
.BYTE $C3 ; Ã
.BYTE $53 ; S
.BYTE $33 ; 3
.BYTE $53 ; S
.BYTE $43 ; C
.BYTE $53 ; S
.BYTE $53 ; S
.BYTE $53 ; S
.BYTE $63 ; c
.BYTE $53 ; S
.BYTE $73 ; s
.BYTE $53 ; S
.BYTE $83 ; ƒ
.BYTE $53 ; S
.BYTE $93 ; “
.BYTE $53 ; S
.BYTE $A3 ; £
.BYTE $53 ; S
.BYTE $B3 ; ³
.BYTE $53 ; S
.BYTE $C3 ; Ã
.BYTE $63 ; c
.BYTE $33 ; 3
.BYTE $63 ; c
.BYTE $43 ; C
.BYTE $63 ; c
.BYTE $53 ; S
.BYTE $63 ; c
.BYTE $63 ; c
.BYTE $63 ; c
.BYTE $73 ; s
.BYTE $63 ; c
.BYTE $83 ; ƒ
.BYTE $63 ; c
.BYTE $93 ; “
.BYTE $63 ; c
.BYTE $A3 ; £
.BYTE $63 ; c
.BYTE $B3 ; ³
.BYTE $63 ; c
.BYTE $C3 ; Ã
tbl_unk_EB78: .BYTE $2D, $50, 2, $80 ; loc_EBB7r
tbl_unk_EB7C: .BYTE $28 ; ( ; loc_EBC7r
.BYTE $40 ; @
.BYTE 0
.BYTE $40 ; @
.BYTE $30 ; 0
.BYTE $41 ; A
.BYTE 0
.BYTE $40 ; @
.BYTE $38 ; 8
.BYTE $42 ; B
.BYTE 0
.BYTE $40 ; @
.BYTE $28 ; (
.BYTE $43 ; C
.BYTE 0
.BYTE $48 ; H
.BYTE $30 ; 0
.BYTE $44 ; D
.BYTE 0
.BYTE $48 ; H
.BYTE $38 ; 8
.BYTE $45 ; E
.BYTE 0
.BYTE $48 ; H
; =============== S U B R O U T I N E =======================================
sub_EB94: ; E214p E22Dp
; FUNCTION CHUNK AT EBDE SIZE 0000003F BYTES
; FUNCTION CHUNK AT EC23 SIZE 00000110 BYTES
LDY $58A
BNE loc_EBDE
STY $58B
STY $591
INY
STY $58C
STY $58D
LDA #$50 ; 'P'
STA $592
LDA #3
STA $590
LDA #$15
STA $58E
LDY #3
loc_EBB7: ; EBC3j
LDA tbl_unk_EB78,Y
STA $2C0,Y
LDA #$2F ; '/'
STA $594,Y
DEY
BPL loc_EBB7
; End of function sub_EB94
; =============== S U B R O U T I N E =======================================
sub_EBC5: ; E29Bp
LDY #$17
loc_EBC7: ; EBCEj
LDA tbl_unk_EB7C,Y
STA $2DC,Y
DEY
BPL loc_EBC7
LDY #$14
LDA $15
loc_EBD4: ; EBDBj
STA $2DE,Y
DEY
DEY
DEY
DEY
BPL loc_EBD4
RTS
; End of function sub_EBC5
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_EB94
loc_EBDE: ; EB97j
DEC $592
BNE loc_EBFD
LDA #$50 ; 'P'
STA $592
DEC $591
BPL loc_EBFA
LDA #9
STA $591
DEC $590
BPL loc_EBFA
JMP loc_EC7D
; ---------------------------------------------------------------------------
loc_EBFA: ; EBEBj EBF5j
JSR sub_ED55
loc_EBFD: ; EBE1j
DEC $58D
BNE loc_EC3F
LDX #1
STX $58D
LDY #1
LDA $17
ORA $19
LSR A
BCS loc_EC29
LSR A
BCC loc_EC1A
LDX #$FF
LDY #$1E
JMP loc_EC29
; ---------------------------------------------------------------------------
loc_EC1A: ; EC11j
LSR A
BCC loc_EC23
; END OF FUNCTION CHUNK FOR sub_EB94
JSR sub_ED33
JMP loc_EC29; ---------------------------------------------------------------------------
JMP loc_EC29
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_EB94
loc_EC23: ; EC1Bj
LSR A
BCC loc_EC3F
JSR sub_ED44
loc_EC29: ; EC0Ej EC17j ...
LDA #$A
STA $58D
TXA
CLC
ADC $58C
STA $58C
TAX
LDA tbl_unk_EB1A,X
BNE loc_EC3F
STY $58C
loc_EC3F: ; EC00j EC24j ...
LDA JOY1_TRIG
ORA $1A
AND #$C0 ; 'À'
BEQ loc_EC9F
LDY $58C
CPY #$1E
BEQ loc_EC7D
CPY #$1D
BEQ loc_EC88
LDA $F0
ORA #2
STA $F0
LDX $58B
LDA tbl_unk_EB1A,Y
STA $594,X
INC $58B
CPX #2
BNE loc_EC72
DEC $58B
LDA #$1E
STA $58C
BNE loc_EC9F
loc_EC72: ; EC66j
CLC
LDA #8
ADC $2C3
STA $2C3
BNE loc_EC9F
loc_EC7D: ; EBF7j EC4Cj
LDA #$F8 ; 'ø'
STA $2C0
LDA #4
STA $580
RTS
; ---------------------------------------------------------------------------
loc_EC88: ; EC50j
LDY $58B
LDA #$2F ; '/'
STA $594,Y
DEY
BMI loc_EC9F
DEC $58B
LDA $2C3
SEC
SBC #8
STA $2C3
loc_EC9F: ; EC45j EC70j ...
LDA #$D0 ; 'Ð'
STA 0
LDA #$20 ; ' '
STA TEMP_HI
JSR sub_ED6E
LDA $58C
ASL A
TAY
LDA tbl_unk_EB3A,Y
STA $2C4
STA $2CC
CLC
ADC #8
STA $2C8
STA $2D0
LDA #$4E ; 'N'
STA $2C5
STA $2C9
STA $2CD
STA $2D1
LDA #$40 ; '@'
STA $2C6
LDA #$C0 ; 'À'
STA $2CA
LDA #0
STA $2CE
LDA #$80 ; '€'
STA $2D2
LDA tbl_unk_EB3B,Y
STA $2C7
STA $2CB
CLC
ADC #8
STA $2CF
STA $2D3
LDY #7
loc_ECF7: ; ECFEj
LDA $2CC,Y
STA $2D4,Y
DEY
BPL loc_ECF7
LDA $58C
CMP #$1D
BCC loc_ED20
CLC
LDA #8
ADC $2CF
STA $2CF
LDA #8
ADC $2D3
STA $2D3
LDA #$4F ; 'O'
STA $2D5
STA $2D9
loc_ED20: ; ED05j
DEC $58E
BNE locret_ED32
LDA #$F
STA $58E
LDA #$D9 ; 'Ù'
EOR $2C0
STA $2C0
locret_ED32: ; ED23j
RTS
; END OF FUNCTION CHUNK FOR sub_EB94
; ---------------------------------------------------------------------------
sub_ED33:
LDA $58C
CMP #$15
BCC loc_ED41
CMP #$1F
BCS loc_ED41
LDX #0
RTS
; ---------------------------------------------------------------------------
loc_ED41: ; ED38j ED3Cj
LDX #$A
RTS
; =============== S U B R O U T I N E =======================================
sub_ED44: ; EC26p
LDA $58C
CMP #1
BCC loc_ED52
CMP #$B
BCS loc_ED52
LDX #0
RTS
; ---------------------------------------------------------------------------
loc_ED52: ; ED49j ED4Dj
LDX #$F6 ; 'ö'
RTS
; End of function sub_ED44
; =============== S U B R O U T I N E =======================================
sub_ED55: ; loc_EBFAp
LDA #$12
STA $58F
LDA #$F4 ; 'ô'
STA 0
LDA #$21 ; '!'
STA 1
LDA #$8F ; ''
STA 2
LDA #5
STA 3
JSR sub_E7DC
RTS
; End of function sub_ED55
; =============== S U B R O U T I N E =======================================
sub_ED6E: ; ECA7p EDAEp
LDA #$13
STA $593
LDA #$93 ; '“'
STA 2
LDA #5
STA 3
JSR sub_E7DC
RTS
; End of function sub_ED6E
; ---------------------------------------------------------------------------
tbl_unk_ED7F: .BYTE $75, $B5, $F5, $35, $75 ; EDA4r
tbl_unk_ED84: .BYTE $22, $22, $22, $23, $23 ; EDA9r
; =============== S U B R O U T I N E =======================================
sub_ED89: ; loc_E238p
LDX #1
LDA $589
JSR sub_EDB7
LDY #0
LDX TEMP
loc_ED95: ; ED9Fj
LDA $594,Y
STA $624,X
INX
INY
CPY #3
BNE loc_ED95
LDY $589
LDA tbl_unk_ED7F,Y
STA TEMP
LDA tbl_unk_ED84,Y
STA TEMP_HI
JSR sub_ED6E
LDA #5
STA $580
RTS
; End of function sub_ED89
; =============== S U B R O U T I N E =======================================
sub_EDB7: ; EAD2p EAF7p ...
STA TEMP
loc_EDB9: ; EDBDj
CLC
ADC TEMP
DEX
BPL loc_EDB9
STA TEMP
RTS
; End of function sub_EDB7
; =============== S U B R O U T I N E =======================================
sub_EDC2: ; 930Dp loc_E489p
LDA $589
BNE locret_EDE1
TAY
TAX
loc_EDC9: ; EDDFj
LDA $600,Y
ASL A
ASL A
ASL A
ASL A
STA $2A,X
LDA $601,Y
CLC
ADC $2A,X
STA $2A,X
INY
INY
INX
CPX #3
BNE loc_EDC9
locret_EDE1: ; EDC5j
RTS
; End of function sub_EDC2
; ---------------------------------------------------------------------------
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
; .BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
tbl_unk_EEE0: .BYTE $F0, $F8, $81, $30, 4, $36, $C2, $CF, $E3, $1C, $DC, $1A, $3B, $C
; loc_EF15r
; =============== S U B R O U T I N E =======================================
sub_EEEE: ; 9A16p
LDX #1
loc_EEF0: ; EF0Bj
LDA tbl_dmp02,X
STA $4F1,X
LDA tbl_dmp03,X
STA $4F3,X
JSR sub_EF1E
LDA #0
loc_EF01:
STA $4ED,X
TAY
LDA (2),Y
STA $4EF,X
DEX
BPL loc_EEF0
LDA #0
STA $99
STA $9A
LDX #$D
loc_EF15: ; EF1Bj
LDA tbl_unk_EEE0,X
STA $1B,X
DEX
BPL loc_EF15
RTS
; End of function sub_EEEE
; =============== S U B R O U T I N E =======================================
sub_EF1E: ; EEFCp loc_EF35p
LDA tbl_dmp00,X
STA TEMP
LDA $4F1,X
STA TEMP_HI
LDA tbl_dmp01,X
STA PROC_POINTER
LDA $4F3,X
STA PROC_POINTER_HI
RTS
; End of function sub_EF1E
; =============== S U B R O U T I N E =======================================
sub_EF33: ; E31Bp
LDX #1
loc_EF35: ; EF65j
JSR sub_EF1E
LDY $4ED,X
LDA $4EF,X
BNE loc_EF58
INY
INC $4ED,X
BNE loc_EF4C
INC $4F1,X
INC $4F3,X
loc_EF4C: ; EF44j
LDA (2),Y
STA $4EF,X
BNE loc_EF58
STA $C3
STA $4ED,X
loc_EF58: ; EF3Ej EF51j
LDA (TEMP),Y
STA $80,X
LDA $4EF,X
BEQ loc_EF64
DEC $4EF,X
loc_EF64: ; EF5Fj
DEX
BPL loc_EF35
RTS
; End of function sub_EF33
; .segment "MUSICPRG"
; START OF FUNCTION CHUNK FOR sub_F6ED
loc_F000: ; F037j
JSR sub_F2B1
locret_F003: ; F012j
RTS
; ---------------------------------------------------------------------------
loc_F004: ; loc_F72Aj
LDA #0
TAX
STA $FD
BEQ loc_F01B
loc_F00B: ; F028j
TXA
LSR A
TAX
loc_F00E: ; F02Fj F0B6j
INX
TXA
CMP #4
BEQ locret_F003
LDA $FD
CLC
ADC #4
STA $FD
loc_F01B: ; F009j
TXA
ASL A
TAX
LDA $E0,X
STA $FE
LDA $E1,X
STA $FF
LDA $E1,X
BEQ loc_F00B
TXA
LSR A
TAX
DEC $D0,X
BNE loc_F00E
loc_F031: ; loc_F05Ej
LDY $E8,X
INC $E8,X
LDA ($FE),Y
BEQ loc_F000
TAY
CMP #$FF
BEQ loc_F047
AND #$C0 ; 'À'
CMP #$C0 ; 'À'
BEQ loc_F053
JMP loc_F061
; ---------------------------------------------------------------------------
loc_F047: ; F03Cj
LDA $D8,X
BEQ loc_F05E
DEC $D8,X
LDA $EC,X
STA $E8,X
BNE loc_F05E
loc_F053: ; F042j
TYA
AND #$3F ; '?'
STA $D8,X
DEC $D8,X
LDA $E8,X
STA $EC,X
loc_F05E: ; F049j F051j
JMP loc_F031
; ---------------------------------------------------------------------------
loc_F061: ; F044j
TYA
BPL loc_F07B
AND #$F
CLC
ADC $DF
TAY
LDA tbl_unk_F172,Y
STA $D4,X
TAY
TXA
CMP #2
BEQ loc_F0C4
loc_F075: ; F0DEj
LDY $E8,X
INC $E8,X
LDA ($FE),Y
loc_F07B: ; F062j
TAY
TXA
CMP #3
BEQ loc_F0E1
PHA
TAX
CMP #1
BEQ loc_F0B9
loc_F087: ; F0BDj
LDX $FD
LDA tbl_unk_F101,Y
BEQ loc_F099
STA APU_PL1_LO,X
LDA tbl_unk_F100,Y
ORA #8
STA APU_PL1_HI,X
loc_F099: ; F08Cj
TAY
PLA
TAX
TYA
BNE loc_F0AA
LDY #0
TXA
CMP #2
BEQ loc_F0AC
LDY #$10
BNE loc_F0AC
loc_F0AA: ; F09Dj
LDY $DC,X
loc_F0AC: ; F0A4j F0A8j
TYA
LDY $FD
STA APU_PL1_VOL,Y
loc_F0B2: ; F0C1j loc_F0F9j
LDA $D4,X
STA $D0,X
JMP loc_F00E
; ---------------------------------------------------------------------------
loc_F0B9: ; F085j
LDA $F5
AND #2
BEQ loc_F087
PLA
TAX
JMP loc_F0B2
; ---------------------------------------------------------------------------
loc_F0C4: ; F073j
TYA
LDY $7F0
BEQ loc_F0CE
LDA #$FF
BNE loc_F0D9
loc_F0CE: ; F0C8j
CLC
ADC #$FE ; 'þ'
ASL A
ASL A
CMP #$3C ; '<'
BCC loc_F0D9
LDA #$3C ; '<'
loc_F0D9: ; F0CCj F0D5j
STA $4008
STA $DE
JMP loc_F075
; ---------------------------------------------------------------------------
loc_F0E1: ; F07Fj
LDA $F4
CMP #2
BEQ loc_F0F9
LDA tbl_unk_F200,Y
STA APU_NOISE_VOL
LDA tbl_unk_F201,Y
STA APU_NOISE_LO
LDA tbl_unk_F202,Y
STA APU_NOISE_HI
loc_F0F9: ; F0E5j
JMP loc_F0B2
; END OF FUNCTION CHUNK FOR sub_F6ED
; ---------------------------------------------------------------------------
.BYTE $FF
.BYTE $FF
.BYTE $FF
.BYTE $FF
tbl_unk_F100: .BYTE 7 ; F091r
tbl_unk_F101: .BYTE $F0 ; ð ; F089r
.BYTE 0
.BYTE 0
.BYTE 0
.BYTE $D4 ; Ô
.BYTE 0
.BYTE $C8 ; È
.BYTE 0
.BYTE $BD ; ½
.BYTE 0
.BYTE $B2 ; ²
.BYTE 0
.BYTE $A8 ; ¨
.BYTE 0
.BYTE $9F ; Ÿ
.BYTE 0
.BYTE $96 ; –
.BYTE 0
.BYTE $8D ; 
.BYTE 0
.BYTE $85 ; …
.BYTE 0
.BYTE $7E ; ~
.BYTE 0
.BYTE $76 ; v
.BYTE 0
.BYTE $70 ; p
.BYTE 1
.BYTE $AB ; «
.BYTE 1
.BYTE $93 ; “
.BYTE 1
.BYTE $7C ; |
.BYTE 1
.BYTE $67 ; g
.BYTE 1
.BYTE $52 ; R
.BYTE 1
.BYTE $3F ; ?
.BYTE 1
.BYTE $2D ; -
.BYTE 1
.BYTE $1C
.BYTE 1
.BYTE $C
.BYTE 0
.BYTE $FD ; ý
.BYTE 0
.BYTE $EE ; î
.BYTE 0
.BYTE $E1 ; á
.BYTE 3
.BYTE $57 ; W
.BYTE 3
.BYTE $27 ; '
.BYTE 2
.BYTE $F9 ; ù
.BYTE 2
.BYTE $CF ; Ï
.BYTE 2
.BYTE $A6 ; ¦
.BYTE 2
.BYTE $80 ; €
.BYTE 2
.BYTE $5C ; \
.BYTE 2
.BYTE $3A ; :
.BYTE 2
.BYTE $1A
.BYTE 1
.BYTE $FC ; ü
.BYTE 1
.BYTE $DF ; ß
.BYTE 1
.BYTE $C4 ; Ä
.BYTE 6
.BYTE $AE ; ®
.BYTE 5
.BYTE $F3 ; ó
.BYTE 5
.BYTE $9E ; ž
.BYTE 5
.BYTE $4D ; M
.BYTE 5
.BYTE 1
.BYTE 4
.BYTE $B9 ; ¹
.BYTE 4
.BYTE $75 ; u
.BYTE 3
.BYTE $F8 ; ø
.BYTE 3
.BYTE $BF ; ¿
.BYTE 3
.BYTE $89 ; ‰
.BYTE 0
.BYTE $69 ; i
.BYTE 0
.BYTE $63 ; c
.BYTE 0
.BYTE $5E ; ^
.BYTE 0
.BYTE $58 ; X
.BYTE 0
.BYTE $53 ; S
.BYTE 0
.BYTE $4F ; O
.BYTE 0
.BYTE $4A ; J
.BYTE 0
.BYTE $46 ; F
.BYTE 0
.BYTE $42 ; B
tbl_unk_F172: .BYTE 3 ; F06Ar
.BYTE 6
.BYTE $C
.BYTE $18
.BYTE $30 ; 0
.BYTE $12
.BYTE $24 ; $
.BYTE 9
.BYTE 8
.BYTE 4
.BYTE 7
.BYTE 1
.BYTE 4
.BYTE 8
.BYTE $10
.BYTE $20
.BYTE $40 ; @
.BYTE $18
.BYTE $30 ; 0
.BYTE $C
.BYTE 1
.BYTE 6
.BYTE $C
.BYTE $18
.BYTE $30 ; 0
.BYTE $60 ; `
.BYTE $24 ; $
.BYTE $48 ; H
.BYTE $12
.BYTE $10
.BYTE 8
.BYTE $E
.BYTE 2
.BYTE 3
.BYTE 4
; =============== S U B R O U T I N E =======================================
sub_F195: ; F232p F259p ...
LDA #0
BEQ loc_F1A3
; End of function sub_F195
; =============== S U B R O U T I N E =======================================
sub_F199: ; loc_F6A5p
LDA #8
BNE loc_F1A3
; End of function sub_F199
; =============== S U B R O U T I N E =======================================
sub_F19D: ; loc_F3DBp
LDA #$C
BNE loc_F1A3
; End of function sub_F19D
; =============== S U B R O U T I N E =======================================
sub_F1A1: ; F437p F499p ...
LDA #4
loc_F1A3: ; F197j F19Bj ...
STA $F9
LDA #$40 ; '@'
STA $FA
STX $FB
STY $FC
LDY #0
loc_F1AF: ; F1B7j
LDA ($FB),Y
STA ($F9),Y
INY
TYA
CMP #4
BNE loc_F1AF
RTS
; End of function sub_F1A1
; =============== S U B R O U T I N E =======================================
init_music: ; loc_F749p loc_F762p ...
TAX
JSR sub_F2BB
STX $F6
LDA $7F5
BEQ loc_F1D0
CMP #2
BNE loc_F1D0
STA $F0
LDA #0
STA $7F5
loc_F1D0: ; F1C3j F1C7j
LDA mus_offsets,Y
TAY
LDX #0
loc_F1D6: ; F1E0j
LDA mus_offsets,Y
STA $DF,X
INY
INX
TXA
CMP #9
BNE loc_F1D6
LDA #1
STA $D0
STA $D1
STA $D2
STA $D3
LDA #0
STA $E8
STA $E9
STA $EA
STA $EB
RTS
; End of function init_music
; ---------------------------------------------------------------------------
tbl_unk_F200: .BYTE $10
tbl_unk_F201: .BYTE 0
tbl_unk_F202: .BYTE $18
.BYTE $10, 1, $18, 0, 1, $88, 2, 2, $40, 3, 5, $40, 4, 7, $40
; =============== S U B R O U T I N E =======================================
sub_F212:
LDA #$7F
STA APU_PL1_SWEEP
STA APU_PL2_SWEEP
; End of function sub_F212
; =============== S U B R O U T I N E =======================================
sub_F21A: ; loc_F769p
STX $DC
STY $DD
locret_F21E: ; F224j
RTS
; End of function sub_F21A
; =============== S U B R O U T I N E =======================================
sub_F21F: ; F24Cp
LDA $7E7
CMP #$FD ; 'ý'
BCS locret_F21E
INC $7E7
INC $7E7
RTS
; End of function sub_F21F
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_F246
loc_F22D: ; F24Aj
NOP
LDX #<tbl_F261
LDY #>tbl_F261
JSR sub_F195
LDA $7E7
CMP #$88 ; 'ˆ'
BCC loc_F242
CLC
SBC #$18
STA $7E7
loc_F242: ; F23Aj
STA APU_PL1_LO
RTS
; END OF FUNCTION CHUNK FOR sub_F246
; =============== S U B R O U T I N E =======================================
sub_F246: ; loc_F482p
; FUNCTION CHUNK AT F22D SIZE 00000019 BYTES
LDA $F0
AND #$10
BNE loc_F22D
JSR sub_F21F
LDA $F3
LSR A
BCS loc_F255
RTS
; ---------------------------------------------------------------------------
loc_F255: ; F252j
LDX #<tbl_F25D
LDY #>tbl_F25D
JSR sub_F195
RTS
; End of function sub_F246
; ---------------------------------------------------------------------------
tbl_F25D: .BYTE $1F ; loc_F255t F257t
.BYTE $FF
.BYTE $10
.BYTE $C5 ; Å
tbl_F261: .BYTE $96 ; – ; F22Et F230t
.BYTE $AB ; «
.BYTE $FD ; ý
.BYTE $78 ; x
; =============== S U B R O U T I N E =======================================
sub_F265: ; F278p
LDA $7E6
BNE locret_F299
INC $7E6
LDA #$FD ; 'ý'
STA $7E7
RTS
; End of function sub_F265
; =============== S U B R O U T I N E =======================================
play_music: ; j_play_musicj
LDA #$C0 ; 'À'
STA CTRL_PORT2
JSR sub_F265
JSR sub_F6ED
JSR sub_F447
JSR sub_F598
JSR sub_F64F
JSR sub_F34E
LDA $F1
STA $7E9
LDA #0
STA $F0
STA $F1
STA $F2
STA $F3
locret_F299: ; F268j F2A2j
RTS
; End of function play_music
; ---------------------------------------------------------------------------
tbl_F29A: .BYTE 0, $7F, 4, $18 ; F2AAt F2ACt
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_F34E
loc_F29E: ; loc_F386j
LDA $F4
AND #6
BNE locret_F299
LDA $F4
AND #$F0 ; 'ð'
STA $F4
LDX #<tbl_F29A
LDY #>tbl_F29A
JMP loc_F3DB
; END OF FUNCTION CHUNK FOR sub_F34E
; =============== S U B R O U T I N E =======================================
sub_F2B1: ; loc_F000p
LDA $F6
CMP #$F0 ; 'ð'
BNE sub_F2BF
INC $7E8
RTS
; End of function sub_F2B1
; =============== S U B R O U T I N E =======================================
sub_F2BB: ; F1BBp
; FUNCTION CHUNK AT F2E4 SIZE 0000001A BYTES
CMP #$EF
BEQ loc_F2E4
; End of function sub_F2BB
; =============== S U B R O U T I N E =======================================
sub_F2BF: ; F2B5j F2E8j ...
LDA #$10
STA APU_NOISE_VOL
loc_F2C4: ; F2ECj
STA APU_PL1_VOL
STA APU_PL2_VOL
LDA #0
STA $7E8
STA $F4
STA $F5
STA $F6
STA $7FA
STA $F7
STA APU_TRI_LINEAR
STA APU_DMC_RAW
STA $7F0
RTS
; End of function sub_F2BF
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_F2BB
loc_F2E4: ; F2BDj
LDA $F4
CMP #4
BEQ sub_F2BF
LDA #$10
BNE loc_F2C4
; ---------------------------------------------------------------------------
tbl_F2EE: .BYTE $3F ; ? ; F3A9t F3ABt
.BYTE $7F ; 
.BYTE 0
.BYTE 0
snd_pop_balloon:
.BYTE 6
.BYTE $7F
.BYTE $A
.BYTE $C0
snd_pop_bubble:
.BYTE 2
.BYTE $7F
.BYTE $A
.BYTE $C0
tbl_F2F6: .BYTE 8 ; F31Ft F321t
.BYTE $7F ; 
.BYTE $A
.BYTE $C0 ; À
tbl_F2FA: .BYTE 8 ; F303t F305t
.BYTE $7F ; 
.BYTE 5
.BYTE $C0 ; À
; END OF FUNCTION CHUNK FOR sub_F2BB
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_F34E
loc_F2FE: ; F312j
LDA #0
STA $7FA
LDX #<tbl_F2FA
LDY #>tbl_F2FA
JMP loc_F3DB
; ---------------------------------------------------------------------------
loc_F30A: ; F36Ej
INC $7FB
LDA $7FB
CMP #$10
BEQ loc_F2FE
RTS
; ---------------------------------------------------------------------------
loc_F315: ; F36Aj
LDA #0
STA $7FB
LDA #$F0 ; 'ð'
STA $7FA
LDX #<tbl_F2F6
LDY #>tbl_F2F6
JMP loc_F3DB
; ---------------------------------------------------------------------------
loc_F326: ; F374j
LDA $F4
AND #$F0 ; 'ð'
ORA #2
STA $F4
LDA #0
STA $7F7
LDX #<snd_pop_balloon
LDY #>snd_pop_balloon
lda $6C
bne :+
lda bubble_flag
beq :+
LDX #<snd_pop_bubble
LDY #>snd_pop_bubble
lda #0
sta bubble_flag
:
JMP loc_F3DB
; ---------------------------------------------------------------------------
loc_F33A: ; F380j
INC $7F7
LDA $7F7
CMP #$10
BNE locret_F34A
LDA $F4
AND #$F0 ; 'ð'
STA $F4
locret_F34A: ; F342j
RTS
; ---------------------------------------------------------------------------
loc_F34B: ; F351j
JMP sub_F2BF
; END OF FUNCTION CHUNK FOR sub_F34E
; =============== S U B R O U T I N E =======================================
sub_F34E: ; F287p
; FUNCTION CHUNK AT F29E SIZE 00000013 BYTES
; FUNCTION CHUNK AT F2FE SIZE 00000050 BYTES
LDA $F0
LSR A
BCS loc_F34B
LDA $F6
CMP #$DF ; 'ß'
BEQ loc_F365
CMP #$7F ; ''
BEQ loc_F365
CMP #$20 ; ' '
BEQ loc_F365
LDA $F6
BNE locret_F385
loc_F365: ; F357j F35Bj ...
LDA $7FA
CMP #$F
BEQ loc_F315
CMP #$F0 ; 'ð'
BEQ loc_F30A
LDA $F0
LSR A
LSR A
BCS loc_F326 ; sound "pop balloon"
LSR A
BCS loc_F389
LSR A
BCS loc_F386
LDA $F4
LSR A
LSR A
BCS loc_F33A
LSR A
BCS loc_F3B0
locret_F385: ; F363j F38Dj
RTS
; ---------------------------------------------------------------------------
loc_F386: ; F37Aj
JMP loc_F29E
; ---------------------------------------------------------------------------
loc_F389: ; F377j
LDA $F4
AND #$80 ; '€'
BNE locret_F385
LDA $F4
AND #$F0 ; 'ð'
ORA #4
STA $F4
LDA #3
STA $7FF
LDA #0
STA $7F3
STA $7F1
LDA #$10
STA $7F4
LDX #<tbl_F2EE
LDY #>tbl_F2EE
BNE loc_F3DB
RTS
; ---------------------------------------------------------------------------
loc_F3B0: ; F383j
INC $7F3
LDA $7F3
CMP $7FF
BNE locret_F3D6
LDA #0
STA $7F3
INC $7F1
LDA $7F1
CMP $7F4
BNE loc_F3D7
LDA #$10
STA $400C
LDA $F4
AND #$F0 ; 'ð'
STA $F4
locret_F3D6: ; F3B9j
RTS
; ---------------------------------------------------------------------------
loc_F3D7: ; F3C9j
STA APU_NOISE_LO
RTS
; ---------------------------------------------------------------------------
loc_F3DB: ; F2AEj F307j ...
JSR sub_F19D
RTS
; End of function sub_F34E
; ---------------------------------------------------------------------------
tbl_F3DF: .BYTE $C1 ; Á ; loc_F425t F427t ...
.BYTE $89 ; ‰
.BYTE 2, $F
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_F447
loc_F3E3: ; loc_F444j
LDA #0
STA $7E0
CLC
LDA $1B
AND #7
ADC #2
STA $7E1
LDA $F7
AND #$F
ORA #$80 ; '€'
STA $F7
BNE loc_F425
loc_F3FC: ; loc_F486j
INC $7E0
LDA $7E0
CMP $7E1
BNE loc_F425
loc_F407: ; loc_F50Dj
LDA #$10
STA APU_PL1_VOL
STA APU_PL2_VOL
LDA #0
STA $F7
LDA $F4
AND #$F
STA $F4
RTS
; ---------------------------------------------------------------------------
loc_F41A: ; F455j
JSR sub_F2BF
LDA #$80 ; '€'
STA $F4
LDA #2
STA $F0
loc_F425: ; F3FAj F405j ...
LDX #<tbl_F3DF
LDY #>tbl_F3DF
JSR sub_F195
LDA $1B
AND #$F
STA APU_PL1_LO
LDX #<tbl_F3DF
LDY #>tbl_F3DF
JSR sub_F1A1
LDA $1B
LSR A
LSR A
AND #$F
STA APU_PL2_LO
RTS
; ---------------------------------------------------------------------------
loc_F444: ; F475j
JMP loc_F3E3
; END OF FUNCTION CHUNK FOR sub_F447
; =============== S U B R O U T I N E =======================================
sub_F447: ; F27Ep
; FUNCTION CHUNK AT F3E3 SIZE 00000064 BYTES
LDA $F6
BEQ loc_F452
AND #$F
CMP #$F
BEQ loc_F452
RTS
; ---------------------------------------------------------------------------
loc_F452: ; F449j F44Fj
LDA $F0
ASL A
BCS loc_F41A
ASL A
BCS loc_F489
ASL A
BCS loc_F4A4
LDA $F4
ASL A
BCS loc_F425
LDA $F6
CMP #$DF ; 'ß'
BEQ loc_F482
LDA $F6
BNE locret_F485
LDA $F4
CMP #$E0 ; 'à'
BEQ locret_F485
LDA $F3
ASL A
BCS loc_F444
ASL A
BCS loc_F4BC
LDA $F7
ASL A
BCS loc_F486
ASL A
BCS loc_F4D6
loc_F482: ; F466j
JSR sub_F246
locret_F485: ; F46Aj F470j
RTS
; ---------------------------------------------------------------------------
loc_F486: ; F47Dj
JMP loc_F3FC
; ---------------------------------------------------------------------------
loc_F489: ; F458j
JSR sub_F2BF
LDA #$F
STA $7FA
LDA #$40 ; '@'
STA $F4
LDX #<tbl_F51C
LDY #>tbl_F51C
JSR sub_F1A1
LDX #<tbl_F518
LDY #>tbl_F518
loc_F4A0: ; F4BAj F4D4j
JSR sub_F195
RTS
; ---------------------------------------------------------------------------
loc_F4A4: ; F45Bj
JSR sub_F2BF
LDA #$20 ; ' '
STA $F4
LDA #2
STA $F0
LDX #<tbl_F514
LDY #>tbl_F514
JSR sub_F1A1
LDX #<tbl_F510
LDY #>tbl_F510
BNE loc_F4A0
loc_F4BC: ; F478j
LDA #0
STA $7FC
LDA $F7
AND #$F
ORA #$40 ; '@'
STA $F7
LDX #<tbl_F520
LDY #>tbl_F520
JSR sub_F1A1
LDX #<tbl_F524
LDY #>tbl_F524
BNE loc_F4A0
loc_F4D6: ; F480j
INC $7FC
LDA $7FC
CMP #$12
BEQ loc_F50D
CMP #6
BCC loc_F4F4
LDA $1B
ORA #$10
AND #$7F ; ''
STA $7FE
ROL A
STA $7FD
JMP loc_F500
; ---------------------------------------------------------------------------
loc_F4F4: ; F4E2j
INC $7FD
INC $7FD
INC $7FE
INC $7FE
loc_F500: ; F4F1j
LDA $7FD
STA APU_PL2_LO
LDA $7FE
STA APU_PL1_LO
RTS
; ---------------------------------------------------------------------------
loc_F50D: ; F4DEj
JMP loc_F407
; End of function sub_F447
; ---------------------------------------------------------------------------
tbl_F510: .BYTE $B7 ; · ; F4B6t F4B8t
.BYTE $D5 ; Õ
.BYTE $20
.BYTE 0
tbl_F514: .BYTE $B7 ; · ; F4AFt F4B1t
.BYTE $D5 ; Õ
.BYTE $22 ; "
.BYTE 0
tbl_F518: .BYTE $97 ; — ; F49Ct F49Et
.BYTE $93 ; “
.BYTE $80 ; €
.BYTE $22 ; "
tbl_F51C: .BYTE $97 ; — ; F495t F497t
.BYTE $93 ; “
.BYTE $82 ; ‚
.BYTE $22 ; "
tbl_F520: .BYTE $3F ; ? ; F4C9t F4CBt
.BYTE $BA ; º
.BYTE $E0 ; à
.BYTE 6
tbl_F524: .BYTE $3F ; ? ; F4D0t F4D2t
.BYTE $BB ; »
.BYTE $CE ; Î
.BYTE 6
tbl_F528: .BYTE $BF ; ¿ ; F540t F542t ...
.BYTE $7F ; 
.BYTE $50 ; P
.BYTE 2
tbl_unk_F52C: .BYTE $83 ; ƒ ; F56Er
.BYTE $9C ; œ
.BYTE $B5 ; µ
.BYTE 0
tbl_unk_F530: .BYTE 3 ; F568r
.BYTE 5
.BYTE 3
tbl_F533: .BYTE $80 ; € ; F58At
.BYTE $7F ; 
.BYTE $60 ; `
.BYTE $68 ; h
tbl_F537: .BYTE $80 ; € ; F591t
.BYTE $7F ; 
.BYTE $62 ; b
.BYTE $68 ; h
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_F598
loc_F53B: ; F5B4j loc_F5D0j
LDA #$FB ; 'û'
STA $7E7
LDX #<tbl_F528
LDY #>tbl_F528
JSR sub_F1A1
LDA $F5
AND #$E0 ; 'à'
ORA #2
STA $F5
LDA #0
STA $7F8
STA $7EA
STA $7F9
INC $7F9
loc_F55D: ; F5C8j
DEC $7F9
BNE locret_F586
LDY $7F8
INC $7F8
LDA tbl_unk_F530,Y
STA $7F9
LDA tbl_unk_F52C,Y
STA APU_PL2_SWEEP
BNE locret_F586
LDA #$7F ; ''
STA APU_PL2_SWEEP
LDA #$10
STA APU_PL2_VOL
LDA $F5
AND #$E0 ; 'à'
STA $F5
locret_F586: ; F560j F574j
RTS
; ---------------------------------------------------------------------------
loc_F587: ; F5B1j
JSR sub_F2BF
LDX #<tbl_F533
LDY #>tbl_F528
JSR sub_F195
LDX #<tbl_F537
LDY #>tbl_F528
JMP loc_F5FC
; END OF FUNCTION CHUNK FOR sub_F598
; =============== S U B R O U T I N E =======================================
sub_F598: ; F281p
; FUNCTION CHUNK AT F53B SIZE 0000005D BYTES
LDA $F6
BEQ loc_F5A2
AND #$F
CMP #$F
BNE locret_F5CF
loc_F5A2: ; F59Aj
LDA $F4
AND #$E0 ; 'à'
BNE locret_F5CF
LDA $F7
AND #$C0 ; 'À'
BNE locret_F5CF
LDA $F1
LSR A
BCS loc_F587
LSR A
BCS loc_F53B
LSR A
BCS loc_F616
LSR A
BCS locret_F5FB
LSR A
BCS loc_F5D3
LDA $7EA
BNE loc_F5D0
LDA $F5
LSR A
LSR A
BCS loc_F55D
LSR A
LSR A
LSR A
BCS loc_F600
locret_F5CF: ; F5A0j F5A6j ...
RTS
; ---------------------------------------------------------------------------
loc_F5D0: ; F5C2j
JMP loc_F53B
; ---------------------------------------------------------------------------
loc_F5D3: ; F5BDj
LDA $F6
BNE locret_F5CF
LDA $F5
AND #2
BNE locret_F5CF
LDA $F5
AND #$E0 ; 'à'
ORA #$10
STA $F5
LDA #0
STA $7F2
LDX #<tbl_F621
LDY #>tbl_F621
loc_F5EE: ; F614j
JSR sub_F1A1
LDA $1B
AND #$3F ; '?'
ORA #$10
STA $4006
RTS
; ---------------------------------------------------------------------------
locret_F5FB: ; F5BAj
RTS
; ---------------------------------------------------------------------------
loc_F5FC: ; F595j
JSR sub_F1A1
locret_F5FF: ; F608j
RTS
; ---------------------------------------------------------------------------
loc_F600: ; F5CDj
INC $7F2
LDA $7F2
CMP #5
BNE locret_F5FF
LDA $F5
AND #$EF ; 'ï'
STA $F5
LDX #<tbl_F625
LDY #>tbl_F625
BNE loc_F5EE
loc_F616: ; F5B7j
LDA $F6
CMP #$DF ; 'ß'
LDY #$A
LDA #$EF ; 'ï'
JMP loc_F749
; End of function sub_F598
; ---------------------------------------------------------------------------
tbl_F621: .BYTE $D7 ; × ; F5EAt F5ECt
.BYTE $86 ; †
.BYTE $A8 ; ¨
.BYTE $28 ; (
tbl_F625: .BYTE $D7 ; × ; F610t F612t
.BYTE $86 ; †
.BYTE $BD ; ½
.BYTE $48 ; H
tbl_F629: .BYTE 6
.BYTE $7F ; 
.BYTE $E
.BYTE $68 ; h
tbl_F62D: .BYTE 8 ; F6A1t F6A3t
.BYTE $7F ; 
.BYTE $40 ; @
.BYTE $28 ; (
tbl_F631: .BYTE 8 ; F649t F64Bt
.BYTE $7F ; 
.BYTE $45 ; E
.BYTE $28 ; (
.BYTE $FF
.BYTE $7F ; 
.BYTE 3
.BYTE 0
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_F64F
loc_F639: ; F66Bj
INC $7F6
LDA $7F6
CMP #4
BNE locret_F677
LDA $F5
AND #$1F
STA $F5
LDX #<tbl_F631
LDY #>tbl_F631
BNE loc_F6A5
; END OF FUNCTION CHUNK FOR sub_F64F
; =============== S U B R O U T I N E =======================================
sub_F64F: ; F284p
; FUNCTION CHUNK AT F639 SIZE 00000016 BYTES
LDA $F6
BEQ loc_F659
AND #$F
CMP #$F
BNE locret_F677
loc_F659: ; F651j
LDA $F4
AND #$E0 ; 'à'
BNE locret_F677
LDA $F1
ASL A
BCS loc_F678
ASL A
BCS loc_F684
LDA $F5
ASL A
ASL A
BCS loc_F639
LDA $F1
AND #$20 ; ' '
BEQ loc_F67B
LDA $F6
BEQ loc_F6A9
locret_F677: ; F641j F657j ...
RTS
; ---------------------------------------------------------------------------
loc_F678: ; F662j
JMP loc_F6BC
; ---------------------------------------------------------------------------
loc_F67B: ; F671j
LDA $F6
CMP #$DF ; 'ß'
BNE locret_F677
JMP sub_F2BF
; ---------------------------------------------------------------------------
loc_F684: ; F665j
LDA $F5
AND #$1F
ORA #$40 ; '@'
STA $F5
LDA #0
STA APU_TRI_LINEAR
STA $F6
STA $7F6
LDA #$10
STA APU_PL2_VOL
STA APU_PL1_VOL
STA APU_NOISE_VOL
LDX #<tbl_F62D
LDY #>tbl_F62D
loc_F6A5: ; F64Dj
JSR sub_F199
RTS
; ---------------------------------------------------------------------------
loc_F6A9: ; F675j
LDA $7E9
AND #$20 ; ' '
BNE loc_F6B5
LDA #2
STA $7F5
loc_F6B5: ;
LDY #8
LDA #$DF ; 'ß'
JMP loc_F781
; ---------------------------------------------------------------------------
loc_F6BC: ; loc_F678j
LDY #4
LDA #$7F ; ''
JMP loc_F781
; End of function sub_F64F
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_F6ED
loc_F6C3: ; F711j
LDY #0
LDA #2
JMP loc_F792
; ---------------------------------------------------------------------------
loc_F6CA: ; F703j F709j
LDA #0
STA $7E8
LDY #$B
LDA #$F0 ; 'ð'
JMP loc_F778
; ---------------------------------------------------------------------------
loc_F6D6: ; F6F9j
LDA #3
STA $7E3
LDA $F2
STA $7E2
locret_F6E0: ; F6E4j
RTS
; ---------------------------------------------------------------------------
loc_F6E1: ; F6FEj
DEC $7E3
BNE locret_F6E0
LDA $7E2
STA $F2
BNE loc_F700
; END OF FUNCTION CHUNK FOR sub_F6ED
; =============== S U B R O U T I N E =======================================
sub_F6ED: ; F27Bp
; FUNCTION CHUNK AT F000 SIZE 000000FC BYTES
; FUNCTION CHUNK AT F6C3 SIZE 0000002A BYTES
LDA $69
CMP #$A
BEQ loc_F725
LDA $15
BNE loc_F700
LDA $F2
BNE loc_F6D6
LDA $7E3
BNE loc_F6E1
loc_F700: ; F6EBj F6F5j
LDA $7E8
BNE loc_F6CA
LDA $F3
AND #8
BNE loc_F6CA
LDA $F2
LSR A
BCS loc_F75E
LSR A
BCS loc_F6C3
LSR A
BCS loc_F72D
LSR A
BCS loc_F758
LSR A
BCS loc_F745
LSR A
BCS loc_F73F
LSR A
BCS loc_F739
LSR A
BCS loc_F733
loc_F725: ; F6F1j
LDA $F6
BNE loc_F72A
RTS
; ---------------------------------------------------------------------------
loc_F72A: ; F727j F756j ...
JMP loc_F004
; ---------------------------------------------------------------------------
loc_F72D: ; F714j
LDY #2
LDA #4
BNE loc_F762
loc_F733: ; F723j
LDY #9
LDA #$80 ; '€'
BNE loc_F749
loc_F739: ; F720j
LDY #7
LDA #$40 ; '@'
BNE loc_F749
loc_F73F: ; F71Dj
LDY #6
LDA #$20 ; ' '
BNE loc_F792
loc_F745: ; F71Aj
LDY #5
LDA #$10
loc_F749: ; F61Ej F737j ...
JSR init_music
LDX #$FC ; 'ü'
LDY #$FC ; 'ü'
JSR sub_F212
INC $7F0
BNE loc_F72A
loc_F758: ; F717j
LDY #$3 ; BGM_1ST_PHASE
LDA #8
BNE loc_F762
loc_F75E: ; F70Ej
LDY #1 ; BGM_GAME_OVER
LDA #1
loc_F762: ; F731j F75Cj
JSR init_music
LDX #$80 ; '€'
LDY #$80 ; '€'
loc_F769: ; F799j
JSR sub_F21A
LDA #$83 ; 'ƒ'
STA APU_PL1_SWEEP
LDA #$7F ; ''
STA APU_PL2_SWEEP
BNE loc_F78B
loc_F778: ; F6D3j
JSR init_music
LDX #4
LDY #4
BNE loc_F788
loc_F781: ; F6B9j F6C0j
JSR init_music
LDX #$80 ; '€'
LDY #$80 ; '€'
loc_F788: ; F77Fj
JSR sub_F212
loc_F78B: ; F776j
LDA #0
STA $7F0
BEQ loc_F72A
loc_F792: ; F6C7j F743j
JSR init_music
LDX #$80 ; '€'
LDY #$BA ; 'º'
BNE loc_F769
; End of function sub_F6ED
; ---------------------------------------------------------------------------
; BGM music
; 0 - Stage clear BGM
; 1 - Game over BGM
; 2 - Next Level start BGM (VS only)
; 3 - First Level start BGM
; 4 - Enemy fall BGM
; 5 - Perfect bonus BGM
; 6 - Balloon trip/Bonus game BGM
; 7 - Gulp (Piranha's food) BGM
; 8 - Parachutes Away BGM
; 9 - Try again BGM
; A - Bubble get BGM
; B - High score (VS only) BGM
; Relative offsets from the beginning of the array
mus_offsets: .BYTE $0C, $15, $1E, $27, $30, $39, $42, $4B, $54, $5D, $66, $6F
; for each BGM's header:
bgm00: .BYTE $0C ;
; Header format:
; B: unknown
; W: Ch1 (pulse 1) data address
; W: Ch2 (pulse 2) data address
; W: Ch3 (triangle) data address
; W: Ch4 (noise) data address
.WORD bgm00_ch01 ; 9 bytes length
.WORD bgm00_ch02 ; 19 bytes length
.WORD bgm00_ch03 ; 19 bytes length
.WORD bgm00_ch04 ; 7 bytes length
bgm_01: .BYTE $15
.WORD bgm01_ch01 ; 25 bytes length
.WORD bgm01_ch02 ; 89 bytes length
.WORD bgm01_ch03 ; 63 bytes length
.WORD bgm01_ch04 ; 15 bytes length
bgm_02: .BYTE $15
.WORD bgm02_ch01 ; 12 bytes length
.WORD bgm02_ch02 ; 25 bytes length
.WORD bgm02_ch03 ; 18 bytes length
.WORD bgm02_ch04 ; 26 bytes length
bgm_03: .BYTE $15
.WORD bgm03_ch01 ; 34 bytes length
.WORD bgm03_ch02 ; 31 bytes length
.WORD bgm03_ch03 ; 27 bytes length
.WORD bgm03_ch04 ; 31 bytes length
bgm_04: .BYTE $00
.WORD bgm04_ch01 ; 22 bytes length
.WORD chan_NULL
.WORD bgm04_ch03 ; 21 bytes length
.WORD chan_NULL
bgm_05: .BYTE $00
.WORD bgm05_ch01 ; 22 bytes length
.WORD bgm05_ch02 ; 17 bytes length
.WORD bgm05_ch03
.WORD bgm05_ch04
bgm_06: .BYTE $15
.WORD bgm06_ch01 ; 147 bytes length
.WORD bgm06_ch02 ; 138 bytes length
.WORD bgm06_ch03 ; 68 bytes length
.WORD bgm06_ch04 ; 48 bytes length
bgm_07: .BYTE $15
.WORD bgm07_ch01
.WORD bgm07_ch02 ; 18 bytes length
.WORD bgm07_ch03 ; 18 bytes length
.WORD chan_NULL
bgm_08: .BYTE $15
.WORD chan_NULL
.WORD bgm08_ch02 ; 15 bytes length
.WORD bgm08_ch03 ; 17 bytes length
.WORD chan_NULL
bgm_09: .BYTE $0C
.WORD bgm09_ch01
.WORD bgm09_ch02 ; 26 bytes length
.WORD bgm09_ch03 ; 25 bytes length
.WORD chan_NULL
bgm_10: .BYTE $00
.WORD bgm10_ch01 ; 18 ($12) bytes total
.WORD bgm10_ch02
.WORD bgm10_ch03
.WORD chan_NULL
bgm_11: .BYTE $15
.WORD bgm11_ch01
.WORD bgm11_ch02
.WORD bgm11_ch03
.WORD bgm11_ch04
; Channel data below
; unknown (so far) format
; looks like note numbers + delays
bgm00_ch01: .BYTE $82, $1C, $02, $1C, $02, $02, $1C, $1C, $00
; 9 bytes length
bgm00_ch02: .BYTE $81, $10, $0A, $32, $28, $80, $32, $02, $32, $02, $82, $32, $81, $06, $02, $06
.BYTE $02, $82, $32 ; 19 bytes length
bgm00_ch03: .BYTE $81, $66, $1A, $10, $0A, $80, $10, $02, $10, $02, $82, $10, $81, $16, $02, $16
.BYTE $02, $82, $0A ; 19 bytes length
bgm00_ch04: .BYTE $83, $03, $0C, $82, $03, $0C, $0C
bgm10_ch01: .BYTE $82, 2, $80, 8, 2, $10, 2, $16, 2, $64, 2, 2, 2, $1A, $8B, 2
.BYTE 2, 0 ; 18 bytes length
bgm10_ch02: .BYTE $82, $02, $8B, $02, $80, $2E, $02, $08, $02, $10, $02, $16, $02, $02, $02, $12
.BYTE $8B, $02 ; 18 bytes length
bgm10_ch03: .BYTE $82, $02, $8B, $02, $02, $80, $10, $02, $16, $02, $64, $02, $6C, $02, $02, $02
.BYTE $68 ; 17 bytes length
bgm09_ch01: .BYTE $80, $12, $02, $0C, $02, $04, $02, $0C, $02, $04, $02, $2A, $02, $81, $04, $02
.BYTE $80, $04, $02, $81, $04, $88, $02, $02, $00 ; 25 bytes length
bgm09_ch02: .BYTE $88, $02, $02, $80, $04, $02, $2A, $02, $24, $02, $2A, $02, $24, $02, $1C, $02
.BYTE $81, $22, $02, $80, $22, $02, $81, $24, $88, $02 ; 26 bytes length
bgm09_ch03: .BYTE $88, $02, $80, $68, $02, $60, $02, $12, $02, $60, $02, $12, $02, $0C, $02, $81
.BYTE $10, $02, $80, $10, $02, $81, $12, $88, $02 ; 25 bytes length
bgm06_ch01: .BYTE $81, $02, $02, $1C, $02, $02, $02, $1C, $1C, $02, $02, $1C, $02, $02, $1C, $1C
.BYTE $02, $02, $02, $02, $1C, $02, $1C, $1C, $02, $88, $1C, $1C, $1C, $1C, $1C, $1C ; 147 bytes length
.BYTE $C7, $81, $5A, $02, $5A, $02, $2A, $02, $5A, $02, $FF, $88, $1C, $1C, $1C, $1C
.BYTE $1C, $1C, $81, $46, $02, $46, $02, $02, $80, $46, $46, $81, $46, $02, $C2, $81
.BYTE $46, $46, $80, $02, $46, $81, $02, $FF, $80, $02, $46, $46, $46, $81, $46, $02
.BYTE $80, $02, $46, $46, $46, $81, $46, $02, $C2, $80, $02, $46, $81, $02, $46, $46
.BYTE $FF, $C2, $81, $46, $46, $80, $32, $32, $81, $02, $FF, $C5, $80, $32, $32, $46
.BYTE $FF, $02, $C4, $8D, $04, $04, $46, $FF, $C4, $2A, $2A, $46, $FF, $C4, $24, $24
.BYTE $46, $FF, $C4, $1C, $1C, $46, $FF, $C4, $81, $5A, $02, $5A, $02, $2A, $02, $5A
.BYTE $02, $FF, $00
bgm06_ch02: .BYTE $81, $32, $02, $02, $06, $0C, $32, $02, $02, $8A, $2E, $8B, $02, $8A, $2E, $8B
.BYTE $02, $8A, $2E, $8B, $02, $88, $2E, $32, $2E, $D0, $8C, $2C, $24, $FF, $D0, $2E ; 138 bytes length
.BYTE $20, $FF, $C3, $80, $28, $02, $82, $02, $80, $2C, $02, $32, $02, $24, $02, $82
.BYTE $02, $81, $02, $80, $28, $02, $06, $02, $28, $02, $81, $02, $80, $24, $02, $32
.BYTE $02, $24, $02, $FF, $80, $28, $02, $82, $02, $80, $2C, $02, $32, $02, $24, $02
.BYTE $82, $02, $89, $0C, $0A, $08, $06, $32, $30, $2E, $2C, $2A, $28, $26, $24, $02
.BYTE $02, $02, $86, $02, $C7, $84, $02, $FF, $C4, $80, $28, $02, $82, $02, $80, $2C
.BYTE $02, $32, $02, $24, $02, $82, $02, $81, $02, $80, $28, $02, $06, $02, $28, $02
.BYTE $81, $02, $80, $24, $02, $32, $02, $24, $02, $FF
bgm06_ch03: .BYTE $81, $14, $02, $02, $14, $1A, $14, $02, $02, $88, $10, $10, $10, $10, $14, $10
.BYTE $85, $3C, $81, $44, $85, $4A, $81, $44, $88, $28, $24, $20, $46, $42, $40, $D2 ; 68 bytes length
.BYTE $81, $3C, $02, $02, $44, $02, $02, $02, $4A, $02, $46, $36, $36, $38, $38, $02
.BYTE $3A, $02, $80, $3C, $3C, $81, $02, $24, $02, $02, $2C, $24, $88, $24, $1E, $46
.BYTE $36, $38, $3A, $FF
bgm06_ch04: .BYTE $D8, $81, $06, $FF, $C6, $88, $06, $FF, $C7, $81, $06, $06, $80, $06, $06, $81
.BYTE $06, $06, $80, $06, $06, $81, $06, $06, $FF, $C6, $88, $06, $FF, $E0, $81, $06 ; 48 bytes length
.BYTE $06, $FF, $82, $0F, $81, $06, $06, $C8, $06, $06, $80, $06, $06, $81, $06, $FF
bgm02_ch02: .BYTE $C8, $82, $02, $80, $06, $06, $06, $06, $82, $06, $89, $0C, $02, $06, $82, $02
.BYTE $02, $89, $08, $12, $08, $12, $02, $08, $FF ; 25 bytes length
bgm02_ch01: .BYTE $C2, $82, $02, $02, $1C, $02, $FF, $02, $02, $1C, $02, $00 ; 12 bytes length
bgm02_ch03: .BYTE $C8, $82, $02, $02, $88, $46, $3C, $46, $82, $02, $89, $2A, $20, $4A, $82, $42
.BYTE $02, $FF ; 18 bytes length
bgm02_ch04: .BYTE $C3, $82, $03, $89, $06, $03, $06, $82, $03, $89, $06, $03, $06, $03, $06, $03
.BYTE $06, $03, $06, $06, $03, $03, $06, $03, $09, $FF ; 26 bytes length
bgm01_ch01: .BYTE $84, $02, $02, $82, $1C, $1C, $C3, $82, $1C, $1C, $81, $1C, $1C, $1C, $02, $FF
.BYTE $88, $1C, $1C, $1C, $1C, $1C, $1C, $1C, $00 ; 25 bytes length
bgm01_ch02: .BYTE $80, $02, $02, $0E, $0C, $08, $02, $04, $02, $30, $04, $30, $2E, $2A, $02, $26
.BYTE $02, $24, $26, $2A, $2E, $2A, $2E, $30, $32, $C8, $8C, $04, $24, $FF, $83, $02 ; 89 bytes length
.BYTE $80, $0E, $02, $0E, $02, $0C, $02, $0E, $02, $60, $02, $02, $02, $0E, $02, $0C
.BYTE $02, $02, $02, $0E, $02, $0C, $02, $0E, $02, $60, $02, $02, $02, $0E, $02, $0C
.BYTE $02, $0E, $02, $0E, $02, $0C, $02, $0E, $02, $60, $02, $02, $02, $0E, $02, $0C
.BYTE $02, $88, $60, $18, $16, $12, $0E, $0C, $0E
bgm01_ch03: .BYTE $80, $02, $02, $16, $12, $0E, $02, $0C, $02, $08, $0C, $08, $04, $30, $02, $2E
.BYTE $02, $2A, $2E, $30, $04, $30, $04, $08, $0A, $C8, $8C, $0C, $2A, $FF, $83, $02 ; 63 bytes length
.BYTE $81, $3E, $3E, $82, $46, $1C, $46, $81, $02, $38, $3E, $02, $82, $46, $1C, $82
.BYTE $48, $48, $81, $3E, $3E, $82, $38, $88, $24, $20, $1C, $48, $46, $42, $3E
bgm01_ch04: .BYTE $84, $03, $03, $82, $09, $09, $C6, $82, $03, $0C, $FF, $C6, $88, $06, $FF
; 15 bytes length
bgm08_ch02: .BYTE $ED, $89, $2A, $02, $04, $0C, $02, $04, $08, $02, $30, $26, $02, $30, $FF
; 15 bytes length
bgm08_ch03: .BYTE $80, $02, $ED, $89, $0C, $02, $12, $60, $02, $12, $18, $02, $0E, $08, $02, $0E
.BYTE $FF ; 17 bytes length
bgm07_ch01: .BYTE $80, $42, $02, $48, $02, $1E, $02, $24, $02, $02, $02, $2A, $02, $C6, $8C, $30
.BYTE $2A, $FF, $00 ; 19 bytes length
bgm07_ch03: .BYTE $80, $24, $02, $2A, $02, $30, $02, $06, $02, $02, $02, $0C, $02, $C6, $8C, $12
.BYTE $18, $FF ; 18 bytes length
bgm07_ch02: .BYTE $80, $36, $02, $3C, $02, $42, $02, $48, $02, $02, $02, $1E, $02, $C6, $8C, $24
.BYTE $1E, $FF ; 18 bytes length
bgm04_ch01: .BYTE $80, $68, $66, $64, $62, $81, $02, $80, $70, $6C, $66, $62, $18, $14, $10, $0A
.BYTE $06, $30, $2C, $28, $02, $00 ; 22 bytes length
bgm04_ch03: .BYTE $80, $1A, $18, $16, $14, $81, $02, $80, $02, $70, $6C, $66, $62, $18, $14, $10
.BYTE $0A, $06, $30, $2C, $28 ; 21 bytes length
bgm03_ch01: .BYTE $C2, $88, $1C, $1C, $1C, $1C, $1C, $1C, $83, $1C, $80, $04, $04, $2A, $02, $82
.BYTE $1C, $FF, $81, $5A, $02, $5A, $02, $2A, $02, $5A, $1C, $81, $5A, $02, $5A, $02 ; 34 bytes length
.BYTE $5A, $00
bgm03_ch02: .BYTE $88, $2E, $2E, $2E, $30, $04, $30, $C4, $80, $2E, $04, $FF, $83, $02, $88, $2E
.BYTE $2E, $2E, $30, $04, $30, $C4, $80, $2E, $04, $FF, $83, $02, $84, $02, $02 ; 31 bytes length
bgm03_ch03: .BYTE $C2, $88, $3E, $3E, $3E, $42, $46, $42, $84, $3E, $FF, $85, $3E, $81, $3E, $88
.BYTE $1C, $46, $1C, $81, $02, $3E, $3E, $3E, $82, $34, $02 ; 27 bytes length
bgm03_ch04: .BYTE $C2, $88, $06, $06, $06, $06, $06, $06, $82, $06, $06, $06, $06, $FF, $C2, $81
.BYTE $06, $06, $80, $06, $06, $81, $06, $06, $06, $06, $80, $06, $06, $FF, $09
bgm05_ch01: .BYTE $80, $10, $02, $10, $02, $10, $02, $0C, $0C, $0C, $02, $0C, $02, $14, $14, $14
.BYTE $02, $14, $02, $85, $10, $00 ; 22 bytes length
bgm05_ch02: .BYTE $80, $32, $02, $32, $02, $32, $02, $C2, $32, $32, $32, $02, $32, $02, $FF, $85
.BYTE $32 ; 17 bytes length
bgm05_ch03: .BYTE $80, $66, $02, $66, $02, $66, $02, $62, $62, $62, $02, $62, $02, $68, $68, $68
.BYTE $02, $68, $02, $85, $66
bgm05_ch04: .BYTE $85, $0C, $0C, $0C, $0C
bgm11_ch01: .BYTE $89, $24, $02, $82, $2A, $89, $20, $02, $02, $02, $2E, $2A, $24, $20, $02, $1C
.BYTE $02, $02, $46, $02, $02, $82, $46, $89, $02, $24, $02, $2A, $02, $02, $20, $82
.BYTE $20, $89, $2E, $02, $04, $04, $02, $2E, $02, $02, $26, $02, $02, $82, $20, $89
.BYTE $1C, $02, $02, $42, $44, $46, $1C, $20, $02, $1C, $02, $02, $20, $24, $02, $82
.BYTE $02, $83, $2A, $89, $02, $24, $02, $20, $1C, $02, $46, $1C, $02, $02, $1C, $02
.BYTE $1C, $82, $02, $1C, $1C, $1C, $89, $1C, $02, $82, $02, $83, $42, $89, $02, $00
bgm11_ch02: .BYTE $89, $02, $02, $20, $02, $02, $46, $02, $02, $82, $48, $89, $02, $82, $46, $89
.BYTE $02, $02, $3E, $02, $02, $82, $3E, $89, $40, $02, $02, $20, $02, $02, $2E, $82
.BYTE $48, $02, $82, $26, $89, $02, $02, $1C, $02, $02, $82, $46, $89, $46, $83, $02
.BYTE $89, $40, $02, $40, $02, $02, $02, $42, $02, $82, $02, $83, $1E, $89, $02, $40
.BYTE $02, $02, $40, $02, $02, $3E, $02, $02, $3E, $02, $3C, $02, $02, $02, $82, $42
.BYTE $40, $3E, $89, $3C, $02, $82, $02, $83, $5E, $89, $02
bgm11_ch03: .BYTE $82, $34, $89, $34, $02, $3A, $82, $3C, $3C, $3E, $3E, $42, $89, $42, $02, $1E
.BYTE $1C, $02, $82, $34, $89, $3C, $82, $46, $3A, $89, $38, $02, $38, $82, $3E, $46
.BYTE $1C, $3E, $3E, $40, $40, $89, $42, $40, $3E, $3C, $02, $82, $46, $89, $46, $3C
.BYTE $02, $3A, $82, $38, $38, $42, $42, $34, $3C, $3A, $38, $34, $89, $02, $02, $83
.BYTE $42, $89, $02
bgm11_ch04: .BYTE $E8, $89, $06, $03, $06, $09, $03, $06, $06, $06, $03, $09, $03, $06, $FF, $FF
.BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
.BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
.BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
.BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
.BYTE $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF
tbl_dmp00:
.BYTE <tbl_JOYDUMP00
.BYTE <tbl_JOYDUMP02
tbl_dmp01:
.BYTE <tbl_JOYDUMP01
.BYTE <tbl_JOYDUMP03
tbl_dmp02:
.BYTE >tbl_JOYDUMP00
.BYTE >tbl_JOYDUMP02
tbl_dmp03:
.BYTE >tbl_JOYDUMP01
.BYTE >tbl_JOYDUMP03
tbl_JOYDUMP00:
.BYTE $00, $80, $00, $80, $00, $80, $00, $80, $00, $80, $00, $01, $81, $01, $81, $01
.BYTE $81, $01, $81, $01, $81, $01, $81, $01, $00, $02, $00, $80, $00, $80, $00, $80 ; Joypad dumps
.BYTE $00, $01, $81, $01, $81, $01, $81, $80, $00, $82, $02, $82, $02, $82, $80, $00
.BYTE $02, $82, $02, $00, $80, $00, $80, $00, $80, $00, $80, $00, $80, $00, $80, $00
.BYTE $02, $82, $02, $82, $80, $00, $02, $82, $02, $00, $02, $82, $02, $00, $80, $00
.BYTE $80, $81, $01, $81, $01, $00, $80, $02, $82, $02, $82, $02, $82, $02, $00, $80
.BYTE $00, $80, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
tbl_JOYDUMP01:
.BYTE $00, $02, $05, $05, $05, $05, $05, $05, $07, $05, $06, $02, $06, $17, $06, $07
.BYTE $06, $3A, $05, $06, $05, $05, $06, $0B, $27, $2A, $21, $08, $06, $05, $06, $05
.BYTE $04, $02, $07, $05, $07, $09, $05, $02, $07, $06, $06, $07, $07, $01, $06, $0C
.BYTE $0C, $07, $02, $14, $06, $07, $06, $09, $05, $08, $05, $09, $07, $1E, $07, $15
.BYTE $01, $07, $05, $02, $06, $08, $3C, $0A, $08, $26, $15, $07, $03, $06, $06, $06
.BYTE $05, $01, $06, $06, $0D, $01, $07, $06, $05, $08, $07, $09, $05, $02, $0D, $07
.BYTE $16, $0D, $FF, $AC, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00
tbl_JOYDUMP02:
.BYTE $00, $80, $00, $80, $00, $80, $00, $80, $00, $80, $00, $80, $00, $80, $00, $80
.BYTE $00, $80, $00, $80, $00, $80, $00, $80, $00, $80, $00, $80, $81, $01, $81, $01
.BYTE $81, $01, $00, $80, $00, $02, $82, $02, $82, $02, $82, $02, $82, $02, $82, $02
.BYTE $82, $02, $00, $81, $01, $81, $01, $00, $80, $00, $80, $00, $80, $81, $01, $81
.BYTE $01, $00, $80, $00, $80, $00, $80, $00, $80, $00, $80, $00, $80, $00, $80, $00
.BYTE $80, $00, $80, $00, $80, $00, $80, $00, $80, $82, $02, $82, $02, $00, $02, $00
.BYTE $80, $00, $80, $00, $80, $00, $02, $00, $00, $00, $00, $00, $00, $00, $00, $00
tbl_JOYDUMP03:
.BYTE $03, $05, $07, $06, $07, $05, $07, $05, $07, $05, $07, $05, $06, $05, $1E, $06
.BYTE $22, $06, $08, $05, $13, $06, $0F, $06, $13, $08, $07, $01, $05, $07, $06, $06
.BYTE $05, $01, $07, $06, $05, $02, $06, $07, $05, $06, $06, $06, $06, $07, $07, $07
.BYTE $06, $02, $15, $07, $06, $07, $01, $04, $07, $05, $08, $06, $06, $01, $06, $06
.BYTE $02, $05, $06, $06, $08, $07, $06, $09, $06, $1E, $06, $12, $05, $09, $05, $0A
.BYTE $02, $07, $05, $07, $07, $21, $05, $26, $02, $04, $07, $08, $01, $4A, $06, $01
.BYTE $08, $14, $08, $08, $03, $2A, $0E, $FF, $BA, $00, $00, $00, $00, $00, $00, $00
dip_item0_subitem0:
; THREE
.BYTE 8
.BYTE $21, $37
.BYTE 5
.byte $1d,$11,$1b,$0e,$0e
dip_item0_subitem1:
; FOUR
.BYTE 8
.BYTE $21, $37
.BYTE 5
.byte $24,$0f,$18,$1e,$1b
dip_item0_subitem2:
; FIVE
.BYTE 8
.BYTE $21, $37
.BYTE 5
.byte $24,$0f,$12,$1f,$0e
dip_item0_subitem3:
; SIX
.BYTE 8
.BYTE $21, $37
.BYTE 5
.byte $24,$24,$1c,$12,$21
dip_item1_subitem0:
; EASY
.BYTE 9
.BYTE $21, $76
.BYTE 6
.byte $24,$24,$0e,$0a,$1c,$22
dip_item1_subitem1:
; NORMAL
.BYTE 9
.BYTE $21, $76
.BYTE 6
.byte $17,$18,$1b,$16,$0a,$15
dip_item1_subitem2:
; MEDIUM
.BYTE 9
.BYTE $21, $76
.BYTE 6
.byte $16,$0e,$0d,$12,$1e,$16
dip_item1_subitem3:
; HARD
.BYTE 9
.BYTE $21, $76
.BYTE 6
.byte $24,$24,$11,$0a,$1b,$0d
dip_item2_subitem0:
; LO
.BYTE 7
.BYTE $21, $B8
.BYTE 4
.byte $24,$15,$18,$20
dip_item2_subitem1:
; HIGH
.BYTE 7
.BYTE $21, $B8
.BYTE 4
.byte $11,$12,$10,$11
dip_item3_subitem0:
; 10000 PTS
.BYTE 12
.BYTE $21, $F3
.BYTE 9
.byte $01,$00,$00,$00,$00,$24,$19,$1d,$1c
dip_item3_subitem1:
; 20000 PTS
.BYTE 12
.BYTE $21, $F3
.BYTE 9
.byte $02,$00,$00,$00,$00,$24,$19,$1d,$1c
dip_item3_subitem2:
; 40000 PTS
.BYTE 12
.BYTE $21, $F3
.BYTE 9
.byte $04,$00,$00,$00,$00,$24,$19,$1d,$1c
dip_item3_subitem3:
; NONE
.BYTE 12
.BYTE $21, $F3
.BYTE 9
.byte $24,$24,$24,$24,$24,$17,$18,$17,$0e
dip_item4_subitem0:
; ARCADE
.BYTE 10
.BYTE $22, $35
.BYTE 7
.byte $24,$0a,$1b,$0c,$0a,$0d,$0e
dip_item4_subitem1:
; CONSOLE
.BYTE 10
.BYTE $22, $35
.BYTE 7
.byte $0c,$18,$17,$1c,$18,$15,$0e
dip_switches:
.word dip_dip0, dip_dip1, dip_dip2, dip_dip3, dip_dip4
dip_dip0:
.WORD dip_item0_subitem0, dip_item0_subitem1, dip_item0_subitem2, dip_item0_subitem3
dip_dip1:
.WORD dip_item1_subitem0, dip_item1_subitem1, dip_item1_subitem2, dip_item1_subitem3
dip_dip2:
.WORD dip_item2_subitem0, dip_item2_subitem1
dip_dip3:
.WORD dip_item3_subitem0, dip_item3_subitem1, dip_item3_subitem2, dip_item3_subitem3
dip_dip4:
.WORD dip_item4_subitem0, dip_item4_subitem1
dip_oneswitch_on:
.byte $ce, $de, $ee, $fe
.byte $cf, $df, $ef, $ff
dip_oneswitch_off:
.byte $cc, $dc, $ec, $fc
.byte $cd, $dd, $ed, $fd
dip_addresses:
.word $2284, $2285, $2287, $2288, $228A, $228B, $228D, $228E
.word $2291, $2292, $2294, $2295, $2297, $2298, $229A, $229B
dip_max_values:
.byte 3, 3, 1, 3, 1
_dip_values_array_update:
lda #1
sta bubble_flag
jsr loc_F326 ; pop balloon
dip_values_array_update:
lda #0
ldx #8
:
sta dipmenu_states_1b-1,x
dex
bne :-
ldx #1
lda dip_LIVES
lsr a
bcc :+
stx dipmenu_states_1b
:
lsr a
bcc :+
stx dipmenu_states_1b+1
:
; process next dip
lda dip_DIFFICULTY
lsr a
bcc :+
stx dipmenu_states_1b+2
:
lsr a
bcc :+
stx dipmenu_states_1b+3
:
; process next dip
ldx #1
lda dip_ENEMY_REGEN
and #1
beq :+
stx dipmenu_states_1b+4
:
; process next dip
lda dip_BONUS
lsr a
bcc :+
stx dipmenu_states_1b+5
:
lsr a
bcc :+
stx dipmenu_states_1b+6
:
; process next dip
lda dip_NESMODE
and #1
beq :+
stx dipmenu_states_1b+7
:
rts