Skip to content

Instantly share code, notes, and snippets.

@s-macke
Last active January 25, 2026 20:34
Show Gist options
  • Select an option

  • Save s-macke/595982d46d6699b69e1f0e051e7bd451 to your computer and use it in GitHub Desktop.

Select an option

Save s-macke/595982d46d6699b69e1f0e051e7bd451 to your computer and use it in GitHub Desktop.
; This is an example of what coding agents can do as of Jan 2026.
; Given a disassembled SID music file, a coding agent can reproduce the music pretty well.
; Original music: https://youtu.be/84hIKDUIpsM?si=QCnMztPuYnW-no1Y&t=16
; Notes:
; The assembly code copies memory around and self-modifies while running.
; Also, there is no 1:1 mapping from a synthesizer to a MIDI file.
; The SID synthesizer chip is far more capable than standard MIDI.
; Coding Agent used: Codex-CLI with GPT-5.2-Codex model.
;
; Initial prompt:
; "The file Nippon.asm is a disassembly of a so-called SID file,
; a music format which requires a C64 architecture to run and emulates a 6581
; SID synthesizer chip. This file plays exactly one tune with three voices.
; Analyze the disassembly, extract the music data, and write a Python script to
; produce an equivalent MIDI file for that music. The file Nippon_origin_0xB8F8.bin
; contains the binary equivalent of the disassembly. Use that to extract the music."
;
; Time to first result: 20 minutes.
;
; Second prompt: "Reevaluate your assignment and check everything."
; Another 7 minutes.
; 76% context left.
;
; Third prompt:
; "Change the Python file so that it produces a .wav file.
; You can now try to fully reproduce the capabilities of the synthesizer chip."
;
; Another 10 minutes.
; 69% context left.
;
; ============================================================
; AUTO-GENERATED FILE - DO NOT EDIT
; ============================================================
; Generated: 2026-01-25T19:50:31Z
; Source: testdata/Nippon.sid
; ============================================================
.ORG $B8F8
; === DATA SECTION ===
$B8F8 .BYTE $02,$00,$00,$00,$00,$00,$00,$00 ; "........"
$B900 .BYTE $00,$00,$00,$00,$00,$0F,$00,$0F,$00,$00,$00,$00,$00,$0F,$00,$0F ; "................"
$B910 .BYTE $00,$00,$00,$00,$00,$0F,$00,$0F,$00,$1E,$50,$31,$31,$81,$81,$81 ; "..........P11..."
$B920 .BYTE $81,$81,$81,$81,$81,$13,$13,$02,$0A,$FF,$04,$08,$02,$0F,$0B,$89 ; "................"
$B930 .BYTE $00,$0F,$0C,$2B,$00,$07,$00,$00,$00,$0F,$00,$00,$00,$00,$00,$00 ; "...+............"
$B940 .BYTE $00,$00,$00,$00,$00,$06,$08,$06,$0A,$0A,$08,$06,$44,$CA,$4A,$9A ; "............D.J."
$B950 .BYTE $5B,$0F,$2C,$0B,$7A,$AE,$0C,$07,$00,$88,$B9,$BC,$00,$07,$00,$00 ; "[.,.z..........."
$B960 .BYTE $00,$8F,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$09,$06,$05 ; "................"
$B970 .BYTE $05,$06,$06,$05,$07,$40,$10,$40,$40,$40,$40,$14,$40,$20,$20,$40 ; ".....@.@@@@.@ @"
$B980 .BYTE $00,$20,$40,$40,$00,$40,$00,$00,$00,$40,$00,$00,$00,$00,$00,$00 ; ". @@.@...@......"
$B990 .BYTE $00,$00,$00,$00,$00,$80,$00,$00,$40,$40,$80,$80,$80,$60,$0A,$80 ; "........@@...`.."
$B9A0 .BYTE $40,$00,$80,$0F,$FE,$64,$00,$10,$00,$14,$40,$0A,$00,$01,$00,$00 ; "@....d....@....."
$B9B0 .BYTE $00,$60,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; ".`.............."
$B9C0 .BYTE $80,$80,$00,$00,$80,$10,$00,$40,$40,$40,$60,$47,$C0,$10,$00,$10 ; ".......@@@`G...."
$B9D0 .BYTE $00,$00,$50,$40,$00,$10,$00,$00,$00,$10,$00,$00,$00,$00,$00,$00 ; "..P@............"
$B9E0 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$A0,$80,$00,$00,$10,$78,$00,$00 ; ".............x.."
$B9F0 .BYTE $00,$00,$00,$00,$00,$C8,$00,$00,$00,$96,$00,$00,$00,$00,$00,$00 ; "................"
$BA00 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BA10 .BYTE $00,$00,$00,$00,$00,$01,$00,$00,$00,$00,$00,$00,$00,$01,$00,$00 ; "................"
$BA20 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BA30 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$C0,$00,$C0 ; "................"
$BA40 .BYTE $00,$00,$00,$00,$00,$40,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; ".....@.........."
$BA50 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BA60 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$0A,$01,$00,$01,$01,$00,$00 ; "................"
$BA70 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BA80 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$80,$80,$80 ; "................"
$BA90 .BYTE $80,$41,$40,$FF,$60,$9B,$00,$00,$00,$64,$A0,$80,$00,$00,$00,$00 ; ".A@.`....d......"
$BAA0 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$00,$00 ; ".............@.."
$BAB0 .BYTE $40,$FF,$00,$80,$80,$05,$02,$04,$02,$01,$01,$02,$01,$01,$00,$00 ; "@..............."
$BAC0 .BYTE $00,$0A,$05,$02,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BAD0 .BYTE $00,$00,$00,$00,$00,$01,$00,$00,$10,$10,$00,$10,$18,$00,$00,$00 ; "................"
$BAE0 .BYTE $00,$00,$00,$00,$00,$00,$00,$05,$00,$00,$02,$00,$00,$02,$00,$00 ; "................"
$BAF0 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BB00 .BYTE $00,$00,$00,$00,$00,$40,$14,$20,$00,$C0,$20,$00,$00,$30,$00,$60 ; ".....@. .. ..0.`"
$BB10 .BYTE $00,$18,$FF,$00,$00,$FC,$00,$00,$00,$40,$00,$00,$00,$00,$00,$00 ; ".........@......"
$BB20 .BYTE $00,$00,$00,$00,$00,$32,$00,$00,$40,$00,$FF,$00,$80,$00,$00,$00 ; ".....2..@......."
$BB30 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BB40 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BB50 .BYTE $02,$00,$03,$00,$01,$04,$04,$04,$00,$20,$01,$00,$00,$00,$00,$01 ; "......... ......"
$BB60 .BYTE $00,$00,$00,$00,$00,$01,$00,$00,$00,$04,$00,$00,$00,$00,$00,$00 ; "................"
$BB70 .BYTE $00,$00,$00,$00,$00,$01,$00,$00,$08,$00,$40,$00,$10,$F0,$F0,$80 ; "..........@....."
$BB80 .BYTE $F0,$00,$F0,$F0,$F0,$F0,$00,$F0,$00,$F0,$F0,$00,$00,$00,$00,$00 ; "................"
$BB90 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$F0,$00,$00 ; "................"
$BBA0 .BYTE $FF,$F0,$F0,$F0,$F0,$00,$83,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BBB0 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BBC0 .BYTE $00,$00,$00,$00,$00,$C7,$00,$00,$85,$43,$87,$71,$00,$6D,$95,$73 ; ".........C.q.m.s"
$BBD0 .BYTE $95,$88,$95,$A2,$95,$C1,$95,$D4,$95,$FC,$95,$00,$00,$00,$00,$B1 ; "................"
$BBE0 .BYTE $96,$60,$96,$73,$96,$23,$96,$4B,$96,$C6,$96,$D8,$96,$00,$00,$00 ; ".`.s.#.K........"
$BBF0 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BC00 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$03 ; "................"
$BC10 .BYTE $03,$03,$03,$03,$03,$03,$03,$03,$03,$0E,$FF,$00,$09,$FF,$0C,$FF ; "................"
$BC20 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BC30 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BC40 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BC50 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BC60 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BC70 .BYTE $00,$01,$04,$05,$06,$06,$06,$01,$04,$05,$06,$06,$06,$0F,$FF,$00 ; "................"
$BC80 .BYTE $0A,$FF,$0C,$0C,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BC90 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BCA0 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BCB0 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BCC0 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BCD0 .BYTE $00,$00,$00,$00,$00,$02,$02,$02,$02,$00,$01,$02,$02,$02,$02,$01 ; "................"
$BCE0 .BYTE $06,$0F,$FF,$00,$0B,$FF,$0D,$0D,$FF,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BCF0 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BD00 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BD10 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BD20 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BD30 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$03,$03,$03,$00,$00 ; "................"
$BD40 .BYTE $00,$03,$03,$03,$00,$00,$00,$00,$14,$00,$05,$05,$05,$08,$08,$08 ; "................"
$BD50 .BYTE $08,$24,$24,$24,$24,$24,$24,$00,$00,$00,$02,$00,$02,$02,$02,$02 ; ".$$$$$$........."
$BD60 .BYTE $02,$02,$02,$02,$02,$02,$00,$00,$00,$00,$00,$08,$08,$08,$08,$02 ; "................"
$BD70 .BYTE $02,$02,$02,$02,$02,$05,$02,$02,$02,$02,$02,$02,$02,$02,$02,$00 ; "................"
$BD80 .BYTE $00,$00,$00,$00,$01,$01,$01,$01,$03,$23,$09,$09,$09,$23,$23,$09 ; ".........#...##."
$BD90 .BYTE $00,$02,$08,$02,$23,$09,$02,$08,$09,$02,$02,$02,$09,$05,$04,$05 ; "....#..........."
$BDA0 .BYTE $06,$06,$06,$07,$04,$05,$06,$06,$06,$05,$06,$00,$14,$05,$06,$06 ; "................"
$BDB0 .BYTE $06,$10,$10,$10,$10,$10,$08,$0E,$24,$0E,$00,$07,$00,$07,$02,$07 ; "........$......."
$BDC0 .BYTE $02,$02,$02,$02,$02,$02,$02,$02,$02,$02,$00,$00,$00,$00,$00,$08 ; "................"
$BDD0 .BYTE $08,$08,$08,$02,$02,$02,$02,$05,$02,$02,$02,$02,$02,$02,$02,$02 ; "................"
$BDE0 .BYTE $02,$02,$02,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$09,$09,$09 ; "................"
$BDF0 .BYTE $09,$09,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23,$23 ; "..##############"
$BE00 .BYTE $23,$05,$05,$03,$03,$01,$05,$07,$05,$03,$03,$01,$01,$06,$01,$01 ; "#..............."
$BE10 .BYTE $14,$05,$00,$00,$00,$08,$0E,$0E,$0E,$26,$26,$26,$26,$08,$00,$00 ; ".........&&&&..."
$BE20 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$BE30 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00,$00,$00,$00,$00,$00 ; "................"
$BE40 .BYTE $00,$0A,$00,$0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A,$25,$25,$25,$25 ; "............%%%%"
$BE50 .BYTE $25,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "%..............."
$BE60 .BYTE $00,$00,$00,$00,$00,$69,$00,$00,$00,$00,$FF,$CF,$6B,$41,$3F,$70 ; ".....i......kA?p"
$BE70 .BYTE $3D,$6C,$38,$69,$3A,$70,$41,$3F,$6B,$3F,$6C,$3C,$3A,$6F,$38,$FF ; "=l8i:pA?k?l<:o8."
$BE80 .BYTE $CF,$6B,$35,$33,$70,$31,$6C,$2C,$6C,$2E,$31,$6F,$2E,$70,$35,$33 ; ".k53p1l,l.1o.p53"
$BE90 .BYTE $6B,$33,$6C,$30,$2E,$2C,$29,$6A,$2C,$FF,$C0,$F3,$6F,$25,$6C,$00 ; "k3l0.,)j,...o%l."
$BEA0 .BYTE $1D,$70,$22,$6C,$1D,$70,$22,$6C,$1D,$C2,$6F,$1B,$6C,$C0,$00,$1B ; ".p"l.p"l..o.l..."
$BEB0 .BYTE $70,$20,$6C,$1B,$70,$20,$6C,$1B,$FF,$F1,$F3,$6B,$22,$C6,$6F,$25 ; "p l.p l....k".o%"
$BEC0 .BYTE $69,$2E,$69,$27,$6F,$2C,$83,$C8,$6C,$31,$33,$FF,$C0,$69,$00,$6D ; "i.i'o,..l13..i.m"
$BED0 .BYTE $5F,$3A,$FE,$CC,$6C,$38,$CE,$3C,$C0,$6B,$3A,$6D,$35,$00,$38,$3A ; "_:..l8.<.k:m5.8:"
$BEE0 .BYTE $38,$35,$6A,$33,$6C,$00,$6B,$00,$A3,$6D,$2C,$2C,$2C,$2C,$6C,$25 ; "85j3l.k..m,,,,l%"
$BEF0 .BYTE $25,$20,$20,$FF,$C0,$86,$6A,$3D,$6C,$A5,$3D,$86,$3F,$6B,$3D,$6A ; "% ...j=l.=.?k=j"
$BF00 .BYTE $46,$6C,$A5,$3D,$86,$41,$6B,$46,$6A,$41,$6C,$A5,$3D,$86,$3F,$6B ; "Fl.=.AkFjAl.=.?k"
$BF10 .BYTE $3F,$6A,$44,$6C,$A5,$3D,$86,$44,$6B,$3F,$FF,$CF,$70,$3D,$6D,$3A ; "?jDl.=.Dk?..p=m:"
$BF20 .BYTE $38,$70,$3A,$6D,$38,$35,$6B,$33,$C9,$35,$CF,$31,$2E,$6F,$2C,$6C ; "8p:m85k3.5.1.o,l"
$BF30 .BYTE $00,$6D,$29,$2C,$6C,$2E,$30,$33,$35,$38,$3A,$3C,$41,$6F,$3F,$6C ; ".m),l.0358:<Ao?l"
$BF40 .BYTE $3D,$3F,$FF,$C0,$6F,$19,$6C,$00,$22,$69,$1B,$70,$20,$6C,$1B,$70 ; "=?..o.l."i.p l.p"
$BF50 .BYTE $20,$6C,$1B,$C4,$69,$22,$27,$FF,$6B,$00,$69,$C0,$1D,$00,$1B,$00 ; " l..i"'.k.i....."
$BF60 .BYTE $19,$00,$16,$6A,$85,$00,$6B,$31,$C9,$33,$FF,$6B,$00,$C0,$69,$29 ; "...j..k1.3.k..i)"
$BF70 .BYTE $CF,$6D,$35,$38,$3A,$3D,$3F,$6C,$41,$6D,$3F,$69,$41,$6C,$35,$38 ; ".m58:=?lAm?iAl58"
$BF80 .BYTE $3A,$3D,$41,$70,$3F,$6B,$3F,$3F,$6A,$00,$85,$6D,$41,$71,$3D,$6D ; ":=Ap?k??j..mAq=m"
$BF90 .BYTE $3F,$71,$3A,$6D,$3D,$71,$38,$6D,$3A,$71,$35,$6D,$38,$71,$33,$6B ; "?q:m=q8m:q5m8q3k"
$BFA0 .BYTE $35,$6A,$3A,$3A,$3A,$6B,$3D,$3F,$FF,$6B,$00,$69,$C0,$1D,$00,$1B ; "5j:::k=?.k.i...."
$BFB0 .BYTE $80,$00,$19,$00,$16,$70,$16,$6C,$11,$70,$16,$6C,$11,$FF,$69,$1D ; ".....p.l.p.l..i."
$BFC0 .BYTE $22,$6F,$1B,$C7,$6B,$1D,$C0,$70,$22,$6C,$1D,$70,$22,$6C,$1D,$FF ; ""o..k..p"l.p"l.."
$BFD0 .BYTE $71,$35,$6D,$38,$33,$35,$31,$33,$2E,$31,$2C,$2E,$29,$2C,$71,$27 ; "q5m83513.1,.),q'"
$BFE0 .BYTE $6D,$29,$F2,$6B,$2E,$69,$C9,$F3,$22,$C0,$6A,$00,$70,$00,$A4,$6D ; "m).k.i..".j.p..m"
$BFF0 .BYTE $31,$31,$31,$31,$6C,$2C,$2C,$25,$25,$FF,$00,$00,$00,$00,$00,$00 ; "1111l,,%%......."
; === SUBROUTINE: ENTRY_C000 ===
$C000 ENTRY_C000: JSR SUB_C033
LDA #$F8
STA $FB
LDA #$B8
STA $FC
LDY #$00
STY $FD
LDA #$90
STA $FE
LDX #$07
JSR SUB_C040
JSR L_C02B
JMP L_C0B7
; === DATA SECTION ===
$C01E .BYTE $8D,$18 ; ".."
$C020 .BYTE $03,$A9,$FE,$8D,$19,$03,$58,$20,$D9,$C1,$60 ; "......X ..`"
; === SUBROUTINE: SUB_C02B ===
$C02B L_C02B: NOP
LDA $01
ORA #$07
STA $01
RTS
; === SUBROUTINE: SUB_C033 ===
$C033 SUB_C033: NOP
LDA $01
ORA #$05
AND #$FD
STA $01
RTS
; === DATA SECTION ===
$C03D .BYTE $20,$81,$C0 ; " .."
; === SUBROUTINE: SUB_C040 ===
$C040 SUB_C040: LDA ($FB),Y
STA ($FD),Y
INY
BNE SUB_C040
INC $FC
INC $FE
DEX
BNE SUB_C040
$C04E L_C04E: LDA ($FB),Y
STA ($FD),Y
INY
CPY #$02
BNE L_C04E
RTS
; === DATA SECTION ===
$C058 .BYTE $AB,$C0,$20,$2B,$C0,$58,$60,$20 ; ".. +.X` "
$C060 .BYTE $81,$C0,$20,$33,$C0,$20,$8B,$C0,$20,$E3,$C0,$20,$2B,$C0,$58,$60 ; ".. 3. .. .. +.X`"
$C070 .BYTE $20,$81,$C0,$20,$33,$C0,$20,$8B,$C0,$20,$CC,$C0,$20,$2B,$C0,$58 ; " .. 3. .. .. +.X"
$C080 .BYTE $60,$8D,$95,$C0,$8E,$96,$C0,$8C,$97,$C0,$60,$AD,$95,$C0,$AE,$96 ; "`.........`....."
$C090 .BYTE $C0,$AC,$97,$C0,$60,$00,$00,$00,$AD,$19,$D0,$8D,$19,$D0,$78 ; "....`.........x"
; === SUBROUTINE: ENTRY_C09F ===
$C09F ENTRY_C09F: JSR SUB_C033
JSR SUB_C16F
JMP L_C02B
; === DATA SECTION ===
$C0A8 .BYTE $4C,$31,$EA ; "L1."
; === SUBROUTINE: SUB_C0AB ===
$C0AB SUB_C0AB: RTS
; === DATA SECTION ===
$C0AC .BYTE $78,$A9,$9E,$8D ; "x..."
$C0B0 .BYTE $14,$03,$A9,$C0,$8D,$15,$03 ; "......."
; === CODE SECTION ===
$C0B7 L_C0B7: LDA #$00
LDX #$18
$C0BB L_C0BB: STA $D400,X
DEX
BPL L_C0BB
LDA #$00
JSR SUB_C0E3
LDA #$00
STA $CC09
RTS
; === DATA SECTION ===
$C0CC .BYTE $29,$07,$8D,$09 ; ")..."
$C0D0 .BYTE $CC,$8A,$29,$07,$8D,$07,$CC,$98,$29,$07,$8D,$08,$CC,$AD,$09,$CC ; "..).....)......."
$C0E0 .BYTE $4C,$E3,$C0 ; "L.."
; === SUBROUTINE: SUB_C0E3 ===
$C0E3 SUB_C0E3: AND #$07
STA $CBFB
TAX
LDA #$0F
STA $CC3B
LDA #$00
STA $9001
STA $9002
STA $9003
LDA #$01
STA $CBDF
STA $CBE0
STA $CBE1
LDA #$F0
STA $CCC7
LDA #$E9
STA $C1B0
STA $C1BE
STA $C1CC
LDA #$CB
STA $C1B1
STA $C1BF
STA $C1CD
LDA $900D,X
STA $9007
LDA $9015,X
STA $9008
LDA $901D,X
STA $9009
LDA $9025,X
STA $CBFA
AND #$03
STA $9000
INC $9000
LDA #$00
STA $CC10
STA $CC11
STA $CC12
STA $CC28
STA $CC2B
STA $CC22
STA $CC25
STA $CC29
STA $CC2C
STA $CC23
STA $CC26
STA $CC2A
STA $CC2D
STA $CC24
STA $CC27
RTS
; === SUBROUTINE: SUB_C16F ===
$C16F SUB_C16F: NOP
STA $CBEA
STX $CBEB
STY $CBEC
DEC $CBDE
BNE L_C18A
LDA $9000
STA $CBDE
JSR SUB_C6F0
JMP L_C1A5
$C18A L_C18A: LDY #$00
JSR SUB_C780
JSR SUB_C713
LDY #$01
JSR SUB_C780
JSR SUB_C713
LDY #$02
JSR SUB_C780
JSR SUB_C713
JSR SUB_C762
$C1A5 L_C1A5: LDA $CBEA
LDX $CBEB
LDY $CBEC
RTS
$C1AF L_C1AF: LDA $CBE9
PHP
INC $C1B0
BNE L_C1BB
INC $C1B1
$C1BB L_C1BB: PLP
RTS
$C1BD L_C1BD: LDA $CBE9
PHP
INC $C1BE
BNE L_C1C9
INC $C1BF
$C1C9 L_C1C9: PLP
RTS
$C1CB L_C1CB: LDA $CBE9
PHP
INC $C1CC
BNE L_C1D7
INC $C1CD
$C1D7 L_C1D7: PLP
RTS
; === DATA SECTION ===
$C1D9 .BYTE $AD,$19,$CC,$8D,$04,$D4,$AD ; "......."
$C1E0 .BYTE $1A,$CC,$8D,$0B,$D4,$AD,$1B,$CC,$8D,$12,$D4,$60 ; "...........`"
; === SUBROUTINE: SUB_C1EC ===
$C1EC SUB_C1EC: CPY #$00
BEQ L_C1AF
CPY #$01
BEQ L_C1BD
JMP L_C1CB
; === SUBROUTINE: SUB_C1F7 ===
$C1F7 SUB_C1F7: LDA $9001,Y
BNE L_C20B
$C1FC L_C1FC: JSR SUB_C1EC
BEQ L_C238
CMP #$FF
BNE L_C208
JMP L_C3BA
$C208 L_C208: JMP L_C56B
$C20B L_C20B: LDA $CBE2,Y
STA $CBDF,Y
LDA $CC76,Y
BMI L_C21F
LDA $CC0D,Y
ORA $CC19,Y
STA $CCBE,Y
$C21F L_C21F: LDA #$00
STA $9001,Y
LDA $CC79,Y
STA $CC76,Y
RTS
$C22B L_C22B: TXA
AND #$0F
TAX
LDA $CB8C,X
STA $CBD8,Y
JMP L_C1FC
$C238 L_C238: LDA #$01
STA $9001,Y
JMP L_C34D
$C240 L_C240: STA $CBD5,Y
JSR SUB_C2AF
LDA #$01
STA $9001,Y
LDA $CC76,Y
BMI L_C259
LDA $CC0A,Y
ORA $CC19,Y
STA $CCBE,Y
$C259 L_C259: LDA $CBED,Y
JSR SUB_C543
JMP L_C34D
$C262 L_C262: LDA $CC10,Y
AND #$20
BEQ L_C280
LDA $CBDF,Y
STA $C277
LDA $CBE2,Y
DEC $C277
CLC
ADC #$00
STA $CBE2,Y
LDA #$01
STA $CBDF,Y
$C280 L_C280: LDA $CC10,Y
AND #$10
BEQ L_C295
LDA $CBDF,Y
PHA
LDA $CBE2,Y
STA $CBDF,Y
PLA
STA $CBE2,Y
$C295 L_C295: RTS
$C296 L_C296: LDA $CC10,Y
AND #$01
BNE L_C2A6
TXA
AND #$0F
STA $CBF0,Y
JMP L_C1FC
$C2A6 L_C2A6: TXA
AND #$0F
STA $CC13,Y
JMP L_C1FC
; === SUBROUTINE: SUB_C2AF ===
$C2AF SUB_C2AF: LDA $CBD8,Y
BEQ L_C2BB
LDA $CC10,Y
AND #$01
BNE L_C2D5
$C2BB L_C2BB: LDA $CC16,Y
STA $C2C6
LDA $CBD5,Y
CLC
ADC #$0C
TAX
LDA $CA94,X
STA $CC22,Y
LDA $CAF4,X
STA $CC25,Y
RTS
$C2D5 L_C2D5: LDA $CC10,Y
AND #$02
BEQ L_C2F7
LDA $CBD5,Y
CLC
ADC $CC13,Y
$C2E3 L_C2E3: CLC
ADC $C2C6
TAX
LDA $CA94,X
STA $CC28,Y
LDA $CAF4,X
STA $CC2B,Y
JMP L_C2BB
$C2F7 L_C2F7: LDA $CBD5,Y
SEC
SBC $CC13,Y
JMP L_C2E3
$C301 L_C301: TXA
AND #$0F
STA $CBDB,Y
LDA $CC10,Y
AND #$04
BEQ L_C321
LDA $CCC1,Y
AND #$0F
STA $CCC1,Y
TXA
ASL A
ASL A
ASL A
ASL A
ORA $CCC1,Y
STA $CCC1,Y
$C321 L_C321: LDA $CC10,Y
AND #$08
BEQ L_C34A
LDA $CCC1,Y
AND #$F0
STA $CCC1,Y
LDA $CCC4,Y
AND #$F0
STA $CCC4,Y
TXA
AND #$0F
ORA $CCC4,Y
STA $CCC4,Y
TXA
AND #$0F
ORA $CCC1,Y
STA $CCC1,Y
$C34A L_C34A: JMP L_C1FC
$C34D L_C34D: LDA $CBFA
BPL L_C368
LDA $CBE6,Y
AND #$0F
$C357 L_C357: ASL A
TAX
LDA $CB54,X
STA $CBDF,Y
LDA $CB55,X
STA $CBE2,Y
JMP L_C262
$C368 L_C368: LDA $CBE6,Y
AND #$0F
CLC
ADC #$0D
JMP L_C357
$C373 L_C373: INC $9007
LDX $9007
LDA $9314,X
BMI L_C395
JSR SUB_C432
ASL A
AND #$3F
TAX
LDA $92D5,X
STA $C1B0
INX
LDA $92D5,X
STA $C1B1
JMP L_C1FC
$C395 L_C395: LDA $CC09
CMP $CC08
BEQ L_C3AE
INC $CC09
LDA $CC09
AND #$07
STA $CC09
JSR SUB_C0E3
JMP L_C373
$C3AE L_C3AE: LDA $CC07
STA $CC09
JSR SUB_C0E3
JMP L_C373
$C3BA L_C3BA: CPY #$00
BEQ L_C373
CPY #$01
BEQ L_C3DA
JMP L_C406
$C3C5 L_C3C5: LSR A
LSR A
LSR A
LSR A
LSR A
STA $C3D3
LDA #$00
LSR A
LSR A
LSR A
ORA #$00
STA $CC16,Y
LDA #$00
RTS
$C3DA L_C3DA: INC $9008
LDX $9008
LDA $9378,X
BMI L_C3FA
JSR SUB_C446
ASL A
TAX
LDA $92D5,X
STA $C1BE
INX
LDA $92D5,X
STA $C1BF
JMP L_C1FC
$C3FA L_C3FA: LDX $CBFB
LDA $9015,X
STA $9008
JMP L_C3DA
$C406 L_C406: INC $9009
LDX $9009
LDA $93DC,X
BMI L_C426
JSR SUB_C45A
ASL A
TAX
LDA $92D5,X
STA $C1CC
INX
LDA $92D5,X
STA $C1CD
JMP L_C1FC
$C426 L_C426: LDX $CBFB
LDA $901D,X
STA $9009
JMP L_C406
; === SUBROUTINE: SUB_C432 ===
$C432 SUB_C432: STA $C3D8
LDA $9440,X
STA $C3CE
AND #$1F
JSR SUB_C46E
LDA $C3D8
JMP L_C3C5
; === SUBROUTINE: SUB_C446 ===
$C446 SUB_C446: STA $C3D8
LDA $94A4,X
STA $C3CE
AND #$1F
JSR SUB_C46E
LDA $C3D8
JMP L_C3C5
; === SUBROUTINE: SUB_C45A ===
$C45A SUB_C45A: STA $C3D8
LDA $9508,X
STA $C3CE
AND #$1F
JSR SUB_C46E
LDA $C3D8
JMP L_C3C5
; === SUBROUTINE: SUB_C46E ===
$C46E SUB_C46E: CMP $9004,Y
; === SUBROUTINE: SUB_C471 ===
$C471 SUB_C471: STA $9004,Y
TAX
LDA $902D,X
STA $CC1C,Y
LDA $9055,X
STA $CC1F,Y
LDA $90A5,X
STA $CC31,Y
LDA $907D,X
STA $CC19,Y
LDA $90CD,X
STA $CC34,Y
LDA $91E5,X
AND #$0F
STA $CC9B,Y
LDA $920D,X
STA $CC98,Y
LDA $9235,X
STA $CCA1,Y
LDA $925D,X
STA $CCA7,Y
LDA $92AD,X
STA $CC37,Y
LDA $916D,X
AND #$0F
STA $CC7C,Y
LDA $9195,X
STA $CC7F,Y
LDA $91BD,X
STA $CC88,Y
LDA $9285,X
STA $CBED,Y
LDA $CC9B,X
AND #$F0
LSR A
LSR A
LSR A
STA $CCAD,Y
LDA $CC7C,X
AND #$F0
LSR A
LSR A
LSR A
STA $CC95,Y
LDA $CC76,Y
BMI L_C4F4
LDA $CC1C,Y
STA $CCC1,Y
LDA $CC1F,Y
STA $CCC4,Y
$C4F4 L_C4F4: LDA $911D,X
BEQ L_C529
AND #$F0
STA $CC8B
LDA $CC2F
AND #$0F
ORA $CC8B
ORA $CBB0,Y
STA $CC2F
STA $CCC7
LDA $911D,X
ASL A
ASL A
ASL A
ASL A
STA $CC3C
LDA $90F5
STA $CC2E
LDA $9145
STA $CC30
STY $CC3A
RTS
$C529 L_C529: LDA $CBB0,Y
EOR #$FF
AND $CC2F
STA $CC2F
STA $CCC7
RTS
; === DATA SECTION ===
$C538 .BYTE $B9,$04,$90,$20,$71,$C4,$A9,$FF ; "... q..."
$C540 .BYTE $4C,$43,$C5 ; "LC."
; === SUBROUTINE: SUB_C543 ===
$C543 SUB_C543: STA $CBFC
AND #$80
BEQ L_C555
LDA #$00
STA $CC85,Y
LDA $CC95,Y
STA $CC82,Y
$C555 L_C555: LDA $CBFC
AND #$40
BEQ L_C56A
LDA #$00
STA $CC9E,Y
STA $CCAA,Y
LDA $CCAD,Y
STA $CCA4,Y
$C56A L_C56A: RTS
$C56B L_C56B: TAX
CMP #$7F
BMI L_C59D
AND #$40
BEQ L_C58D
TXA
AND #$30
BEQ L_C587
CMP #$10
BEQ L_C58A
CMP #$30
BEQ L_C5BA
TXA
AND #$0F
JMP L_C301
$C587 L_C587: JMP L_C22B
$C58A L_C58A: JMP L_C296
$C58D L_C58D: TXA
AND #$3F
CMP #$28
BCC L_C597
JMP L_C6DD
$C597 L_C597: JSR SUB_C471
JMP L_C1FC
$C59D L_C59D: CMP #$49
BCS L_C5A4
JMP L_C240
$C5A4 L_C5A4: CMP #$59
BCS L_C5AB
JMP L_C652
$C5AB L_C5AB: CMP #$69
BCS L_C5B2
JMP L_C65B
$C5B2 L_C5B2: SBC #$69
STA $CBE6,Y
JMP L_C1FC
$C5BA L_C5BA: TXA
AND #$0F
ASL A
TAX
LDA $CBB7,X
STA $C5CC
LDA $CBB8,X
STA $C5CD
JMP L_C6E0
; === DATA SECTION ===
$C5CE .BYTE $A9,$C0 ; ".."
$C5D0 .BYTE $20,$43,$C5,$4C,$FC,$C1,$20,$38,$C5,$4C,$FC,$C1,$B9,$10,$CC,$29 ; " C.L.. 8.L.....)"
$C5E0 .BYTE $FC,$99,$10,$CC,$4C,$FC,$C1,$B9,$10,$CC,$29,$FC,$09,$01,$99,$10 ; "....L.....)....."
$C5F0 .BYTE $CC,$4C,$FC,$C1,$B9,$10,$CC,$29,$FC,$09,$03,$99,$10,$CC,$4C,$FC ; ".L.....)......L."
$C600 .BYTE $C1,$B9,$10,$CC,$09,$04,$99,$10,$CC,$4C,$FC,$C1,$B9,$10,$CC,$09 ; ".........L......"
$C610 .BYTE $08,$99,$10,$CC,$4C,$FC,$C1,$B9,$10,$CC,$29,$F3,$99,$10,$CC,$4C ; "....L.....)....L"
$C620 .BYTE $FC,$C1,$B9,$10,$CC,$29,$CF,$99,$10,$CC,$4C,$FC,$C1,$B9,$10,$CC ; ".....)....L....."
$C630 .BYTE $09,$20,$29,$EF,$99,$10,$CC,$4C,$FC,$C1,$B9,$10,$CC,$09,$30,$99 ; ". )....L......0."
$C640 .BYTE $10,$CC,$4C,$FC,$C1,$B9,$10,$CC,$09,$10,$29,$DF,$99,$10,$CC,$4C ; "..L.......)....L"
$C650 .BYTE $FC,$C1 ; ".."
; === CODE SECTION ===
$C652 L_C652: SEC
SBC #$49
JSR SUB_C0AB
JMP L_C238
$C65B L_C65B: SEC
SBC #$58
STA $CBFE,Y
CPY #$01
BEQ L_C678
CPY #$02
BEQ L_C687
LDA $C1B0
STA $CC01
LDA $C1B1
STA $CC02
JMP L_C1FC
$C678 L_C678: LDA $C1BE
STA $CC03
LDA $C1BF
STA $CC04
JMP L_C1FC
$C687 L_C687: LDA $C1CC
STA $CC05
LDA $C1CD
STA $CC06
JMP L_C1FC
; === DATA SECTION ===
$C696 .BYTE $B9,$FE,$CB,$D0,$03,$4C,$FC,$C1,$C0,$01 ; ".....L...."
$C6A0 .BYTE $F0,$16,$C0,$02,$F0,$24,$CE,$FE,$CB,$AD,$01,$CC,$8D,$B0,$C1,$AD ; ".....$.........."
$C6B0 .BYTE $02,$CC,$8D,$B1,$C1,$4C,$FC,$C1,$CE,$FF,$CB,$AD,$03,$CC,$8D,$BE ; ".....L.........."
$C6C0 .BYTE $C1,$AD,$04,$CC,$8D,$BF,$C1,$4C,$FC,$C1,$CE,$00,$CC,$AD,$05,$CC ; ".......L........"
$C6D0 .BYTE $8D,$CC,$C1,$AD,$06,$CC,$8D,$CD,$C1,$4C,$FC,$C1 ; ".........L.."
; === CODE SECTION ===
$C6DC L_C6DC: RTS
$C6DD L_C6DD: JMP L_C1FC
$C6E0 L_C6E0: LDA #$01
STA $CC0D,Y
JMP L_C1FC
; === DATA SECTION ===
$C6E8 .BYTE $A9,$00,$99,$0D,$CC,$4C,$FC,$C1 ; ".....L.."
; === SUBROUTINE: SUB_C6F0 ===
$C6F0 SUB_C6F0: LDY #$00
JSR SUB_C70B
JSR SUB_C780
LDY #$01
JSR SUB_C71C
JSR SUB_C780
LDY #$02
JSR SUB_C727
JSR SUB_C780
JMP SUB_C762
; === SUBROUTINE: SUB_C70B ===
$C70B SUB_C70B: DEC $CBDF
BNE SUB_C713
JSR SUB_C1F7
; === SUBROUTINE: SUB_C713 ===
$C713 SUB_C713: LDA $CC76,Y
BPL L_C71B
JMP L_C6DC
$C71B L_C71B: RTS
; === SUBROUTINE: SUB_C71C ===
$C71C SUB_C71C: DEC $CBE0
BNE SUB_C713
JSR SUB_C1F7
JMP SUB_C713
; === SUBROUTINE: SUB_C727 ===
$C727 SUB_C727: DEC $CBE1
BNE SUB_C713
JSR SUB_C1F7
JMP SUB_C713
$C732 L_C732: LDA $CB9B,X
TAY
LDA $CCB2,Y
STA $D400,X
INX
CPX #$07
BEQ L_C76D
CPX #$0E
BEQ L_C776
CPX #$15
BNE L_C732
$C749 L_C749: LDA $CCC9
STA $D416
LDA $CCC7
STA $D417
LDA $CC3B
ORA $CC3C
STA $CCC8
STA $D418
RTS
; === SUBROUTINE: SUB_C762 ===
$C762 SUB_C762: LDX #$00
LDA $CBE5
AND #$01
BNE L_C732
LDX #$07
$C76D L_C76D: LDA $CBE5
AND #$02
BNE L_C732
LDX #$0E
$C776 L_C776: LDA $CBE5
AND #$04
BNE L_C732
JMP L_C749
; === SUBROUTINE: SUB_C780 ===
$C780 SUB_C780: LDA $CC76,Y
BPL L_C786
RTS
$C786 L_C786: LDA $CBD8,Y
BEQ L_C7B5
LDA $CC28,Y
TAX
CMP $CC22,Y
BEQ L_C7B5
BCS L_C7A2
LDA $CC2B,Y
ADC $CBD8,Y
BCC L_C7AB
INX
JMP L_C7AB
$C7A2 L_C7A2: LDA $CC2B,Y
SBC $CBD8,Y
BCS L_C7AB
DEX
$C7AB L_C7AB: STA $CC2B,Y
TXA
STA $CC28,Y
JMP L_C7F0
$C7B5 L_C7B5: LDA $CC22,Y
TAX
LDA $CC25,Y
JMP L_C7AB
$C7BF L_C7BF: LDA $CC82,Y
SBC #$01
STA $CC82,Y
BMI L_C7CC
JMP L_C885
$C7CC L_C7CC: LDA $CC7C,Y
STA $CC82,Y
LDA $CC85,Y
CMP $CC7F,Y
BEQ L_C7ED
ADC $CC88,Y
BCS L_C7E7
STA $CC85,Y
CMP $CC7F,Y
BCC L_C7ED
$C7E7 L_C7E7: LDA $CC7F,Y
STA $CC85,Y
$C7ED L_C7ED: JMP L_C885
$C7F0 L_C7F0: LDA $CCA4,Y
SBC #$01
STA $CCA4,Y
BMI L_C7FD
JMP L_C7BF
$C7FD L_C7FD: LDA $CC9B,Y
STA $CCA4,Y
LDA $CCA1,Y
BEQ L_C82B
CMP #$01
BEQ L_C85B
CMP #$02
BEQ L_C878
LDA $CCAA,Y
BEQ L_C820
LDA #$00
STA $CCAA,Y
$C81A L_C81A: STA $CC9E,Y
JMP L_C7BF
$C820 L_C820: LDA #$01
STA $CCAA,Y
LDA $CC98,Y
JMP L_C81A
$C82B L_C82B: LDA $CCAA,Y
BEQ L_C843
LDA $CC9E,Y
SBC $CCA7,Y
BCS L_C83D
LDA #$00
STA $CCAA,Y
$C83D L_C83D: STA $CC9E,Y
JMP L_C7BF
$C843 L_C843: LDA $CC9E,Y
ADC $CCA7,Y
BCS L_C850
CMP $CC98,Y
BCC L_C83D
$C850 L_C850: LDA #$01
STA $CCAA,Y
LDA $CC98,Y
JMP L_C83D
$C85B L_C85B: LDA $CC9E,Y
CMP $CC98,Y
BEQ L_C873
ADC $CCA7,Y
BCS L_C86D
CMP $CC98,Y
BCC L_C83D
$C86D L_C86D: LDA $CC98,Y
JMP L_C83D
$C873 L_C873: LDA #$00
JMP L_C83D
$C878 L_C878: LDA $CC9E,Y
BEQ L_C86D
SBC $CCA7,Y
BCC L_C873
JMP L_C83D
$C885 L_C885: CPY $CC3A
BNE L_C896
LDX $CC30
LDA $CC2E
JSR SUB_C94C
STA $CCC9
$C896 L_C896: JMP L_C899
$C899 L_C899: LDA $CC76,Y
BMI L_C8BC
LDA $CC34,Y
TAX
LDA $CC31,Y
JSR SUB_C94C
ASL A
ASL A
ASL A
ASL A
STA $CCB8,Y
LDA $CC8B
LSR A
LSR A
LSR A
LSR A
STA $CCBB,Y
JMP L_C8BD
$C8BC L_C8BC: RTS
$C8BD L_C8BD: LDA $CC2B,Y
STA $CC8E
LDA $CC28,Y
STA $CC8F
LDA $CC37,Y
AND #$07
BEQ L_C8E4
STA $CC90
DEC $CC90
LDA $CC37,Y
STA $CC8C
BPL L_C8E1
JMP L_C9D8
$C8E1 L_C8E1: JMP L_CA02
$C8E4 L_C8E4: LDA $CBB0,Y
CLC
ADC $CC8E
BCC L_C8F0
INC $CC8F
$C8F0 L_C8F0: STA $CCB2,Y
LDA $CC8F
STA $CCB5,Y
LDA $CBF0,Y
BNE L_C8FF
RTS
$C8FF L_C8FF: LDA $CBF6,Y
SEC
SBC #$01
BCC L_C90B
STA $CBF6,Y
RTS
$C90B L_C90B: LDA $CBF0,Y
STA $CBF6,Y
LDA $CBF3,Y
BEQ L_C91C
LDA #$00
STA $CBF3,Y
RTS
$C91C L_C91C: LDA #$01
STA $CBF3,Y
LDA $CCB5,Y
TAX
LDA $CCB2,Y
JSR SUB_CA37
STA $CCB2,Y
TXA
STA $CCB5,Y
RTS
; === DATA SECTION ===
$C933 .BYTE $8D,$8E,$CC,$29,$1F,$AA,$E8,$A9,$00,$0E,$8E,$CC,$2A ; "...)........*"
$C940 .BYTE $0E,$8E,$CC,$2A,$0E,$8E,$CC,$2A,$18,$69,$01,$60 ; "...*...*.i.`"
; === SUBROUTINE: SUB_C94C ===
$C94C SUB_C94C: STA $CC8B
STX $CC8C
TXA
AND #$40
BEQ L_C95A
JSR SUB_C974
$C95A L_C95A: LDA $CC8C
AND #$10
BEQ L_C964
JSR SUB_C986
$C964 L_C964: JSR SUB_C9B7
LDA $CC8B
RTS
; === DATA SECTION ===
$C96B .BYTE $20,$B7,$C9,$8D,$8D ; " ...."
$C970 .BYTE $CC,$4C,$A8,$C9 ; ".L.."
; === SUBROUTINE: SUB_C974 ===
$C974 SUB_C974: LDA $CC85,Y
BEQ L_C95A
STA $CC8D
LDA $CC8C
AND #$80
BEQ L_C999
JMP L_C9A8
; === SUBROUTINE: SUB_C986 ===
$C986 SUB_C986: LDA $CC9E,Y
BEQ L_C964
LSR A
STA $CC8D
LDA $CC8C
AND #$20
BEQ L_C999
JMP L_C9A8
$C999 L_C999: LDA $CC8B
CLC
ADC $CC8D
BCC L_C9A4
LDA #$FF
$C9A4 L_C9A4: STA $CC8B
RTS
$C9A8 L_C9A8: LDA $CC8B
CLC
SBC $CC8D
BCS L_C9B3
LDA #$00
$C9B3 L_C9B3: STA $CC8B
$C9B6 L_C9B6: RTS
; === SUBROUTINE: SUB_C9B7 ===
$C9B7 SUB_C9B7: LDA $CC8C
AND #$07
BEQ L_C9B6
TAX
LDA $CBDB,Y
$C9C2 L_C9C2: DEX
BEQ L_C9CB
ADC $CBDB,Y
JMP L_C9C2
$C9CB L_C9CB: STA $CC8D
LDA $CC8C
AND #$08
BEQ L_C999
JMP L_C9A8
$C9D8 L_C9D8: LDA $CC98,Y
LSR A
STA $CC93
LDA $CC9E,Y
$C9E2 L_C9E2: JSR SUB_CA0E
LDA $CC8C
AND #$40
BEQ L_C9FC
JSR SUB_CA43
$C9EF L_C9EF: LDA $CC8C
AND #$20
BEQ L_C9F9
JSR SUB_CA7E
$C9F9 L_C9F9: JMP L_C8E4
$C9FC L_C9FC: JSR SUB_CA61
JMP L_C9EF
$CA02 L_CA02: LDA $CC7F,Y
STA $CC93
LDA $CC85,Y
JMP L_C9E2
; === SUBROUTINE: SUB_CA0E ===
$CA0E SUB_CA0E: STA $CC91
LDA #$00
STA $CC92
STA $CC94
LDX $CC90
$CA1C L_CA1C: DEX
BMI L_CA36
LDA $CC91
ASL A
ROL $CC92
STA $CC91
LDA $CC93
; === SUBROUTINE: SUB_CA2C ===
$CA2C SUB_CA2C: ASL A
ROL $CC94
STA $CC93
JMP L_CA1C
$CA36 L_CA36: RTS
; === SUBROUTINE: SUB_CA37 ===
$CA37 SUB_CA37: STX $CC94
LDX #$00
JSR SUB_CA2C
LDX $CC94
RTS
; === SUBROUTINE: SUB_CA43 ===
$CA43 SUB_CA43: LDA $CC8E
CLC
SBC $CC91
BCS L_CA4F
DEC $CC8F
$CA4F L_CA4F: STA $CC8E
LDA $CC8F
CLC
SBC $CC92
BCS L_CA5D
LDA #$00
$CA5D L_CA5D: STA $CC8F
RTS
; === SUBROUTINE: SUB_CA61 ===
$CA61 SUB_CA61: LDA $CC8E
CLC
ADC $CC91
BCC L_CA6D
INC $CC8F
$CA6D L_CA6D: STA $CC8E
LDA $CC8F
CLC
ADC $CC92
BCC L_CA5D
LDA #$FF
JMP L_CA5D
; === SUBROUTINE: SUB_CA7E ===
$CA7E SUB_CA7E: LDA $CC94
STA $CC92
LDA $CC93
STA $CC91
LDA $CC8C
AND #$40
BEQ SUB_CA43
JMP SUB_CA61
; === DATA SECTION ===
$CA94 .BYTE $00,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01 ; "............"
$CAA0 .BYTE $02,$02,$02,$02,$02,$02,$02,$03,$03,$03,$03,$03,$04,$04,$04,$04 ; "................"
$CAB0 .BYTE $05,$05,$05,$06,$06,$06,$07,$07,$08,$08,$09,$09,$0A,$0A,$0B,$0C ; "................"
$CAC0 .BYTE $0D,$0D,$0E,$0F,$10,$11,$12,$13,$14,$15,$17,$18,$1A,$1B,$1D,$1F ; "................"
$CAD0 .BYTE $20,$22,$24,$27,$29,$2B,$2E,$31,$34,$37,$3A,$3E,$41,$45,$49,$4E ; " "$')+.147:>AEIN"
$CAE0 .BYTE $52,$57,$5C,$60,$68,$6E,$75,$7C,$83,$8B,$93,$9C,$A5,$AF,$B9,$C4 ; "RW\`hnu|........"
$CAF0 .BYTE $D0,$DD,$EA,$F8,$00,$16,$27,$39,$4B,$5F,$74,$8A,$A1,$BA,$D4,$F0 ; "......'9K_t....."
$CB00 .BYTE $0E,$2D,$4E,$71,$96,$BE,$E7,$14,$42,$74,$A9,$E0,$1B,$5A,$9C,$E2 ; ".-Nq....Bt...Z.."
$CB10 .BYTE $2D,$7B,$CF,$17,$85,$E8,$51,$C1,$37,$B4,$38,$C4,$59,$F7,$9E,$4E ; "-{....Q.7.8.Y..N"
$CB20 .BYTE $0A,$D0,$A2,$81,$6D,$67,$70,$89,$B2,$ED,$3B,$9D,$14,$A0,$45,$03 ; "....mgp...;...E."
$CB30 .BYTE $DB,$CF,$E1,$12,$65,$DB,$76,$3A,$27,$41,$8A,$05,$B5,$9D,$C1,$24 ; "....e.v:'A.....$"
$CB40 .BYTE $C9,$B6,$ED,$73,$4E,$82,$14,$0A,$6A,$3B,$82,$48,$93,$6B,$DA,$E7 ; "...sN...j;.H.k.."
$CB50 .BYTE $9C,$04,$28,$14,$28,$18,$14,$0C,$0A,$06,$05,$03,$02,$02,$01,$01 ; "..(.(..........."
$CB60 .BYTE $20,$10,$10,$08,$08,$04,$04,$02,$02,$01,$21,$17,$10,$0C,$08,$06 ; " .........!....."
$CB70 .BYTE $40,$20,$20,$10,$10,$08,$08,$04,$04,$02,$02,$01,$30,$18,$18,$0C ; "@ .........0..."
$CB80 .BYTE $0C,$06,$06,$03,$02,$01,$38,$1C,$1C,$0E,$0E,$07,$00,$05,$0A,$19 ; "......8........."
$CB90 .BYTE $23,$37,$4B,$5F,$73,$8C,$A5,$BE,$E1,$F0,$FF,$00,$03,$06,$09,$0C ; "#7K_s..........."
$CBA0 .BYTE $0F,$12,$01,$04,$07,$0A,$0D,$10,$13,$02,$05,$08,$0B,$0E,$11,$14 ; "................"
$CBB0 .BYTE $01,$02,$04,$08,$10,$20,$40,$D6,$C5,$CE,$C5,$E0,$C6,$E8,$C6,$E7 ; "..... @........."
$CBC0 .BYTE $C5,$DC,$C5,$F4,$C5,$01,$C6,$0C,$C6,$17,$C6,$2D,$C6,$22,$C6,$3A ; "...........-.".:"
$CBD0 .BYTE $C6,$45,$C6,$96,$C6,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$00 ; ".E.............."
$CBE0 .BYTE $00,$00,$00,$00,$00,$07,$00,$00,$00,$FF,$00,$00,$00,$80,$80,$80 ; "................"
$CBF0 .BYTE $00,$00,$00,$00,$00,$00,$01,$01,$01,$00,$00,$00,$00,$00,$00,$00 ; "................"
$CC00 .BYTE $00,$E9,$CB,$E9,$CB,$E9,$CB,$01,$01,$00,$01,$01,$01,$00,$00,$00 ; "................"
$CC10 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$40,$20,$40,$0D,$0D,$0D,$0C ; ".........@ @...."
$CC20 .BYTE $0C,$0C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FA,$00 ; "................"
$CC30 .BYTE $00,$40,$40,$40,$C0,$80,$60,$00,$00,$00,$00,$0F,$00,$00,$00,$00 ; ".@@@..`........."
$CC40 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$CC50 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$CC60 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$CC70 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$01,$01,$01,$D2 ; "................"
$CC80 .BYTE $D2,$D2,$00,$00,$00,$00,$00,$00,$05,$05,$05,$00,$00,$00,$00,$00 ; "................"
$CC90 .BYTE $00,$00,$00,$00,$00,$01,$01,$01,$01,$01,$01,$01,$01,$01,$00,$00 ; "................"
$CCA0 .BYTE $00,$00,$00,$00,$01,$01,$01,$08,$08,$08,$01,$01,$01,$01,$01,$01 ; "................"
$CCB0 .BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 ; "................"
$CCC0 .BYTE $00,$0C,$0C,$0C,$09,$09,$09,$00,$0F,$00 ; ".........."
; End of disassembly
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment