From 7dbfa00c2d98242832d0b12d4613c481ca251f01 Mon Sep 17 00:00:00 2001 From: unorig Date: Mon, 6 May 2024 15:39:30 +1000 Subject: [PATCH] Updating comments and splitting out subroutines into separate files --- 2 Paris/2.dis65 | 8 +- 2 Paris/2_64tass.S | 58 +- 2 Paris/4290.asm | 132 ++++ 2 Paris/4c00.asm | 225 ++++++ 2 Paris/4e00.asm | 112 +++ 2 Paris/5200.asm | 204 +++++ 2 Paris/Level2.asm | 1179 +++-------------------------- 2 Paris/Level2packed.prg | Bin 0 -> 18655 bytes 2 Paris/UpdateScrDamageSpeedo.asm | 52 ++ 2 Paris/build.bat | 2 +- 2 Paris/joystick.asm | 40 + 11 files changed, 886 insertions(+), 1126 deletions(-) create mode 100644 2 Paris/4290.asm create mode 100644 2 Paris/4c00.asm create mode 100644 2 Paris/4e00.asm create mode 100644 2 Paris/5200.asm create mode 100644 2 Paris/Level2packed.prg create mode 100644 2 Paris/UpdateScrDamageSpeedo.asm create mode 100644 2 Paris/joystick.asm diff --git a/2 Paris/2.dis65 b/2 Paris/2.dis65 index e7b5754..f775a1c 100644 --- a/2 Paris/2.dis65 +++ b/2 Paris/2.dis65 @@ -446,7 +446,7 @@ "Type":"ExternalAddr", "LabelAnno":"None"}, -"V_MapLoadAddressLow":{ +"V_MapYposition":{ "DataDescriptor":{ "Length":1, "Format":"NumericLE", @@ -457,13 +457,13 @@ "HasWidth":false, "Direction":"ReadWrite", "MultiMask":null, -"Label":"V_MapLoadAddressLow", +"Label":"V_MapYposition", "Value":829, "Source":"Project", "Type":"ExternalAddr", "LabelAnno":"None"}, -"V_MapRow":{ +"V_MapXposition":{ "DataDescriptor":{ "Length":1, "Format":"NumericLE", @@ -474,7 +474,7 @@ "HasWidth":false, "Direction":"ReadWrite", "MultiMask":null, -"Label":"V_MapRow", +"Label":"V_MapXposition", "Value":828, "Source":"Project", "Type":"ExternalAddr", diff --git a/2 Paris/2_64tass.S b/2 Paris/2_64tass.S index ef1ef4d..cbbbeb7 100644 --- a/2 Paris/2_64tass.S +++ b/2 Paris/2_64tass.S @@ -20,9 +20,9 @@ V_CarPosHorizontalLow = $0338 V_CarPosHorizontalHigh = $0339 V_CarPositionVertLow = $033a V_CarPositionVertHigh = $033b -V_MapRow = $033c -V_MapLoadAddressLow = $033d -V_HorzRasterScrollLoop = $033e +V_MapXposition = $033c +V_MapYposition = $033d +V_HorzRasterScrollLoop = $033e WhatIsThis = $033f V_CarSpeed = $0340 V_MapDrawSpeed = $0342 @@ -6217,18 +6217,18 @@ _L4606 ldy V_CarFacingDirection ;00 N / 01 NE / 02 E / 03 SE / 04 S / 05 SW bmi _L4627 clc lda #$7e - adc V_MapRow + adc V_MapXposition sta V_SpritePointerIndex - lda V_MapLoadAddressLow + lda V_MapYposition adc #$00 sta V_SprCarDistHorizDiffHigh jmp _L466E _L4627 sec - lda V_MapRow + lda V_MapXposition sbc #$7e sta V_SpritePointerIndex - lda V_MapLoadAddressLow + lda V_MapYposition sbc #$00 sta V_SprCarDistHorizDiffHigh jmp _L466E @@ -6238,25 +6238,25 @@ _L4639 lda $0334 bmi _L4652 clc lda #$01 - adc V_MapRow + adc V_MapXposition sta V_SpritePointerIndex - lda V_MapLoadAddressLow + lda V_MapYposition adc #$00 sta V_SprCarDistHorizDiffHigh jmp _L466E _L4652 sec - lda V_MapRow + lda V_MapXposition sbc #$01 sta V_SpritePointerIndex - lda V_MapLoadAddressLow + lda V_MapYposition sbc #$00 sta V_SprCarDistHorizDiffHigh jmp _L466E -_L4664 lda V_MapRow +_L4664 lda V_MapXposition sta V_SpritePointerIndex - lda V_MapLoadAddressLow + lda V_MapYposition sta V_SprCarDistHorizDiffHigh _L466E lda V_SpritePointerIndex sta $02fb @@ -7383,9 +7383,9 @@ L4D92 jsr L4C00 .byte $ff MapLoadTempLow - lda V_MapRow + lda V_MapXposition sta V_SpritePointerIndex - lda V_MapLoadAddressLow + lda V_MapYposition sta V_SprCarDistHorizDiffHigh lda $0335 beq _L4E2E @@ -9625,10 +9625,10 @@ Sub_LoadNewMapRow lda $0350,x bmi _L5CED clc - adc V_MapRow - sta V_MapRow + adc V_MapXposition + sta V_MapXposition bcc _L5CDD - inc V_MapLoadAddressLow + inc V_MapYposition _L5CDD ldy $0334 dey cpy #$fe @@ -9638,11 +9638,11 @@ _L5CE7 sty $0334 jmp _L5D08 _L5CED sec - lda V_MapRow + lda V_MapXposition sbc #$01 - sta V_MapRow + sta V_MapXposition bcs _L5CFB - dec V_MapLoadAddressLow + dec V_MapYposition _L5CFB ldy $0334 iny cpy #$02 @@ -9658,10 +9658,10 @@ _L5D08 lda V_ScrollCounter ;North/South = #02. East/West = #01. lda $0360,x ;North = #fe bmi _L5D37 clc - adc V_MapRow - sta V_MapRow + adc V_MapXposition + sta V_MapXposition bcc _L5D27 - inc V_MapLoadAddressLow + inc V_MapYposition _L5D27 ldy $0335 dey cpy #$fe @@ -9671,11 +9671,11 @@ _L5D31 sty $0335 jmp _L5D52 _L5D37 sec - lda V_MapRow ;Load map address + lda V_MapXposition ;Load map address sbc #$7e ;#7e = 126 which is the width of the map - sta V_MapRow ;Update map row + sta V_MapXposition ;Update map row bcs _L5D45 - dec V_MapLoadAddressLow + dec V_MapYposition _L5D45 ldy $0335 iny cpy #$02 @@ -9687,9 +9687,9 @@ _L5D52 ldx #$0d sta V_ScreenAddress+1 ;Self-modifying code lda #$05 sta V_ScreenAddress+2 ;Self-modifying code - lda V_MapRow + lda V_MapXposition sta Loop_MapScreenUpdate+1 ;V_MapLoadAddressHigh - lda V_MapLoadAddressLow + lda V_MapYposition sta Loop_MapScreenUpdate+2 ;Self-modifying code L5D6A ldy #$28 ;#28 = 40. This would be a row of the map. Loop_MapScreenUpdate diff --git a/2 Paris/4290.asm b/2 Paris/4290.asm new file mode 100644 index 0000000..4e123b5 --- /dev/null +++ b/2 Paris/4290.asm @@ -0,0 +1,132 @@ +l_4290 + LDX #$0F ; (4290) Set X to #$0F (15 / 00001111) + +l_4292 + LDA $6900,X ; (4292) Load A with $6900,X + SEC ; (4295) Set Carry Flag + SBC var_BondCarXPosLow ; (4296) Subtract with Carry $0338 + STA $AD ; (4299) Store A to $AD + LDA $6940,X ; (429B) Load A with $6940,X + SBC var_BondCarXPosHigh ; (429E) Subtract with Carry $0339 + STA $AF ; (42A1) Store A to $AF + BEQ l_42AF ; (42A3) Branch to $42AF if Equal. This determines the other sprite below distance of #100. + CMP #$01 ; (42A5) Subtract #$01 from A (1 / 00000001) + BNE l_431E ; (42A7) Branch to $431E if Not Equal. This determines if the distance is above #1ff. + LDA $AD ; (42A9) Load A with $AD + CMP #$40 ; (42AB) Subtract #$40 from A (64 / 01000000) + BCS l_431E ; (42AD) Branch if Carry Set $431E + +l_42AF + LDA $6980,X ; (42AF) Load A with $6980,X + SEC ; (42B2) Set Carry Flag + SBC $033A ; (42B3) Subtract with Carry $033A + STA $FD ; (42B6) Store A to $FD + LDA $69C0,X ; (42B8) Load A with $69C0,X + SBC $033B ; (42BB) Subtract with Carry $033B + BNE l_431E ; (42BE) Branch to $431E if Not Equal + LDA $FD ; (42C0) Load A with $FD + CMP #$70 ; (42C2) Subtract #$70 from A (112 / 01110000) + BCS l_431E ; (42C4) Branch if Carry Set $431E + LDA $6910,X ; (42C6) Load A with $6910,X + TAY ; (42C9) Transfer A to Y + BMI l_42E7 ; (42CA) Branch to $42E7 if minus + AND #$40 ; (42CC) Logical AND with Accumulator and #$40 (64 / 01000000) + BNE l_4317 ; (42CE) Branch to $4317 if Not Equal + TYA ; (42D0) Transfer Y to A + AND #$07 ; (42D1) Logical AND with Accumulator and #$07 (7 / 00000111) + TAY ; (42D3) Transfer A to Y + LDA $03C8,Y ; (42D4) Load A with $03C8,Y + AND SpriteEnableRegister ; (42D7) Logical AND with Accumulator $D015 + BEQ l_42E7 ; (42DA) Branch to $42E7 if Equal + LDA $6910,X ; (42DC) Load A with $6910,X + ORA #$40 ; (42DF) Logical OR with Accumulator and #$40 (64 / 01000000) + STA $6910,X ; (42E1) Store A to $6910,X + JMP l_4317 ; (42E4) Jump to $4317 + +l_42E7 + LDA $6910,X ; (42E7) Load A with $6910,X + ORA #$80 ; (42EA) Logical OR with Accumulator and #$80 (128 / 10000000) + STA $6910,X ; (42EC) Store A to $6910,X + AND #$07 ; (42EF) Logical AND with Accumulator and #$07 (7 / 00000111) + STA $02 ; (42F1) Store A to $02 + INC $02 ; (42F3) Increment Memory $02 + LDA SpritePointerArray,X ; (42F5) Load A with $6920,X + STA $AE ; (42F8) Store A to $AE + TXA ; (42FA) Transfer X to A + PHA ; (42FB) Push Accumulator to Stack + LDA $FD ; (42FC) Load A with $FD + CLC ; (42FE) Clear Carry Flag + ADC #$90 ; (42FF) Add with Carry with #$90 (144 / 10010000) + TAY ; (4301) Transfer A to Y + CLC ; (4302) Clear Carry Flag + LDA $AD ; (4303) Load A with $AD + ADC #$07 ; (4305) Add with Carry with #$07 (7 / 00000111) + TAX ; (4307) Transfer A to X + LDA $AF ; (4308) Load A with $AF + ADC #$00 ; (430A) Add with Carry with #$00 (0 / 00000000) + CLC ; (430C) Clear Carry Flag + BEQ l_4310 ; (430D) Branch to $4310 if Equal + SEC ; (430F) Set Carry Flag + +l_4310 + LDA $02 ; (4310) Load A with $02 + JSR l_4200 ; (4312) Jump to Subroutine at $4200 + PLA ; (4315) Pull Accumulator from Stack + TAX ; (4316) Transfer A to X + +l_4317 + DEX ; (4317) Decrement X + BMI l_431D ; (4318) Branch to $431D if minus + JMP l_4292 ; (431A) Jump to $4292 + +l_431D + RTS ; (431D) Return from Subroutine + +l_431E + LDA $6910,X ; (431E) Load A with $6910,X + TAY ; (4321) Transfer A to Y + BMI l_4357 ; (4322) Branch to $4357 if minus + +l_4324 + AND #$10 ; (4324) Logical AND with Accumulator and #$10 (16 / 00010000) + BNE l_4330 ; (4326) Branch to $4330 if Not Equal + JMP l_4375 ; (4328) Jump to $4375 + +* = $432B + .byte $EA,$EA,$EA,$EA,$EA + +* = $4330 + +l_4330 + LDA $6800,X ; (4330) Load A with $6800,X + STA $6900,X ; (4333) Store A to $6900,X + LDA $6840,X ; (4336) Load A with $6840,X + STA $6940,X ; (4339) Store A to $6940,X + LDA $6880,X ; (433C) Load A with $6880,X + STA $6980,X ; (433F) Store A to $6980,X + LDA $68C0,X ; (4342) Load A with $68C0,X + STA $69C0,X ; (4345) Store A to $69C0,X + LDA $6820,X ; (4348) Load A with $6820,X + STA SpritePointerArray,X ; (434B) Store A to $6920,X + LDA $6830,X ; (434E) Load A with $6830,X + STA MaydayDirection,X ; (4351) Store A to $6930,X + JMP l_4375 ; (4354) Jump to $4375 + +l_4357 + LDA $6910,X ; (4357) Load A with $6910,X + AND #$07 ; (435A) Logical AND with Accumulator and #$07 (7 / 00000111) + TAY ; (435C) Transfer A to Y + LDA $03C0,Y ; (435D) Load A with $03C0,Y + AND SpriteEnableRegister ; (4360) Logical AND with Accumulator $D015 + STA SpriteEnableRegister ; (4363) Store A to $D015 + LDA $03C0,Y ; (4366) Load A with $03C0,Y + AND SpriteMulticolor ; (4369) Logical AND with Accumulator $D01C + STA SpriteMulticolor ; (436C) Store A to $D01C + LDA $6910,Y ; (436F) Load A with $6910,Y + JMP l_4324 ; (4372) Jump to $4324 + +l_4375 + LDA $6910,X ; (4375) Load A with $6910,X + AND #$07 ; (4378) Logical AND with Accumulator and #$07 (7 / 00000111) + STA $6910,X ; (437A) Store A to $6910,X + JMP l_4317 ; (437D) Jump to $4317 \ No newline at end of file diff --git a/2 Paris/4c00.asm b/2 Paris/4c00.asm new file mode 100644 index 0000000..339e1a4 --- /dev/null +++ b/2 Paris/4c00.asm @@ -0,0 +1,225 @@ +l_4C00 + LDX #$0F ; (4C00) Set X to #$0F (15 / 00001111) + STX $AC ; (4C02) Store X to $AC + JMP l_4CB2 ; (4C04) Jump to $4CB2 + +l_4C07 + LDX $AC ; (4C07) Load X with $AC + LDA $6910,X ; (4C09) Load A with $6910,X + AND #$80 ; (4C0C) Logical AND with Accumulator and #$80 (128 / 10000000) + BNE l_4C13 ; (4C0E) Branch to $4C13 if Not Equal + JMP l_4D0C ; (4C10) Jump to $4D0C + +l_4C13 + LDA $6910,X ; (4C13) Load A with $6910,X + AND #$03 ; (4C16) Logical AND with Accumulator and #$03 (3 / 00000011) + TAY ; (4C18) Transfer A to Y + LDA $03C8,Y ; (4C19) Load A with $03C8,Y + AND $02FC ; (4C1C) Logical AND with Accumulator $02FC + BEQ l_4C24 ; (4C1F) Branch to $4C24 if Equal + JMP l_4D74 ; (4C21) Jump to $4D74 + +l_4C24 + LDA $6910,X ; (4C24) Load A with $6910,X + AND #$20 ; (4C27) Logical AND with Accumulator and #$20 (32 / 00100000) + BEQ l_4C2E ; (4C29) Branch to $4C2E if Equal + JMP l_4D33 ; (4C2B) Jump to $4D33 + +l_4C2E + LDA $6910,X ; (4C2E) Load A with $6910,X + AND #$03 ; (4C31) Logical AND with Accumulator and #$03 (3 / 00000011) + TAY ; (4C33) Transfer A to Y + LDA $03A2 ; (4C34) Load A with $03A2 + CMP $69E0,X ; (4C37) Subtract $69E0,X from A + BCS l_4C3F ; (4C3A) Branch if Carry Set $4C3F + JMP l_4D0C ; (4C3C) Jump to $4D0C + +l_4C3F + LDA CarCollision ; (4C3F) Load A with $02FD + AND $03C8,Y ; (4C42) Logical AND with Accumulator $03C8,Y + BEQ l_4C4F ; (4C45) Branch to $4C4F if Equal + LDA #$C0 ; (4C47) Set A to #$C0 (192 / 11000000) + STA $6950,X ; (4C49) Store A to $6950,X + JMP l_4D0C ; (4C4C) Jump to $4D0C + +l_4C4F + DEC $6950,X ; (4C4F) Decrement $6950,X + LDA $6950,X ; (4C52) Load A with $6950,X + BEQ l_4C5A ; (4C55) Branch to $4C5A if Equal + JMP l_4D0C ; (4C57) Jump to $4D0C + +l_4C5A + LDA $6960,X ; (4C5A) Load A with $6960,X + STA $6950,X ; (4C5D) Store A to $6950,X + LDA MaydayYMap,X ; (4C60) Load A with $6980,X + LDY $69C0,X ; (4C63) Load Index Register Y $69C0,X + LDX #$08 ; (4C66) Set X to #$08 (8 / 00001000) + JSR l_4AB0 ; (4C68) Jump to Subroutine at $4AB0 + LDA $FD ; (4C6B) Load A with $FD + LDX #$7E ; (4C6D) Set X to #$7E (126 / 01111110) + JSR l_4D17 ; (4C6F) Jump to Subroutine at $4D17 + STA $FC ; (4C72) Store A to $FC + STX $FB ; (4C74) Store X to $FB + LDX $AC ; (4C76) Load X with $AC + LDA MaydayXMap,X ; (4C78) Load A with $6900,X + LDY $6940,X ; (4C7B) Load Index Register Y $6940,X + LDX #$08 ; (4C7E) Set X to #$08 (8 / 00001000) + JSR l_4AB0 ; (4C80) Jump to Subroutine at $4AB0 + CLC ; (4C83) Clear Carry Flag + LDA $FB ; (4C84) Load A with $FB + ADC $FD ; (4C86) Add with Carry $FD + STA $FB ; (4C88) Store A to $FB + LDA $FC ; (4C8A) Load A with $FC + ADC #$00 ; (4C8C) Add with Carry with #$00 (0 / 00000000) + STA $FC ; (4C8E) Store A to $FC + CLC ; (4C90) Clear Carry Flag + LDA $FB ; (4C91) Load A with $FB + ADC #$72 ; (4C93) Add with Carry with #$72 (114 / 01110010) + STA $FB ; (4C95) Store A to $FB + LDA $FC ; (4C97) Load A with $FC + ADC #$93 ; (4C99) Add with Carry with #$93 (147 / 10010011) + STA $FC ; (4C9B) Store A to $FC + LDY #$00 ; (4C9D) Load Y with #$00 (0 / 00000000) + LDA ($FB),Y ; (4C9F) Load A with ($FB),Y + CMP #$12 ; (4CA1) Subtract #$12 from A (18 / 00010010) + BCC l_4CB0 ; (4CA3) Branch to $4CB0 if Carry Clear + CMP #$1A ; (4CA5) Subtract #$1A from A (26 / 00011010) + BCS l_4CB0 ; (4CA7) Branch if Carry Set $4CB0 + AND #$07 ; (4CA9) Logical AND with Accumulator and #$07 (7 / 00000111) + LDX $AC ; (4CAB) Load X with $AC + STA MaydayDirection,X ; (4CAD) Store A to $6930,X + +l_4CB0 + LDX $AC ; (4CB0) Load X with $AC + +l_4CB2 + LDA MaydayDirection,X ; (4CB2) Load A with $6930,X + TAY ; (4CB5) Transfer A to Y + LDA $69B0,Y ; (4CB6) Load A with $69B0,Y + BMI l_4CCE ; (4CB9) Branch to $4CCE if minus + BEQ l_4CDC ; (4CBB) Branch to $4CDC if Equal + CLC ; (4CBD) Clear Carry Flag + LDA MaydayXMap,X ; (4CBE) Load A with $6900,X + ADC #$01 ; (4CC1) Add with Carry with #$01 (1 / 00000001) + STA MaydayXMap,X ; (4CC3) Store A to $6900,X + BCC l_4CDC ; (4CC6) Branch to $4CDC if Carry Clear + INC $6940,X ; (4CC8) Increment Memory $6940,X + JMP l_4CDC ; (4CCB) Jump to $4CDC + +l_4CCE + SEC ; (4CCE) Set Carry Flag + LDA MaydayXMap,X ; (4CCF) Load A with $6900,X + SBC #$01 ; (4CD2) Subtract with Carry #$01 (1 / 00000001) + STA MaydayXMap,X ; (4CD4) Store A to $6900,X + BCS l_4CDC ; (4CD7) Branch if Carry Set $4CDC + DEC $6940,X ; (4CD9) Decrement $6940,X + +l_4CDC + LDA $69B8,Y ; (4CDC) Load A with $69B8,Y + BMI l_4CF4 ; (4CDF) Branch to $4CF4 if minus + BEQ l_4D02 ; (4CE1) Branch to $4D02 if Equal + CLC ; (4CE3) Clear Carry Flag + LDA MaydayYMap,X ; (4CE4) Load A with $6980,X + ADC #$01 ; (4CE7) Add with Carry with #$01 (1 / 00000001) + STA MaydayYMap,X ; (4CE9) Store A to $6980,X + BCC l_4D02 ; (4CEC) Branch to $4D02 if Carry Clear + INC $69C0,X ; (4CEE) Increment Memory $69C0,X + JMP l_4D02 ; (4CF1) Jump to $4D02 + +l_4CF4 + SEC ; (4CF4) Set Carry Flag + LDA MaydayYMap,X ; (4CF5) Load A with $6980,X + SBC #$01 ; (4CF8) Subtract with Carry #$01 (1 / 00000001) + STA MaydayYMap,X ; (4CFA) Store A to $6980,X + BCS l_4D02 ; (4CFD) Branch if Carry Set $4D02 + DEC $69C0,X ; (4CFF) Decrement $69C0,X + +l_4D02 + CPX #$0F ; (4D02) Subtract #$0F from X (15 / 00001111) + BEQ l_4D0C ; (4D04) Branch to $4D0C if Equal + LDA $69A0,Y ; (4D06) Load A with $69A0,Y + STA SpritePointerArray,X ; (4D09) Store A to $6920,X + +l_4D0C + LDX $AC ; (4D0C) Load X with $AC + DEX ; (4D0E) Decrement X + BEQ l_4D16 ; (4D0F) Branch to $4D16 if Equal + STX $AC ; (4D11) Store X to $AC + JMP l_4C07 ; (4D13) Jump to $4C07 + +l_4D16 + RTS ; (4D16) Return from Subroutine + +l_4D17 + STA $FE ; (4D17) Store A to $FE + LDA #$00 ; (4D19) Set A to #$00 (0 / 00000000) + STA $FD ; (4D1B) Store A to $FD + STX $02 ; (4D1D) Store X to $02 + LDX #$08 ; (4D1F) Set X to #$08 (8 / 00001000) + +l_4D21 + LSR $02 ; (4D21) Logical Shift Right $02 + BCC l_4D28 ; (4D23) Branch to $4D28 if Carry Clear + CLC ; (4D25) Clear Carry Flag + ADC $FE ; (4D26) Add with Carry $FE + +l_4D28 + ROR A ; (4D28) Rotate Right Accumulator + ROR $FD ; (4D29) Rotate Right $FD + DEX ; (4D2B) Decrement X + BNE l_4D21 ; (4D2C) Branch to $4D21 if Not Equal + STA $FE ; (4D2E) Store A to $FE + LDX $FD ; (4D30) Load X with $FD + RTS ; (4D32) Return from Subroutine + +l_4D33 + DEC $6990,X ; (4D33) Decrement $6990,X + BEQ l_4D3B ; (4D36) Branch to $4D3B if Equal + JMP l_4D0C ; (4D38) Jump to $4D0C + +l_4D3B + LDA #$18 ; (4D3B) Set A to #$18 (24 / 00011000) + STA $6990,X ; (4D3D) Store A to $6990,X + DEC $6970,X ; (4D40) Decrement $6970,X + BEQ l_4D53 ; (4D43) Branch to $4D53 if Equal + LDA $6970,X ; (4D45) Load A with $6970,X + AND #$01 ; (4D48) Logical AND with Accumulator and #$01 (1 / 00000001) + CLC ; (4D4A) Clear Carry Flag + ADC #$AD ; (4D4B) Add with Carry with #$AD (173 / 10101101) + STA SpritePointerArray,X ; (4D4D) Store A to $6920,X + JMP l_4D0C ; (4D50) Jump to $4D0C + +l_4D53 + LDA $6910,X ; (4D53) Load A with $6910,X + AND #$07 ; (4D56) Logical AND with Accumulator and #$07 (7 / 00000111) + TAY ; (4D58) Transfer A to Y + LDA $03C0,Y ; (4D59) Load A with $03C0,Y + AND SpriteEnableRegister ; (4D5C) Logical AND with Accumulator $D015 + STA SpriteEnableRegister ; (4D5F) Store A to $D015 + LDA $03C0,Y ; (4D62) Load A with $03C0,Y + AND SpriteMulticolor ; (4D65) Logical AND with Accumulator $D01C + STA SpriteMulticolor ; (4D68) Store A to $D01C + TYA ; (4D6B) Transfer Y to A + ORA #$50 ; (4D6C) Logical OR with Accumulator and #$50 (80 / 01010000) + STA $6910,X ; (4D6E) Store A to $6910,X + JMP l_4D0C ; (4D71) Jump to $4D0C + +l_4D74 + ORA SpriteMulticolor ; (4D74) Logical OR with Accumulator and $D01C + STA SpriteMulticolor ; (4D77) Store A to $D01C + LDA #$00 ; (4D7A) Set A to #$00 (0 / 00000000) + STA $02FC ; (4D7C) Store A to $02FC + LDA $6910,X ; (4D7F) Load A with $6910,X + ORA #$70 ; (4D82) Logical OR with Accumulator and #$70 (112 / 01110000) + STA $6910,X ; (4D84) Store A to $6910,X + LDA #$10 ; (4D87) Set A to #$10 (16 / 00010000) + STA $6970,X ; (4D89) Store A to $6970,X + JSR l_4428 ; (4D8C) Jump to Subroutine at $4428 + JMP l_4D0C ; (4D8F) Jump to $4D0C + +l_4D92 + JSR l_4C00 ; (4D92) Jump to Subroutine at $4C00 + LDA #$00 ; (4D95) Set A to #$00 (0 / 00000000) + STA CarCollision ; (4D97) Store A to $02FD + STA $02FC ; (4D9A) Store A to $02FC + RTS ; (4D9D) Return from Subroutine \ No newline at end of file diff --git a/2 Paris/4e00.asm b/2 Paris/4e00.asm new file mode 100644 index 0000000..9540162 --- /dev/null +++ b/2 Paris/4e00.asm @@ -0,0 +1,112 @@ +l_4E00 + LDA V_MapXposition ; (4E00) Load A with $033C + STA $AE ; (4E03) Store A to $AE + LDA V_MapYposition ; (4E05) Load A with $033D + STA $AF ; (4E08) Store A to $AF + LDA $0335 ; (4E0A) Load A with $0335 + BEQ l_4E2E ; (4E0D) Branch to $4E2E if Equal + BMI l_4E21 ; (4E0F) Branch to $4E21 if minus + CLC ; (4E11) Clear Carry Flag + LDA #$7E ; (4E12) Set A to #$7E (126 / 01111110) + ADC $AE ; (4E14) Add with Carry $AE + STA $AE ; (4E16) Store A to $AE + LDA $AF ; (4E18) Load A with $AF + ADC #$00 ; (4E1A) Add with Carry with #$00 (0 / 00000000) + STA $AF ; (4E1C) Store A to $AF + JMP l_4E2E ; (4E1E) Jump to $4E2E + +l_4E21 + SEC ; (4E21) Set Carry Flag + LDA $AE ; (4E22) Load A with $AE + SBC #$7E ; (4E24) Subtract with Carry #$7E (126 / 01111110) + STA $AE ; (4E26) Store A to $AE + LDA $AF ; (4E28) Load A with $AF + SBC #$00 ; (4E2A) Subtract with Carry #$00 (0 / 00000000) + STA $AF ; (4E2C) Store A to $AF + +l_4E2E + LDA $0334 ; (4E2E) Load A with $0334 + BEQ l_4E52 ; (4E31) Branch to $4E52 if Equal + BMI l_4E45 ; (4E33) Branch to $4E45 if minus + CLC ; (4E35) Clear Carry Flag + LDA #$01 ; (4E36) Set A to #$01 (1 / 00000001) + ADC $AE ; (4E38) Add with Carry $AE + STA $AE ; (4E3A) Store A to $AE + LDA $AF ; (4E3C) Load A with $AF + ADC #$00 ; (4E3E) Add with Carry with #$00 (0 / 00000000) + STA $AF ; (4E40) Store A to $AF + JMP l_4E52 ; (4E42) Jump to $4E52 + +l_4E45 + SEC ; (4E45) Set Carry Flag + LDA $AE ; (4E46) Load A with $AE + SBC #$01 ; (4E48) Subtract with Carry #$01 (1 / 00000001) + STA $AE ; (4E4A) Store A to $AE + LDA $AF ; (4E4C) Load A with $AF + SBC #$00 ; (4E4E) Subtract with Carry #$00 (0 / 00000000) + STA $AF ; (4E50) Store A to $AF + +l_4E52 + CLC ; (4E52) Clear Carry Flag + LDA $AE ; (4E53) Load A with $AE + ADC #$08 ; (4E55) Add with Carry with #$08 (8 / 00001000) + STA $AE ; (4E57) Store A to $AE + LDA $AF ; (4E59) Load A with $AF + ADC #$03 ; (4E5B) Add with Carry with #$03 (3 / 00000011) + STA $AF ; (4E5D) Store A to $AF + SEC ; (4E5F) Set Carry Flag + LDA $AE ; (4E60) Load A with $AE + SBC $C9 ; (4E62) Subtract with Carry $C9 + TAX ; (4E64) Transfer A to X + LDA $AF ; (4E65) Load A with $AF + SBC $CA ; (4E67) Subtract with Carry $CA + STA $FE ; (4E69) Store A to $FE + LDY #$03 ; (4E6B) Load Y with #$03 (3 / 00000011) + +l_4E6D + LDA $FE ; (4E6D) Load A with $FE + CMP $4EC4,Y ; (4E6F) Compare Accumulator $4EC4,Y + BNE l_4E7A ; (4E72) Branch to $4E7A if Not Equal + TXA ; (4E74) Transfer X to A + CMP $4EC0,Y ; (4E75) Compare Accumulator $4EC0,Y + BEQ l_4E80 ; (4E78) Branch to $4E80 if Equal + +l_4E7A + DEY ; (4E7A) Decrement Y Register + BPL l_4E6D ; (4E7B) Branch to $4E6D if positive + JMP l_4E97 ; (4E7D) Jump to $4E97 + +l_4E80 + STY $02 ; (4E80) Store Y Register $02 + LDY #$00 ; (4E82) Load Y with #$00 (0 / 00000000) + LDA ($C9),Y ; (4E84) Load A with ($C9),Y + CMP #$12 ; (4E86) Subtract #$12 from A (18 / 00010010) + BCC l_4EA0 ; (4E88) Branch to $4EA0 if Carry Clear + CMP #$1A ; (4E8A) Subtract #$1A from A (26 / 00011010) + BCS l_4EA0 ; (4E8C) Branch if Carry Set $4EA0 + LDY $02 ; (4E8E) Load Y with Data from $02 + LDA $4EC8,Y ; (4E90) Load A with $4EC8,Y + LDY #$00 ; (4E93) Load Y with #$00 (0 / 00000000) + STA ($C9),Y ; (4E95) Store Accumulator ($C9),Y + +l_4E97 + LDA $AE ; (4E97) Load A with $AE + STA $C9 ; (4E99) Store A to $C9 + LDA $AF ; (4E9B) Load A with $AF + STA $CA ; (4E9D) Store A to $CA + RTS ; (4E9F) Return from Subroutine + +l_4EA0 + LDY $02 ; (4EA0) Load Y with Data from $02 + CMP $4ECC,Y ; (4EA2) Compare Accumulator $4ECC,Y + BEQ l_4E97 ; (4EA5) Branch to $4E97 if Equal + LDX $03A2 ; (4EA7) Load X with $03A2 + INX ; (4EAA) Increment X + CPX #$14 ; (4EAB) Subtract #$14 from X (20 / 00010100) + BNE l_4EB4 ; (4EAD) Branch to $4EB4 if Not Equal + JSR l_4900 ; (4EAF) Jump to Subroutine at $4900 + LDX #$12 ; (4EB2) Set X to #$12 (18 / 00010010) + +l_4EB4 + STX $03A2 ; (4EB4) Store X Register $03A2 + JMP l_4E97 ; (4EB7) Jump to $4E97 \ No newline at end of file diff --git a/2 Paris/5200.asm b/2 Paris/5200.asm new file mode 100644 index 0000000..8efc011 --- /dev/null +++ b/2 Paris/5200.asm @@ -0,0 +1,204 @@ +Sub_MaydayAndClock + LDA EndGameFlag ; (5200) Load $0313. #00 Continue / #80 Mayday found / Ends game #27. + BNE _rts ; (5203) Branch to $5216 if game is ending. This will RTS. + LDY MaydayLoopCounter ; (5205) Load MaydayLoopCounter. Loops from 7 to 0. + DEY ; (5208) Decrement MaydayLoopCounter + STY MaydayLoopCounter ; (5209) Store MaydayLoopCounter + BNE _rts ; (520C) Branch to $5216 if Not zero. This will RTS as Mayday is continuing in the same direction. + LDA MaydayLanded ; (520E) Load A with $02FE. #00 continue circling / #01 Landed. + BEQ l_5218 ; (5211) Branch to $5218 if Equal. Mayday is continuing to circle. + JMP l_52A4 ; (5213) Jump to $52A4. Mayday has landed. + +_rts + RTS ; (5216) Return from Subroutine + +* = $5217 + .byte $60 + +* = $5218 + +l_5218 + LDY #$07 ; (5218) Load Y with #$07 (7 / 00000111). + STY MaydayLoopCounter ; (521A) Reset loop counter to #07 ($034F). + LDA MaydayDirection ; (521D) Load A with $6930. 7:NW, 6:W, 5:SW, 4:W, 3:SE, 2:E, 1:NE, 0:N. + TAY ; (5220) Transfer A to Y + LDA $69B0,Y ; (5221) Load A with $69B0,Y. $69B0 (N:Zero), $69B1 (NE:One), $69B2 (E:One), $69B3 (SE:One), $69B4 (S:Zero), $69B5 (SW:Neg), $69B6 (W:Neg), $69B7 (NW:Neg) + BMI ReduceMaydayX ; (5224) Branch to $5239 if minus. Going west so reduce X. + BEQ MaydayNorthOrSouth ; (5226) Branch to $5247 if Equal. Going north or south branch to MaydayNorthOrSouth. + CLC ; (5228) Clear Carry Flag + LDA MaydayXMap ; (5229) Load A with $6900 + ADC #$01 ; (522C) Add with Carry with #$01 (1 / 00000001) + STA MaydayXMap ; (522E) Store A to $6900 + BCC MaydayNorthOrSouth ; (5231) Branch to $5247 if Carry Clear + INC $6940 ; (5233) Increment Memory $6940 + JMP MaydayNorthOrSouth ; (5236) Jump to $5247 + +ReduceMaydayX + SEC ; (5239) Set Carry Flag + LDA MaydayXMap ; (523A) Load A with $6900 + SBC #$01 ; (523D) Subtract with Carry #$01 (1 / 00000001) + STA MaydayXMap ; (523F) Store A to $6900 + BCS MaydayNorthOrSouth ; (5242) Branch if Carry Set $5247 + DEC $6940 ; (5244) Decrement $6940 + +MaydayNorthOrSouth + LDA $69B8,Y ; (5247) Load A with $69B8,Y. $69B8 (N:Neg), $69B9 (NE:Neg), $69BA (E:Zero), $69BB (SE:One), $69BC (S:One), $69BD (SW:One), $69BE (W:Zero), $69BF (NW:Neg) + BMI ReduceMaydayY ; (524A) Branch to $525F if minus / Going any North direction. + BEQ MaydayEastOrWest ; (524C) Branch to $526D if Equal / Going East or West. + CLC ; (524E) Clear Carry Flag + LDA MaydayYMap ; (524F) Load A with $6980 + ADC #$01 ; (5252) Add with Carry with #$01 (1 / 00000001) + STA MaydayYMap ; (5254) Store A to $6980 + BCC MaydayEastOrWest ; (5257) Branch to $526D if Carry Clear + INC $69C0 ; (5259) Increment Memory $69C0 + JMP MaydayEastOrWest ; (525C) Jump to $526D + +ReduceMaydayY + SEC ; (525F) Set Carry Flag + LDA MaydayYMap ; (5260) Load A with $6980 + SBC #$01 ; (5263) Subtract with Carry #$01 (1 / 00000001) + STA MaydayYMap ; (5265) Store A to $6980 + BCS MaydayEastOrWest ; (5268) Branch if Carry Set $526D + DEC $69C0 ; (526A) Decrement $69C0 + +MaydayEastOrWest + LDA MaydaySPArray,Y ; (526D) Load A with $03E0,Y. + STA SpritePointerArray ; (5270) Store A to $6920 + LDY MaydayPathCounter ; (5273) Load Y with Data from $69F8 + DEY ; (5276) Decrement Y Register + STY MaydayPathCounter ; (5277) Store Y Register $69F8 + BNE l_52A1 ; (527A) Branch to $52A1 if Not Equal + CLC ; (527C) Clear Carry Flag + LDA MaydayTurnsTaken ; (527D) Load A with $69F9 + ADC #$02 ; (5280) Add with Carry with #$02 (2 / 00000010) + STA MaydayTurnsTaken ; (5282) Store A to $69F9 + NOP ; (5285) No operation + CMP MayDayLandLocation ; (5286) Subtract $D3 from A. Compare number of Mayday turns taken against $D3. + BNE l_5290 ; (5288) Branch to $5290 if Not Equal + INC MaydayLanded ; (528A) Increment Memory $02FE. #00 continue circling / #01 Landed. + JMP UpdateMaydayDirection ; (528D) Jump to $5296 + +l_5290 + LDY MaydayTurnsTaken ; (5290) Load Y with Data from $69F9 + STY MaydayPathCounter ; (5293) Store Y Register $69F8 + +UpdateMaydayDirection + LDY MaydayDirection ; (5296) Load Y with Data from $6930 + DEY ; (5299) Decrement Y Register + BPL StoreMaydayDirection ; (529A) Branch to $529E if positive + LDY #$07 ; (529C) Load Y with #$07 (7 / 00000111) + +StoreMaydayDirection + STY MaydayDirection ; (529E) Store Y Register $6930 + +l_52A1 + JMP l_5315 ; (52A1) Jump to $5315 + +l_52A4 + LDY #$08 ; (52A4) Load Y with #$08 (8 / 00001000) + STY MaydayLoopCounter ; (52A6) Store Y Register $034F + LDA $6940 ; (52A9) Load A with $6940 + CMP $69FD ; (52AC) Subtract $69FD from A + BCC l_52D1 ; (52AF) Branch to $52D1 if Carry Clear + BEQ l_52B6 ; (52B1) Branch to $52B6 if Equal + JMP l_52C0 ; (52B3) Jump to $52C0 + +l_52B6 + LDA MaydayXMap ; (52B6) Load A with $6900 + CMP $69FC ; (52B9) Subtract $69FC from A + BCC l_52D1 ; (52BC) Branch to $52D1 if Carry Clear + BEQ l_52DF ; (52BE) Branch to $52DF if Equal + +l_52C0 + SEC ; (52C0) Set Carry Flag + LDA MaydayXMap ; (52C1) Load A with $6900 + SBC #$01 ; (52C4) Subtract with Carry #$01 (1 / 00000001) + STA MaydayXMap ; (52C6) Store A to $6900 + BCS l_52DF ; (52C9) Branch if Carry Set $52DF + DEC $6940 ; (52CB) Decrement $6940 + JMP l_52DF ; (52CE) Jump to $52DF + +l_52D1 + CLC ; (52D1) Clear Carry Flag + LDA MaydayXMap ; (52D2) Load A with $6900 + ADC #$01 ; (52D5) Add with Carry with #$01 (1 / 00000001) + STA MaydayXMap ; (52D7) Store A to $6900 + BCC l_52DF ; (52DA) Branch to $52DF if Carry Clear + INC $6940 ; (52DC) Increment Memory $6940 + +l_52DF + LDA $69C0 ; (52DF) Load A with $69C0 + CMP $69FF ; (52E2) Subtract $69FF from A + BCC l_5307 ; (52E5) Branch to $5307 if Carry Clear + BEQ l_52EC ; (52E7) Branch to $52EC if Equal + JMP l_52F6 ; (52E9) Jump to $52F6 + +l_52EC + LDA MaydayYMap ; (52EC) Load A with $6980 + CMP $69FE ; (52EF) Subtract $69FE from A + BCC l_5307 ; (52F2) Branch to $5307 if Carry Clear + BEQ l_5315 ; (52F4) Branch to $5315 if Equal + +l_52F6 + SEC ; (52F6) Set Carry Flag + LDA MaydayYMap ; (52F7) Load A with $6980 + SBC #$01 ; (52FA) Subtract with Carry #$01 (1 / 00000001) + STA MaydayYMap ; (52FC) Store A to $6980 + BCS l_5315 ; (52FF) Branch if Carry Set $5315 + DEC $69C0 ; (5301) Decrement $69C0 + JMP l_5315 ; (5304) Jump to $5315 + +l_5307 + CLC ; (5307) Clear Carry Flag + LDA MaydayYMap ; (5308) Load A with $6980 + ADC #$01 ; (530B) Add with Carry with #$01 (1 / 00000001) + STA MaydayYMap ; (530D) Store A to $6980 + BCC l_5315 ; (5310) Branch to $5315 if Carry Clear + INC $69C0 ; (5312) Increment Memory $69C0 + +l_5315 + LDX $535C ; (5315) Load X with $535C + DEX ; (5318) Decrement X + STX $535C ; (5319) Store X Register $535C + BNE l_534D_RTS ; (531C) Branch to $534D if Not Equal + LDX #$14 ; (531E) Set X to #$14 (20 / 00010100) + STX $535C ; (5320) Store X Register $535C + NOP ; (5323) No operation. + LDX #$02 ; (5324) Set X to #$02 (2 / 00000010). Used to select three timer values. + +ReduceTimer + DEC ScrCounterDigit100,X ; (5326) Decrement $04F3,X. #6d:9,#6c:8,#6b:7,#6a:6,#69:5,#68:4,#67:3,#66:2,#65:1,#64:0. + LDA ScrCounterDigit100,X ; (5329) Load A with $04F3,X + CMP #$63 ; (532C) Subtract #$63 from A (99 / 01100011) + BNE CheckRemainingTime ; (532E) Branch to $5338 if Not Equal + LDA #$6D ; (5330) Set A to #$6D (109 / 01101101) + STA ScrCounterDigit100,X ; (5332) Store A to $04F3,X + DEX ; (5335) Decrement X + BPL ReduceTimer ; (5336) Branch to $5326 if positive + +CheckRemainingTime + LDA ScrCounterDigit100 ; (5338) Load A with $04F3 + CMP #$64 ; (533B) Subtract #$64 from A (100 / 01100100). #64 represents zero on clock. + BNE l_534D_RTS ; (533D) Branch to $534D if Not Equal. + LDA ScrCounterDigit10 ; (533F) Load A with $04F4 + CMP #$64 ; (5342) Subtract #$64 from A (100 / 01100100). #64 represents zero on clock. + BNE Check60SecLeft ; (5344) Branch to $534E if Not Equal + LDA ScrCounterDigit1 ; (5346) Load A with $04F5 + CMP #$64 ; (5349) Subtract #$64 from A (100 / 01100100). #64 represents zero on clock. + BEQ ClockRanOut ; (534B) Branch to $5356 if Equal. Branch if clock reaches 000. + +l_534D_RTS + RTS ; (534D) Return from Subroutine + +Check60SecLeft + CMP #$6A ; (534E) Subtract #$6A from A (106 / 01101010) + BCS l_5355_RTS ; (5350) Branch if Carry Set $5355 + INC MaydayBeginLanding ; (5352) Increment Memory $02E1 + +l_5355_RTS + RTS ; (5355) Return from Subroutine + +ClockRanOut + LDA #$40 ; (5356) Set A to #$40 (64 / 01000000) + STA EndGameFlag ; (5358) Store A to $0313. #00 Continue / #80 Mayday found / Ends game #27 / Clock ran out #40. + RTS ; (535B) Return from Subroutine \ No newline at end of file diff --git a/2 Paris/Level2.asm b/2 Paris/Level2.asm index 1f9ae64..1f97a09 100644 --- a/2 Paris/Level2.asm +++ b/2 Paris/Level2.asm @@ -84,291 +84,45 @@ CHROUT = $ffd2 GETIN = $ffe4 ; Game related variables -MayDayLandLocation = $D3 +MayDayLandLocation = $D3 -MaydayBeginLanding = $02E1 -CarCollision = $02fd -MaydayLanded = $02fe ;#00 continue circling / #01 Landed +MaydayBeginLanding = $02E1 +CarCollision = $02fd +MaydayLanded = $02fe ;#00 continue circling / #01 Landed -EndGameFlag = $0313 ;#00 Continue / #80 Mayday found / Ends game #27 -CarSpeed = $0340 -RegisterCollision = $0346 +EndGameFlag = $0313 ;#00 Continue / #80 Mayday found / Ends game #27 -MaydayLoopCounter = $034f +var_BondCarXPosLow = $0338 +var_BondCarXPosHigh = $0339 -CarFacingDirection = $03a0 ;00 N / 01 NE / 02 E / 03 SE / 04 S / 05 SW / 06 W / 07 NW +V_MapXposition = $033c +V_MapYposition = $033d -DamageCount = $03a1 -ForwardReverse = $03a4 ;#00 Forward / #08 Reverse +CarSpeed = $0340 +RegisterCollision = $0346 -ScrCounterDigit100 = $04f3 -ScrCounterDigit10 = $04f4 -ScrCounterDigit1 = $04f5 +MaydayLoopCounter = $034f + +CarFacingDirection = $03a0 ;00 N / 01 NE / 02 E / 03 SE / 04 S / 05 SW / 06 W / 07 NW +DamageCount = $03a1 + +ForwardReverse = $03a4 ;#00 Forward / #08 Reverse +MaydaySPArray = $03E0 + +ScrCounterDigit100 = $04f3 +ScrCounterDigit10 = $04f4 +ScrCounterDigit1 = $04f5 MaydayXMap = $6900 +SpritePointerArray = $6920 MaydayDirection = $6930 MaydayYMap = $6980 +MaydayPathCounter = $69F8 MaydayTurnsTaken = $69F9 -* = $0000 - .byte $2F,$34,$00,$AA,$B1,$91,$B3,$22,$22,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$18,$08,$19,$16,$00,$0A,$76,$A3,$00,$00,$00,$00 - .byte $00,$00,$40,$A3,$B3,$BD,$00,$00,$00,$00,$00,$01,$08,$5A,$B4,$C4 - .byte $60,$C4,$60,$00,$A0,$00,$00,$00,$A0,$C4,$07,$00,$00,$00,$08,$00 - .byte $00,$00,$08,$00,$00,$00,$00,$24,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$03,$4C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$8C,$00,$00,$08,$18,$00,$00,$00,$8C,$81,$60,$00,$00,$00,$00 - .byte $00,$80,$A3,$E6,$7A,$D0,$02,$E6,$7B,$AD,$0B,$08,$C9,$3A,$B0,$0A - .byte $C9,$20,$F0,$EF,$38,$E9,$30,$38,$E9,$D0,$60,$80,$4F,$C7,$52,$58 - .byte $00,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$03,$00,$00,$80,$00,$00 - .byte $00,$00,$4E,$00,$00,$00,$09,$00,$13,$00,$00,$00,$00,$00,$00,$FC - .byte $00,$00,$3C,$03,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$A0,$30,$FD,$40,$00,$00,$00,$06,$00,$40,$FF,$0B,$20,$00 - .byte $00,$F0,$04,$00,$00,$27,$06,$0A,$00,$84,$84,$84,$84,$84,$84,$84 - .byte $85,$85,$85,$85,$85,$85,$86,$86,$86,$86,$86,$86,$86,$87,$87,$87 - .byte $87,$87,$87,$F0,$D8,$00,$00,$E7,$07,$00,$20,$08,$00,$08,$E6,$07 - .byte $78,$A9,$34,$85,$01,$A0,$00,$A9,$5A,$85,$AE,$A9,$B4,$85,$AF,$A9 - .byte $00,$85,$AC,$85,$AD,$A5,$AC,$D0,$02,$C6,$AD,$C6,$AC,$A5,$AE,$D0 - .byte $02,$C6,$AF,$C6,$AE,$B1,$AE,$91,$AC,$A5,$AE,$C9,$BE,$D0,$E6,$A5 - .byte $AF,$C9,$08,$D0,$E0,$A9,$00,$85,$AE,$A9,$10,$85,$AF,$B1,$AC,$C9 - .byte $BF,$D0,$12,$20,$78,$01,$B1,$AC,$AA,$A9,$00,$91,$AE,$20,$7F,$01 - .byte $CA,$D0,$F8,$F0,$16,$C9,$CF,$D0,$0D,$20,$78,$01,$B1,$AC,$AA,$20 - .byte $78,$01,$B1,$AC,$D0,$E5,$91,$AE,$20,$7F,$01,$20,$78,$01,$D0,$CD - .byte $A9,$37,$85,$01,$58,$4C,$B0,$43,$E6,$AC,$D0,$02,$E6,$AD,$60,$E6 - .byte $AE,$D0,$02,$E6,$AF,$60,$78,$A9,$0A,$85,$FB,$A9,$19,$85,$FC,$A9 - .byte $00,$8D,$18,$D4,$A0,$00,$B1,$FB,$85,$FD,$C8,$B1,$FB,$85,$FE,$C8 - .byte $18,$D8,$A5,$FB,$65,$FD,$85,$02,$A5,$FC,$65,$FE,$85,$03,$A2,$08 - .byte $B1,$FB,$2A,$48,$B0,$06,$20,$80,$10,$4C,$3C,$10,$20,$6B,$10,$CF - .byte $03,$EA,$D8,$38,$A5,$FB,$E5,$02,$A5,$FC,$E5,$03,$B0,$1B,$20,$8B - .byte $10,$68,$CA,$E0,$00,$D0,$0D,$A9,$FF,$C5,$FB,$D0,$02,$E6,$FC,$E6 - .byte $FB,$4C,$28,$10,$EA,$EA,$4C,$2C,$10,$A9,$00,$8D,$18,$D4,$68,$58 - .byte $60,$A9,$0F,$8D,$18,$D4,$CF,$0F,$EA,$60,$A9,$00,$8D,$18,$6D,$01 - .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$08,$00,$A0,$00,$0E,$0E,$04,$0A,$00,$04,$0A,$00,$00,$48 - .byte $EB,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$01,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $8B,$E3,$83,$A4,$7C,$A5,$1A,$A7,$E4,$A7,$86,$AE,$00,$00,$00,$00 - .byte $4C,$48,$B2,$00,$31,$EA,$66,$FE,$47,$FE,$4A,$F3,$91,$F2,$0E,$F2 - .byte $50,$F2,$33,$F3,$57,$F1,$CA,$F1,$ED,$F6,$3E,$F1,$2F,$F3,$66,$FE - .byte $A5,$F4,$ED,$F5,$A9,$00,$85,$A7,$A4,$FB,$F0,$0C,$06,$FA,$2A,$26 - .byte $A7,$C6,$FB,$CA,$D0,$F2,$A8,$60,$48,$B1,$FE,$85,$FA,$A9,$08,$85 - .byte $FB,$68,$A4,$FE,$D0,$02,$C6,$FF,$C6,$FE,$C0,$E7,$D0,$DE,$A4,$FF - .byte $C0,$07,$D0,$D8,$A9,$37,$85,$01,$58,$4C,$13,$08,$A4,$A8,$F0,$22 - .byte $A5,$F7,$38,$E5,$A8,$B0,$03,$C6,$F8,$38,$85,$F7,$A5,$FC,$E5,$A8 - .byte $B0,$02,$C6,$FD,$85,$FC,$B1,$F7,$88,$91,$FC,$98,$D0,$F8,$C4,$A9 - .byte $F0,$0A,$B1,$F7,$C6,$FD,$C6,$F8,$C6,$A9,$10,$EC,$E6,$01,$CE,$20 - .byte $D0,$C6,$01,$60,$00,$11,$08,$C1,$07,$9E,$32,$30,$36,$37,$20,$4D - .byte $41,$47,$49,$43,$00,$00,$00,$EC,$09,$15,$1E,$04,$1B,$01,$70,$EA - .byte $A2,$00,$BD,$38,$08,$9D,$0F,$1C,$E8,$D0,$F7,$A2,$FF,$9A,$4C,$00 - .byte $01,$81,$78,$34,$A1,$B8,$81,$A9,$5A,$23,$B5,$B4,$34,$2D,$50,$AC - .byte $85,$AD,$A5,$52,$8A,$C6,$AD,$C6,$75,$0B,$85,$C6,$AF,$C6,$AE,$B1 - .byte $AE,$91,$AC,$A5,$AE,$C9,$BE,$D0,$00,$00,$00,$00,$00,$00,$00,$00 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$2A,$2A,$2A,$2A - .byte $20,$03,$0F,$0D,$0D,$0F,$04,$0F,$12,$05,$20,$36,$34,$20,$02,$01 - .byte $13,$09,$03,$20,$16,$32,$20,$2A,$2A,$2A,$2A,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$36,$34,$0B,$20,$12,$01,$0D - .byte $20,$13,$19,$13,$14,$05,$0D,$20,$20,$33,$38,$39,$31,$31,$20,$02 - .byte $01,$13,$09,$03,$20,$02,$19,$14,$05,$13,$20,$06,$12,$05,$05,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$12,$05,$01,$04,$19,$2E,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 - .byte $20,$20,$20,$20,$20,$20,$20,$20,$00,$11,$08,$C1,$07,$9E,$32,$30 - .byte $36,$37,$20,$4D,$41,$47,$49,$43,$00,$00,$00,$EC,$09,$15,$1E,$04 - .byte $00,$11,$08,$C1,$07,$9E,$32,$30,$36,$37,$20,$4D,$41,$47,$49,$43 - .byte $00,$00,$00,$EA,$EA,$EA,$EA,$EA,$EA,$EA,$EA,$EA,$EA,$EA,$EA,$EA - .byte $EA,$EA,$EA,$EA,$EA,$EA,$EA,$A2,$00,$BD,$38,$08,$9D,$00,$01,$E8 - .byte $D0,$F7,$A2,$FF,$9A,$4C,$00,$01,$78,$A9,$34,$85,$01,$A0,$00,$A9 - .byte $5A,$85,$AE,$A9,$B4,$85,$AF,$A9,$00,$85,$AC,$85,$AD,$A5,$AC,$D0 - .byte $02,$C6,$AD,$C6,$AC,$A5,$AE,$D0,$02,$C6,$AF,$C6,$AE,$B1,$AE,$91 - .byte $AC,$A5,$AE,$C9,$BE,$D0,$E6,$A5,$AF,$C9,$08,$D0,$E0,$A9,$00,$85 - .byte $AE,$A9,$10,$85,$AF,$B1,$AC,$C9,$BF,$D0,$12,$20,$78,$01,$B1,$AC - .byte $AA,$A9,$00,$91,$AE,$20,$7F,$01,$CA,$D0,$F8,$F0,$16,$C9,$CF,$D0 - .byte $0D,$20,$78,$01,$B1,$AC,$AA,$20,$78,$01,$B1,$AC,$D0,$E5,$91,$AE - .byte $20,$7F,$01,$20,$78,$01,$D0,$CD,$A9,$37,$85,$01,$58,$4C,$B0,$43 - .byte $E6,$AC,$D0,$02,$E6,$AD,$60,$E6,$AE,$D0,$02,$E6,$AF,$60,$78,$A9 - .byte $0A,$85,$FB,$A9,$19,$85,$FC,$A9,$00,$8D,$18,$D4,$A0,$00,$B1,$FB - .byte $85,$FD,$C8,$B1,$FB,$85,$FE,$C8,$18,$D8,$A5,$FB,$65,$FD,$85,$02 - .byte $A5,$FC,$65,$FE,$85,$03,$A2,$08,$B1,$FB,$2A,$48,$B0,$06,$20,$80 - .byte $10,$4C,$3C,$10,$20,$6B,$10,$CF,$03,$EA,$D8,$38,$A5,$FB,$E5,$02 - .byte $A5,$FC,$E5,$03,$B0,$1B,$20,$8B,$10,$68,$CA,$E0,$00,$D0,$0D,$A9 - .byte $FF,$C5,$FB,$D0,$02,$E6,$FC,$E6,$FB,$4C,$28,$10,$EA,$EA,$4C,$2C - .byte $10,$A9,$00,$8D,$18,$D4,$68,$58,$60,$A9,$0F,$8D,$18,$D4,$CF,$0F - .byte $EA,$60,$A9,$00,$8D,$18,$D4,$20,$8B,$10,$60,$EA,$60,$CF,$03,$EA - .byte $60,$EA,$94,$01,$44,$32,$20,$9B,$01,$AD,$66,$B6,$B0,$57,$71,$89 - .byte $2A,$FD,$4C,$54,$73,$B8,$CE,$41,$3F,$00,$8F,$F0,$1F,$E0,$1F,$FC - .byte $07,$F8,$07,$FE,$03,$FE,$84,$EA,$15,$E8,$67,$B8,$39,$8E,$F5,$1C - .byte $E2,$1F,$E0,$E3,$1E,$E1,$1E,$E7,$19,$C6,$E2,$79,$8F,$E1,$F8,$DE - .byte $66,$31,$CC,$73,$0E,$E3,$FC,$67,$1D,$E1,$3E,$63,$C1,$FC,$77,$19 - .byte $C7,$71,$CE,$0F,$83,$D8,$47,$1D,$C3,$BC,$0F,$A1,$CC,$33,$C7,$78 - .byte $CE,$07,$D0,$EE,$33,$8E,$E3,$3C,$9F,$47,$31,$9E,$73,$C6,$78,$1F - .byte $03,$9C,$67,$8E,$F1,$9E,$07,$81,$D8,$CF,$01,$CF,$19,$C6,$78,$1F - .byte $06,$E3,$1E,$B3,$CC,$78,$0F,$C0,$38,$C7,$84,$79,$06,$1F,$E0,$38 - .byte $C3,$8E,$3C,$70,$0F,$38,$F1,$C1,$C3,$87,$BC,$00,$0E,$33,$9E,$3C - .byte $71,$F1,$E6,$18,$E3,$8E,$0C,$38,$E3,$88,$00,$1C,$71,$E1,$81,$E7 - .byte $CF,$01,$CF,$18,$00,$1C,$73,$C0,$0F,$1E,$78,$C0,$63,$89,$CE,$0C - .byte $38,$73,$F0,$43,$00,$F1,$9C,$40,$20,$F7,$87,$98,$61,$9C,$21,$DC - .byte $33,$8C,$73,$08,$C3,$38,$E7,$09,$DE,$33,$CE,$7B,$98,$66,$19,$9C - .byte $C6,$0D,$82,$77,$33,$C8,$8E,$61,$19,$CC,$73,$36,$09,$CE,$73,$D8 - .byte $86,$73,$19,$98,$CC,$CC,$A2,$77,$33,$99,$88,$CC,$4E,$67,$31,$99 - .byte $B4,$4E,$F3,$34,$CC,$06,$73,$13,$C2,$66,$13,$71,$BB,$D9,$86,$E6 - .byte $67,$39,$86,$62,$18,$80,$DC,$A7,$79,$98,$CC,$E6,$73,$31,$19,$CC - .byte $C6,$37,$53,$B9,$D8,$66,$39,$80,$60,$08,$00,$13,$28,$57,$20,$80 - .byte $BF,$28,$02,$00,$14,$90,$56,$8A,$24,$CB,$6E,$F4,$A4,$45,$12,$94 - .byte $D4,$90,$A4,$84,$14,$D2,$11,$56,$D0,$92,$E5,$4A,$B6,$4C,$4A,$53 - .byte $48,$4A,$96,$D0,$10,$92,$5A,$54,$AD,$90,$80,$00,$49,$68,$29,$4A - .byte $13,$49,$02,$02,$94,$62,$08,$4A,$90,$00,$52,$9A,$92,$10,$94,$00 - .byte $04,$09,$10,$84,$11,$E4,$06,$81,$FF,$BC,$0F,$FC,$19,$F8,$07,$FF - .byte $E0,$CF,$01,$CF,$C1,$9F,$98,$3C,$77,$06,$7C,$03,$E6,$3F,$E6,$1D - .byte $E3,$1E,$F1,$DE,$71,$8F,$10,$FF,$87,$F9,$C4,$79,$87,$78,$0F,$B8 - .byte $0E,$63,$BC,$07,$F8,$0E,$63,$BC,$4F,$31,$4E,$61,$DE,$33,$DC,$27 - .byte $88,$FE,$1B,$D8,$5F,$03,$F8,$FF,$82,$F8,$1F,$83,$FC,$17,$C0,$7F - .byte $0F,$FC,$37,$C0,$FE,$1D,$F8,$5F,$01,$F0,$FF,$80,$F0,$3F,$07,$F8 - .byte $2F,$00,$F8,$1F,$F0,$FF,$05,$F0,$7F,$E1,$FE,$0F,$C1,$FE,$17,$E0 - .byte $FC,$3F,$C2,$BC,$07,$87,$FC,$1B,$E1,$FE,$0F,$F0,$7F,$83,$F8,$3E - .byte $03,$E0,$FE,$1F,$87,$F8,$38,$67,$83,$DE,$1E,$0F,$F0,$7F,$C1,$F0 - .byte $7F,$03,$F8,$1F,$1F,$81,$FE,$0E,$0F,$81,$FE,$00,$C7,$C0,$FF,$80 - .byte $78,$FC,$1F,$FC,$07,$FF,$81,$E1,$60,$FF,$C0,$FC,$10,$7F,$E0,$3F - .byte $80,$3F,$C0,$0F,$FC,$07,$FC,$00,$FF,$80,$FF,$00,$0F,$C0,$7F,$80 - .byte $63,$E0,$7F,$80,$3C,$E0,$7F,$C0,$00,$F8,$0F,$F0,$0F,$8F,$03,$FC - .byte $03,$FF,$01,$FC,$01,$FF,$03,$FE,$01,$FE,$01,$FF,$80,$7F,$C0,$7F - .byte $F0,$07,$F8,$0F,$F8,$00,$FC,$0F,$FC,$00,$7E,$07,$FC,$00,$3F,$01 - .byte $FF,$80,$07,$F0,$1F,$F8,$00,$3F,$03,$FC,$00,$0F,$C1,$FF,$80,$01 - .byte $F0,$7F,$F0,$00,$1F,$86,$67,$E0,$00,$1F,$1F,$03,$E0,$00,$07,$02 - .byte $00,$E0,$BF,$03,$06,$BF,$19,$E0,$BF,$05,$18,$BF,$54,$08,$BF,$22 - .byte $04,$76,$B6,$16,$E3,$69,$48,$4F,$5B,$0C,$C8,$30,$AA,$FE,$80,$0F - .byte $FB,$84,$33,$8C,$FC,$00,$3F,$C0,$7F,$80,$FF,$FC,$03,$FC,$C7,$FC - .byte $C3,$BC,$77,$80,$7B,$C3,$7C,$07,$09,$E7,$E1,$3E,$03,$E0,$7E,$1F - .byte $C3,$E2,$3C,$03,$E0,$3E,$0F,$E0,$FC,$0F,$C1,$FC,$3F,$C3,$F0,$7C - .byte $1F,$C3,$E0,$7C,$07,$C2,$F8,$7F,$87,$C0,$7C,$39,$F0,$FC,$1F,$A1 - .byte $E0,$FE,$07,$C1,$F0,$FD,$0F,$07,$F0,$7C,$0F,$07,$F0,$7C,$07,$E0 - .byte $F8,$1F,$0F,$D0,$F8,$7F,$87,$C0,$F8,$7C,$0F,$8F,$F0,$F8,$0F,$0F - .byte $40,$F8,$3F,$C3,$E0,$1E,$0F,$40,$F8,$7F,$87,$80,$78,$7A,$07,$87 - .byte $F8,$7C,$07,$C3,$E8,$1F,$0F,$F8,$7C,$03,$F0,$7D,$07,$C3,$FC,$1E - .byte $03,$FC,$3E,$03,$C3,$FC,$1F,$81,$E7,$07,$C8,$3C,$31,$F0,$1F,$83 - .byte $F7,$07,$E8,$7C,$E3,$CC,$3E,$03,$C7,$0E,$70,$F3,$C3,$8E,$1E,$78 - .byte $70,$7C,$52,$F8,$43,$C7,$0E,$38,$70,$40,$73,$81,$CC,$3F,$18,$70 - .byte $00,$7F,$83,$70,$00,$03,$FF,$FE,$0C,$00,$21,$FF,$01,$80,$00,$39 - .byte $F0,$06,$00,$00,$FF,$E0,$1C,$00,$03,$CF,$01,$CF,$FC,$1C,$08,$01 - .byte $FF,$1E,$06,$30,$40,$9F,$18,$60,$00,$00,$3F,$F0,$07,$07,$00,$3F - .byte $FF,$80,$00,$10,$03,$FE,$30,$0C,$00,$00,$FC,$70,$BF,$03,$07,$FF - .byte $80,$38,$00,$00,$3F,$F0,$BF,$03,$03,$1E,$00,$38,$40,$04,$F1,$C0 - .byte $BF,$06,$06,$00,$00,$0F,$18,$BF,$06,$03,$80,$00,$1F,$BF,$08,$06 - .byte $00,$00,$1E,$20,$BF,$04,$08,$60,$00,$C0,$00,$01,$F1,$E0,$BF,$05 - .byte $80,$00,$E0,$00,$03,$E0,$BF,$07,$01,$80,$00,$01,$F0,$BF,$07,$0A - .byte $80,$00,$07,$80,$BF,$08,$30,$00,$00,$60,$BF,$07,$01,$80,$00,$01 - .byte $FE,$BF,$08,$20,$00,$00,$F8,$BF,$08,$60,$00,$00,$3F,$80,$BF,$07 - .byte $10,$00,$00,$78,$BF,$0B,$38,$BF,$71,$4C,$63,$8E,$F1,$82,$1C,$72 - .byte $F0,$9C,$F0,$1E,$21,$FF,$18,$7F,$80,$7C,$87,$BC,$E0,$78,$C3,$EF - .byte $0E,$F8,$23,$E3,$0F,$30,$F7,$86,$38,$73,$C2,$1E,$31,$F1,$8F,$B8 - .byte $7C,$E3,$C7,$3C,$1F,$F8,$7F,$E1,$FF,$07,$FC,$18,$78,$F8,$C1,$E1 - .byte $FF,$87,$FE,$1F,$8C,$1F,$38,$3F,$0F,$0E,$1F,$07,$DF,$07,$C7,$83 - .byte $C7,$83,$07,$EF,$00,$1F,$07,$8F,$C1,$C1,$F8,$38,$0F,$83,$1E,$00 - .byte $E1,$E0,$70,$7E,$1C,$0F,$06,$03,$C0,$00,$00,$38,$7C,$00,$0F,$C7 - .byte $C0,$F8,$00,$07,$06,$07,$00,$C6,$03,$E0,$60,$78,$78,$18,$1C,$1E - .byte $06,$03,$E0,$00,$7F,$FC,$07,$0F,$07,$87,$81,$FF,$00,$43,$E0,$07 - .byte $E7,$C0,$07,$E1,$83,$F3,$C0,$FF,$E0,$F9,$F8,$01,$F0,$43,$F0,$83 - .byte $E3,$07,$DF,$81,$FF,$80,$1E,$00,$7F,$F0,$71,$F0,$01,$E3,$C1,$87 - .byte $FF,$07,$0C,$1E,$78,$70,$E3,$C3,$07,$06,$1C,$F0,$1E,$00,$0F,$FF - .byte $E0,$41,$E0,$C0,$00,$00,$F3,$E0,$F0,$83,$8F,$DC,$10,$E3,$C0,$1E - .byte $08,$7F,$E0,$3C,$00,$27,$EF,$81,$06,$0C,$30,$70,$04,$DF,$03,$04 - .byte $3D,$F1,$87,$3C,$41,$C7,$08,$3B,$E7,$0C,$70,$C7,$DE,$18,$F3,$84 - .byte $79,$87,$70,$CF,$01,$CF,$78,$07,$88,$7F,$88,$7B,$86,$3E,$E1,$9F - .byte $80,$7F,$E0,$03,$88,$77,$CC,$77,$80,$7F,$80,$7F,$01,$FE,$30,$39 - .byte $87,$7E,$C3,$1F,$E0,$1F,$E0,$1F,$E0,$1F,$C4,$0C,$C3,$3B,$C4,$7F - .byte $90,$0F,$61,$09,$FF,$01,$9C,$63,$0C,$F7,$08,$E7,$98,$87,$7F,$00 - .byte $7F,$80,$03,$30,$0E,$F7,$11,$FE,$20,$0F,$F0,$00,$FF,$C0,$1E,$60 - .byte $0D,$0A,$FF,$11,$DF,$60,$19,$CC,$63,$BC,$E6,$11,$9F,$F1,$00,$77 - .byte $80,$03,$C0,$00,$FE,$00,$66,$11,$DF,$73,$0C,$EF,$90,$08,$C6,$3B - .byte $C0,$03,$98,$33,$8F,$30,$46,$1C,$E3,$98,$03,$B7,$20,$80,$1E,$20 - .byte $8C,$73,$00,$0C,$00,$15,$EA,$AA,$02,$BE,$80,$83,$7D,$CA,$14,$4A - .byte $A5,$E9,$55,$2B,$42,$54,$AD,$4A,$52,$69,$56,$54,$AB,$40,$AB,$75 - .byte $6A,$EE,$F8,$AA,$02,$02,$A0,$95,$14,$08,$9E,$86,$A4,$40,$55,$5D - .byte $41,$5B,$5F,$CA,$6A,$C9,$6A,$93,$5B,$56,$49,$F4,$54,$9B,$64,$B6 - .byte $DB,$CB,$6B,$2E,$A6,$DB,$AA,$5A,$BA,$6A,$25,$2C,$37,$6A,$52,$D9 - .byte $6B,$45,$16,$6A,$5B,$6A,$D5,$2B,$D4,$AA,$51,$A5,$65,$52,$52,$A9 - .byte $6C,$AD,$A9,$12,$C4,$25,$52,$53,$6A,$95,$25,$42,$56,$00,$22,$9C - .byte $00,$02,$51,$83,$E0,$0F,$FE,$00,$FE,$00,$FF,$E0,$0E,$00,$FF,$80 - .byte $3F,$F0,$0F,$C0,$3F,$F0,$01,$C2,$3F,$E1,$1F,$F0,$EF,$80,$FF,$18 - .byte $61,$C2,$3C,$E1,$FF,$04,$7D,$C3,$9E,$10,$F7,$00,$E1,$1E,$71,$EF - .byte $08,$F3,$0F,$70,$C7,$F8,$0F,$08,$F9,$C3,$FE,$08,$FC,$03,$FC,$01 - .byte $FE,$07,$08,$7F,$C3,$FE,$01,$F0,$0F,$F0,$7F,$E0,$3C,$00,$FC,$C3 - .byte $FF,$02,$1C,$08,$00,$3F,$C0,$60,$C0,$83,$8F,$18,$7F,$00,$38,$60 - .byte $00,$01,$C0,$0F,$00,$03,$80,$30,$41,$8C,$01,$C0,$01,$C0,$1C,$C0 - .byte $1C,$00,$8E,$00,$71,$07,$80,$00,$00,$0E,$00,$0E,$00,$70,$00,$00 - .byte $02,$00,$43,$00,$01,$08,$08,$00,$06,$08,$03,$00,$00,$20,$03,$C0 - .byte $18,$BF,$05,$30,$04,$00,$00,$80,$00,$00,$28,$20,$BF,$0A,$40,$BF - .byte $14,$03,$80,$00,$39,$E0,$BF,$05,$03,$BF,$04,$38,$00,$07,$FC,$38 - .byte $00,$00,$03,$80,$BF,$05,$38,$00,$00,$FF,$E1,$BF,$03,$40,$BF,$06 - .byte $70,$00,$07,$8F,$1E,$03,$80,$BF,$09,$70,$00,$06,$1C,$30,$BF,$0B - .byte $08,$BF,$08,$31,$80,$06,$BF,$09,$40,$BF,$0E,$03,$8C,$08,$38,$F1 - .byte $C0,$BF,$06,$80,$BF,$09,$06,$30,$81,$00,$18,$BF,$05,$06,$0C,$99 + * = $1000 @@ -1547,184 +1301,14 @@ l_4246 * = $4260 -l_4260 - LDY #$00 ; (4260) Load Y with #$00 (0 / 00000000) - LDX #$00 ; (4262) Set X to #$00 (0 / 00000000) - SEC ; (4264) Set Carry Flag - LDA $0346 ; (4265) Load A with $0346 - BNE l_427F ; (4268) Branch to $427F if Not Equal - LDA KeyJoy2 ; (426A) Load A with $DC00 - NOP ; (426D) No operation - LSR A ; (426E) Logical Shift Right Accumulator - BCS l_4272 ; (426F) Branch if Carry Set $4272 - DEY ; (4271) Decrement Y Register - -l_4272 - LSR A ; (4272) Logical Shift Right Accumulator - BCS l_4276 ; (4273) Branch if Carry Set $4276 - INY ; (4275) Increment Y Register - -l_4276 - LSR A ; (4276) Logical Shift Right Accumulator - BCS l_427A ; (4277) Branch if Carry Set $427A - DEX ; (4279) Decrement X - -l_427A - LSR A ; (427A) Logical Shift Right Accumulator - BCS l_427E ; (427B) Branch if Carry Set $427E - INX ; (427D) Increment X - -l_427E - LSR A ; (427E) Logical Shift Right Accumulator - -l_427F - STX $FE ; (427F) Store X to $FE - STY $FD ; (4281) Store Y Register $FD - LDX #$00 ; (4283) Set X to #$00 (0 / 00000000) - BCS l_4288 ; (4285) Branch if Carry Set $4288 - INX ; (4287) Increment X - -l_4288 - STX $02 ; (4288) Store X to $02 - RTS ; (428A) Return from Subroutine + .include "joystick.asm" * = $428B .byte $FF,$FF,$FF,$FF,$FF * = $4290 -l_4290 - LDX #$0F ; (4290) Set X to #$0F (15 / 00001111) - -l_4292 - LDA MaydayXMap,X ; (4292) Load A with $6900,X - SEC ; (4295) Set Carry Flag - SBC $0338 ; (4296) Subtract with Carry $0338 - STA $AD ; (4299) Store A to $AD - LDA $6940,X ; (429B) Load A with $6940,X - SBC $0339 ; (429E) Subtract with Carry $0339 - STA $AF ; (42A1) Store A to $AF - BEQ l_42AF ; (42A3) Branch to $42AF if Equal - CMP #$01 ; (42A5) Subtract #$01 from A (1 / 00000001) - BNE l_431E ; (42A7) Branch to $431E if Not Equal - LDA $AD ; (42A9) Load A with $AD - CMP #$40 ; (42AB) Subtract #$40 from A (64 / 01000000) - BCS l_431E ; (42AD) Branch if Carry Set $431E - -l_42AF - LDA MaydayYMap,X ; (42AF) Load A with $6980,X - SEC ; (42B2) Set Carry Flag - SBC $033A ; (42B3) Subtract with Carry $033A - STA $FD ; (42B6) Store A to $FD - LDA $69C0,X ; (42B8) Load A with $69C0,X - SBC $033B ; (42BB) Subtract with Carry $033B - BNE l_431E ; (42BE) Branch to $431E if Not Equal - LDA $FD ; (42C0) Load A with $FD - CMP #$70 ; (42C2) Subtract #$70 from A (112 / 01110000) - BCS l_431E ; (42C4) Branch if Carry Set $431E - LDA $6910,X ; (42C6) Load A with $6910,X - TAY ; (42C9) Transfer A to Y - BMI l_42E7 ; (42CA) Branch to $42E7 if minus - AND #$40 ; (42CC) Logical AND with Accumulator and #$40 (64 / 01000000) - BNE l_4317 ; (42CE) Branch to $4317 if Not Equal - TYA ; (42D0) Transfer Y to A - AND #$07 ; (42D1) Logical AND with Accumulator and #$07 (7 / 00000111) - TAY ; (42D3) Transfer A to Y - LDA $03C8,Y ; (42D4) Load A with $03C8,Y - AND SpriteEnableRegister ; (42D7) Logical AND with Accumulator $D015 - BEQ l_42E7 ; (42DA) Branch to $42E7 if Equal - LDA $6910,X ; (42DC) Load A with $6910,X - ORA #$40 ; (42DF) Logical OR with Accumulator and #$40 (64 / 01000000) - STA $6910,X ; (42E1) Store A to $6910,X - JMP l_4317 ; (42E4) Jump to $4317 - -l_42E7 - LDA $6910,X ; (42E7) Load A with $6910,X - ORA #$80 ; (42EA) Logical OR with Accumulator and #$80 (128 / 10000000) - STA $6910,X ; (42EC) Store A to $6910,X - AND #$07 ; (42EF) Logical AND with Accumulator and #$07 (7 / 00000111) - STA $02 ; (42F1) Store A to $02 - INC $02 ; (42F3) Increment Memory $02 - LDA MaydaySpritePointer,X ; (42F5) Load A with $6920,X - STA $AE ; (42F8) Store A to $AE - TXA ; (42FA) Transfer X to A - PHA ; (42FB) Push Accumulator to Stack - LDA $FD ; (42FC) Load A with $FD - CLC ; (42FE) Clear Carry Flag - ADC #$90 ; (42FF) Add with Carry with #$90 (144 / 10010000) - TAY ; (4301) Transfer A to Y - CLC ; (4302) Clear Carry Flag - LDA $AD ; (4303) Load A with $AD - ADC #$07 ; (4305) Add with Carry with #$07 (7 / 00000111) - TAX ; (4307) Transfer A to X - LDA $AF ; (4308) Load A with $AF - ADC #$00 ; (430A) Add with Carry with #$00 (0 / 00000000) - CLC ; (430C) Clear Carry Flag - BEQ l_4310 ; (430D) Branch to $4310 if Equal - SEC ; (430F) Set Carry Flag - -l_4310 - LDA $02 ; (4310) Load A with $02 - JSR l_4200 ; (4312) Jump to Subroutine at $4200 - PLA ; (4315) Pull Accumulator from Stack - TAX ; (4316) Transfer A to X - -l_4317 - DEX ; (4317) Decrement X - BMI l_431D ; (4318) Branch to $431D if minus - JMP l_4292 ; (431A) Jump to $4292 - -l_431D - RTS ; (431D) Return from Subroutine - -l_431E - LDA $6910,X ; (431E) Load A with $6910,X - TAY ; (4321) Transfer A to Y - BMI l_4357 ; (4322) Branch to $4357 if minus - -l_4324 - AND #$10 ; (4324) Logical AND with Accumulator and #$10 (16 / 00010000) - BNE l_4330 ; (4326) Branch to $4330 if Not Equal - JMP l_4375 ; (4328) Jump to $4375 - -* = $432B - .byte $EA,$EA,$EA,$EA,$EA - -* = $4330 - -l_4330 - LDA $6800,X ; (4330) Load A with $6800,X - STA MaydayXMap,X ; (4333) Store A to $6900,X - LDA $6840,X ; (4336) Load A with $6840,X - STA $6940,X ; (4339) Store A to $6940,X - LDA $6880,X ; (433C) Load A with $6880,X - STA MaydayYMap,X ; (433F) Store A to $6980,X - LDA $68C0,X ; (4342) Load A with $68C0,X - STA $69C0,X ; (4345) Store A to $69C0,X - LDA $6820,X ; (4348) Load A with $6820,X - STA MaydaySpritePointer,X ; (434B) Store A to $6920,X - LDA $6830,X ; (434E) Load A with $6830,X - STA MaydayDirection,X ; (4351) Store A to $6930,X - JMP l_4375 ; (4354) Jump to $4375 - -l_4357 - LDA $6910,X ; (4357) Load A with $6910,X - AND #$07 ; (435A) Logical AND with Accumulator and #$07 (7 / 00000111) - TAY ; (435C) Transfer A to Y - LDA $03C0,Y ; (435D) Load A with $03C0,Y - AND SpriteEnableRegister ; (4360) Logical AND with Accumulator $D015 - STA SpriteEnableRegister ; (4363) Store A to $D015 - LDA $03C0,Y ; (4366) Load A with $03C0,Y - AND SpriteMulticolor ; (4369) Logical AND with Accumulator $D01C - STA SpriteMulticolor ; (436C) Store A to $D01C - LDA $6910,Y ; (436F) Load A with $6910,Y - JMP l_4324 ; (4372) Jump to $4324 - -l_4375 - LDA $6910,X ; (4375) Load A with $6910,X - AND #$07 ; (4378) Logical AND with Accumulator and #$07 (7 / 00000111) - STA $6910,X ; (437A) Store A to $6910,X - JMP l_4317 ; (437D) Jump to $4317 + .include "4290.asm" * = $4380 .byte $01,$FF,$15,$FF,$00,$00,$19,$20,$21,$5D,$00,$05,$59,$79,$00,$00 @@ -1873,58 +1457,7 @@ l_4480 * = $4500 -l_4500 - LDA $0340 ; (4500) Load A with $0340 - LSR A ; (4503) Logical Shift Right Accumulator - AND #$03 ; (4504) Logical AND with Accumulator and #$03 (3 / 00000011) - CLC ; (4506) Clear Carry Flag - ADC #$00 ; (4507) Add with Carry with #$00 (0 / 00000000) - PHA ; (4509) Push Accumulator to Stack - LDY #$07 ; (450A) Load Y with #$07 (7 / 00000111) - LDA #$04 ; (450C) Set A to #$04 (4 / 00000100) - -l_450E - STA $0576,Y ; (450E) Set $0576,Y to A - DEY ; (4511) Decrement Y Register - BPL l_450E ; (4512) Branch to $450E if positive - LDA $0340 ; (4514) Load A with $0340 - CLC ; (4517) Clear Carry Flag - LSR A ; (4518) Logical Shift Right Accumulator - LSR A ; (4519) Logical Shift Right Accumulator - LSR A ; (451A) Logical Shift Right Accumulator - STA $02 ; (451B) Store A to $02 - LDA #$07 ; (451D) Set A to #$07 (7 / 00000111) - SEC ; (451F) Set Carry Flag - SBC $02 ; (4520) Subtract with Carry $02 - TAY ; (4522) Transfer A to Y - PLA ; (4523) Pull Accumulator from Stack - STA $0576,Y ; (4524) Set $0576,Y to A - JMP l_4530 ; (4527) Jump to $4530 - -* = $452A - .byte $EA,$EA,$EA,$EA,$EA,$EA - -* = $4530 - -l_4530 - LDA DamageCount ; (4530) Load A with $03A1 - LSR A ; (4533) Logical Shift Right Accumulator - LSR A ; (4534) Logical Shift Right Accumulator - LSR A ; (4535) Logical Shift Right Accumulator - TAY ; (4536) Transfer A to Y - LDA DamageCount ; (4537) Load A with $03A1 - AND #$07 ; (453A) Logical AND with Accumulator and #$07 (7 / 00000111) - CLC ; (453C) Clear Carry Flag - ADC #$C4 ; (453D) Add with Carry with #$C4 (196 / 11000100) - TAX ; (453F) Transfer A to X - LDA $4550,Y ; (4540) Load A with $4550,Y - STA $AE ; (4543) Store A to $AE - LDA $4558,Y ; (4545) Load A with $4558,Y - STA $AF ; (4548) Store A to $AF - LDY #$00 ; (454A) Load Y with #$00 (0 / 00000000) - TXA ; (454C) Transfer X to A - STA ($AE),Y ; (454D) Store Accumulator ($AE),Y - RTS ; (454F) Return from Subroutine + .include "UpdateScrDamageSpeedo.asm" * = $4550 .byte $15,$ED,$C5,$9D,$75,$00,$00,$00,$05,$04,$04,$04,$04,$00,$00,$00 @@ -1937,7 +1470,7 @@ l_4570 AND #$40 ; (4573) Logical AND with Accumulator and #$40 (64 / 01000000) BNE l_45AC ; (4575) Branch to $45AC if Not Equal CLC ; (4577) Clear Carry Flag - LDA $0338 ; (4578) Load A with $0338 + LDA var_BondCarXPosLow ; (4578) Load A with $0338 ADC #$AA ; (457B) Add with Carry with #$AA (170 / 10101010) STA $690F ; (457D) Store A to $690F LDA $0339 ; (4580) Load A with $0339 @@ -1977,7 +1510,7 @@ l_4600 RTS ; (4605) Return from Subroutine l_4606 - LDY CarFacingDirection ; (4606) Load Y with Data from $03A0 + LDY CarFacingDirection ; (4606) Load Y with Data from $03A0 LDA $6BD0,Y ; (4609) Load A with $6BD0,Y BEQ l_4639 ; (460C) Branch to $4639 if Equal LDA $0335 ; (460E) Load A with $0335 @@ -1985,19 +1518,19 @@ l_4606 BMI l_4627 ; (4613) Branch to $4627 if minus CLC ; (4615) Clear Carry Flag LDA #$7E ; (4616) Set A to #$7E (126 / 01111110) - ADC $033C ; (4618) Add with Carry $033C + ADC V_MapXposition ; (4618) Add with Carry $033C STA $AE ; (461B) Store A to $AE - LDA $033D ; (461D) Load A with $033D + LDA V_MapYposition ; (461D) Load A with $033D ADC #$00 ; (4620) Add with Carry with #$00 (0 / 00000000) STA $AF ; (4622) Store A to $AF JMP l_466E ; (4624) Jump to $466E l_4627 SEC ; (4627) Set Carry Flag - LDA $033C ; (4628) Load A with $033C + LDA V_MapXposition ; (4628) Load A with $033C SBC #$7E ; (462B) Subtract with Carry #$7E (126 / 01111110) STA $AE ; (462D) Store A to $AE - LDA $033D ; (462F) Load A with $033D + LDA V_MapYposition ; (462F) Load A with $033D SBC #$00 ; (4632) Subtract with Carry #$00 (0 / 00000000) STA $AF ; (4634) Store A to $AF JMP l_466E ; (4636) Jump to $466E @@ -2008,27 +1541,27 @@ l_4639 BMI l_4652 ; (463E) Branch to $4652 if minus CLC ; (4640) Clear Carry Flag LDA #$01 ; (4641) Set A to #$01 (1 / 00000001) - ADC $033C ; (4643) Add with Carry $033C + ADC V_MapXposition ; (4643) Add with Carry $033C STA $AE ; (4646) Store A to $AE - LDA $033D ; (4648) Load A with $033D + LDA V_MapYposition ; (4648) Load A with $033D ADC #$00 ; (464B) Add with Carry with #$00 (0 / 00000000) STA $AF ; (464D) Store A to $AF JMP l_466E ; (464F) Jump to $466E l_4652 SEC ; (4652) Set Carry Flag - LDA $033C ; (4653) Load A with $033C + LDA V_MapXposition ; (4653) Load A with $033C SBC #$01 ; (4656) Subtract with Carry #$01 (1 / 00000001) STA $AE ; (4658) Store A to $AE - LDA $033D ; (465A) Load A with $033D + LDA V_MapYposition ; (465A) Load A with $033D SBC #$00 ; (465D) Subtract with Carry #$00 (0 / 00000000) STA $AF ; (465F) Store A to $AF JMP l_466E ; (4661) Jump to $466E l_4664 - LDA $033C ; (4664) Load A with $033C + LDA V_MapXposition ; (4664) Load A with $033C STA $AE ; (4667) Store A to $AE - LDA $033D ; (4669) Load A with $033D + LDA V_MapYposition ; (4669) Load A with $033D STA $AF ; (466C) Store A to $AF l_466E @@ -2274,7 +1807,7 @@ l_4804 LDA $0D31,X ; (480A) Load A with $0D31,X STA $0431,X ; (480D) Store A to $0431,X LDA $0D59,X ; (4810) Load A with $0D59,X - STA $0459,X ; (4813) Store A to $0459,X + STA $0459,X ; (4813) Store A to $0459,X$6980,X LDA $0D81,X ; (4816) Load A with $0D81,X STA $0481,X ; (4819) Store A to $0481,X LDA $0DA9,X ; (481C) Load A with $0DA9,X @@ -2321,13 +1854,13 @@ l_4850 JMP l_4883 ; (4879) Jump to $4883 l_487C - LDA $0338 ; (487C) Load A with $0338 + LDA var_BondCarXPosLow ; (487C) Load A with $0338 CMP $EA ; (487F) Subtract $EA from A BCC l_4895 ; (4881) Branch to $4895 if Carry Clear l_4883 SEC ; (4883) Set Carry Flag - LDA $0338 ; (4884) Load A with $0338 + LDA var_BondCarXPosLow ; (4884) Load A with $0338 SBC $EA ; (4887) Subtract with Carry $EA STA $AE ; (4889) Store A to $AE LDA $0339 ; (488B) Load A with $0339 @@ -2338,7 +1871,7 @@ l_4883 l_4895 SEC ; (4895) Set Carry Flag LDA $EA ; (4896) Load A with $EA - SBC $0338 ; (4898) Subtract with Carry $0338 + SBC var_BondCarXPosLow ; (4898) Subtract with Carry $0338 STA $AE ; (489B) Store A to $AE LDA $EB ; (489D) Load A with $EB SBC $0339 ; (489F) Subtract with Carry $0339 @@ -2749,232 +2282,8 @@ l_4BDB .byte $FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF,$00,$FF * = $4C00 + .include "4c00.asm" -l_4C00 - LDX #$0F ; (4C00) Set X to #$0F (15 / 00001111) - STX $AC ; (4C02) Store X to $AC - JMP l_4CB2 ; (4C04) Jump to $4CB2 - -l_4C07 - LDX $AC ; (4C07) Load X with $AC - LDA $6910,X ; (4C09) Load A with $6910,X - AND #$80 ; (4C0C) Logical AND with Accumulator and #$80 (128 / 10000000) - BNE l_4C13 ; (4C0E) Branch to $4C13 if Not Equal - JMP l_4D0C ; (4C10) Jump to $4D0C - -l_4C13 - LDA $6910,X ; (4C13) Load A with $6910,X - AND #$03 ; (4C16) Logical AND with Accumulator and #$03 (3 / 00000011) - TAY ; (4C18) Transfer A to Y - LDA $03C8,Y ; (4C19) Load A with $03C8,Y - AND $02FC ; (4C1C) Logical AND with Accumulator $02FC - BEQ l_4C24 ; (4C1F) Branch to $4C24 if Equal - JMP l_4D74 ; (4C21) Jump to $4D74 - -l_4C24 - LDA $6910,X ; (4C24) Load A with $6910,X - AND #$20 ; (4C27) Logical AND with Accumulator and #$20 (32 / 00100000) - BEQ l_4C2E ; (4C29) Branch to $4C2E if Equal - JMP l_4D33 ; (4C2B) Jump to $4D33 - -l_4C2E - LDA $6910,X ; (4C2E) Load A with $6910,X - AND #$03 ; (4C31) Logical AND with Accumulator and #$03 (3 / 00000011) - TAY ; (4C33) Transfer A to Y - LDA $03A2 ; (4C34) Load A with $03A2 - CMP $69E0,X ; (4C37) Subtract $69E0,X from A - BCS l_4C3F ; (4C3A) Branch if Carry Set $4C3F - JMP l_4D0C ; (4C3C) Jump to $4D0C - -l_4C3F - LDA CarCollision ; (4C3F) Load A with $02FD - AND $03C8,Y ; (4C42) Logical AND with Accumulator $03C8,Y - BEQ l_4C4F ; (4C45) Branch to $4C4F if Equal - LDA #$C0 ; (4C47) Set A to #$C0 (192 / 11000000) - STA $6950,X ; (4C49) Store A to $6950,X - JMP l_4D0C ; (4C4C) Jump to $4D0C - -l_4C4F - DEC $6950,X ; (4C4F) Decrement $6950,X - LDA $6950,X ; (4C52) Load A with $6950,X - BEQ l_4C5A ; (4C55) Branch to $4C5A if Equal - JMP l_4D0C ; (4C57) Jump to $4D0C - -l_4C5A - LDA $6960,X ; (4C5A) Load A with $6960,X - STA $6950,X ; (4C5D) Store A to $6950,X - LDA MaydayYMap,X ; (4C60) Load A with $6980,X - LDY $69C0,X ; (4C63) Load Index Register Y $69C0,X - LDX #$08 ; (4C66) Set X to #$08 (8 / 00001000) - JSR l_4AB0 ; (4C68) Jump to Subroutine at $4AB0 - LDA $FD ; (4C6B) Load A with $FD - LDX #$7E ; (4C6D) Set X to #$7E (126 / 01111110) - JSR l_4D17 ; (4C6F) Jump to Subroutine at $4D17 - STA $FC ; (4C72) Store A to $FC - STX $FB ; (4C74) Store X to $FB - LDX $AC ; (4C76) Load X with $AC - LDA MaydayXMap,X ; (4C78) Load A with $6900,X - LDY $6940,X ; (4C7B) Load Index Register Y $6940,X - LDX #$08 ; (4C7E) Set X to #$08 (8 / 00001000) - JSR l_4AB0 ; (4C80) Jump to Subroutine at $4AB0 - CLC ; (4C83) Clear Carry Flag - LDA $FB ; (4C84) Load A with $FB - ADC $FD ; (4C86) Add with Carry $FD - STA $FB ; (4C88) Store A to $FB - LDA $FC ; (4C8A) Load A with $FC - ADC #$00 ; (4C8C) Add with Carry with #$00 (0 / 00000000) - STA $FC ; (4C8E) Store A to $FC - CLC ; (4C90) Clear Carry Flag - LDA $FB ; (4C91) Load A with $FB - ADC #$72 ; (4C93) Add with Carry with #$72 (114 / 01110010) - STA $FB ; (4C95) Store A to $FB - LDA $FC ; (4C97) Load A with $FC - ADC #$93 ; (4C99) Add with Carry with #$93 (147 / 10010011) - STA $FC ; (4C9B) Store A to $FC - LDY #$00 ; (4C9D) Load Y with #$00 (0 / 00000000) - LDA ($FB),Y ; (4C9F) Load A with ($FB),Y - CMP #$12 ; (4CA1) Subtract #$12 from A (18 / 00010010) - BCC l_4CB0 ; (4CA3) Branch to $4CB0 if Carry Clear - CMP #$1A ; (4CA5) Subtract #$1A from A (26 / 00011010) - BCS l_4CB0 ; (4CA7) Branch if Carry Set $4CB0 - AND #$07 ; (4CA9) Logical AND with Accumulator and #$07 (7 / 00000111) - LDX $AC ; (4CAB) Load X with $AC - STA MaydayDirection,X ; (4CAD) Store A to $6930,X - -l_4CB0 - LDX $AC ; (4CB0) Load X with $AC - -l_4CB2 - LDA MaydayDirection,X ; (4CB2) Load A with $6930,X - TAY ; (4CB5) Transfer A to Y - LDA $69B0,Y ; (4CB6) Load A with $69B0,Y - BMI l_4CCE ; (4CB9) Branch to $4CCE if minus - BEQ l_4CDC ; (4CBB) Branch to $4CDC if Equal - CLC ; (4CBD) Clear Carry Flag - LDA MaydayXMap,X ; (4CBE) Load A with $6900,X - ADC #$01 ; (4CC1) Add with Carry with #$01 (1 / 00000001) - STA MaydayXMap,X ; (4CC3) Store A to $6900,X - BCC l_4CDC ; (4CC6) Branch to $4CDC if Carry Clear - INC $6940,X ; (4CC8) Increment Memory $6940,X - JMP l_4CDC ; (4CCB) Jump to $4CDC - -l_4CCE - SEC ; (4CCE) Set Carry Flag - LDA MaydayXMap,X ; (4CCF) Load A with $6900,X - SBC #$01 ; (4CD2) Subtract with Carry #$01 (1 / 00000001) - STA MaydayXMap,X ; (4CD4) Store A to $6900,X - BCS l_4CDC ; (4CD7) Branch if Carry Set $4CDC - DEC $6940,X ; (4CD9) Decrement $6940,X - -l_4CDC - LDA $69B8,Y ; (4CDC) Load A with $69B8,Y - BMI l_4CF4 ; (4CDF) Branch to $4CF4 if minus - BEQ l_4D02 ; (4CE1) Branch to $4D02 if Equal - CLC ; (4CE3) Clear Carry Flag - LDA MaydayYMap,X ; (4CE4) Load A with $6980,X - ADC #$01 ; (4CE7) Add with Carry with #$01 (1 / 00000001) - STA MaydayYMap,X ; (4CE9) Store A to $6980,X - BCC l_4D02 ; (4CEC) Branch to $4D02 if Carry Clear - INC $69C0,X ; (4CEE) Increment Memory $69C0,X - JMP l_4D02 ; (4CF1) Jump to $4D02 - -l_4CF4 - SEC ; (4CF4) Set Carry Flag - LDA MaydayYMap,X ; (4CF5) Load A with $6980,X - SBC #$01 ; (4CF8) Subtract with Carry #$01 (1 / 00000001) - STA MaydayYMap,X ; (4CFA) Store A to $6980,X - BCS l_4D02 ; (4CFD) Branch if Carry Set $4D02 - DEC $69C0,X ; (4CFF) Decrement $69C0,X - -l_4D02 - CPX #$0F ; (4D02) Subtract #$0F from X (15 / 00001111) - BEQ l_4D0C ; (4D04) Branch to $4D0C if Equal - LDA $69A0,Y ; (4D06) Load A with $69A0,Y - STA MaydaySpritePointer,X ; (4D09) Store A to $6920,X - -l_4D0C - LDX $AC ; (4D0C) Load X with $AC - DEX ; (4D0E) Decrement X - BEQ l_4D16 ; (4D0F) Branch to $4D16 if Equal - STX $AC ; (4D11) Store X to $AC - JMP l_4C07 ; (4D13) Jump to $4C07 - -l_4D16 - RTS ; (4D16) Return from Subroutine - -l_4D17 - STA $FE ; (4D17) Store A to $FE - LDA #$00 ; (4D19) Set A to #$00 (0 / 00000000) - STA $FD ; (4D1B) Store A to $FD - STX $02 ; (4D1D) Store X to $02 - LDX #$08 ; (4D1F) Set X to #$08 (8 / 00001000) - -l_4D21 - LSR $02 ; (4D21) Logical Shift Right $02 - BCC l_4D28 ; (4D23) Branch to $4D28 if Carry Clear - CLC ; (4D25) Clear Carry Flag - ADC $FE ; (4D26) Add with Carry $FE - -l_4D28 - ROR A ; (4D28) Rotate Right Accumulator - ROR $FD ; (4D29) Rotate Right $FD - DEX ; (4D2B) Decrement X - BNE l_4D21 ; (4D2C) Branch to $4D21 if Not Equal - STA $FE ; (4D2E) Store A to $FE - LDX $FD ; (4D30) Load X with $FD - RTS ; (4D32) Return from Subroutine - -l_4D33 - DEC $6990,X ; (4D33) Decrement $6990,X - BEQ l_4D3B ; (4D36) Branch to $4D3B if Equal - JMP l_4D0C ; (4D38) Jump to $4D0C - -l_4D3B - LDA #$18 ; (4D3B) Set A to #$18 (24 / 00011000) - STA $6990,X ; (4D3D) Store A to $6990,X - DEC $6970,X ; (4D40) Decrement $6970,X - BEQ l_4D53 ; (4D43) Branch to $4D53 if Equal - LDA $6970,X ; (4D45) Load A with $6970,X - AND #$01 ; (4D48) Logical AND with Accumulator and #$01 (1 / 00000001) - CLC ; (4D4A) Clear Carry Flag - ADC #$AD ; (4D4B) Add with Carry with #$AD (173 / 10101101) - STA MaydaySpritePointer,X ; (4D4D) Store A to $6920,X - JMP l_4D0C ; (4D50) Jump to $4D0C - -l_4D53 - LDA $6910,X ; (4D53) Load A with $6910,X - AND #$07 ; (4D56) Logical AND with Accumulator and #$07 (7 / 00000111) - TAY ; (4D58) Transfer A to Y - LDA $03C0,Y ; (4D59) Load A with $03C0,Y - AND SpriteEnableRegister ; (4D5C) Logical AND with Accumulator $D015 - STA SpriteEnableRegister ; (4D5F) Store A to $D015 - LDA $03C0,Y ; (4D62) Load A with $03C0,Y - AND SpriteMulticolor ; (4D65) Logical AND with Accumulator $D01C - STA SpriteMulticolor ; (4D68) Store A to $D01C - TYA ; (4D6B) Transfer Y to A - ORA #$50 ; (4D6C) Logical OR with Accumulator and #$50 (80 / 01010000) - STA $6910,X ; (4D6E) Store A to $6910,X - JMP l_4D0C ; (4D71) Jump to $4D0C - -l_4D74 - ORA SpriteMulticolor ; (4D74) Logical OR with Accumulator and $D01C - STA SpriteMulticolor ; (4D77) Store A to $D01C - LDA #$00 ; (4D7A) Set A to #$00 (0 / 00000000) - STA $02FC ; (4D7C) Store A to $02FC - LDA $6910,X ; (4D7F) Load A with $6910,X - ORA #$70 ; (4D82) Logical OR with Accumulator and #$70 (112 / 01110000) - STA $6910,X ; (4D84) Store A to $6910,X - LDA #$10 ; (4D87) Set A to #$10 (16 / 00010000) - STA $6970,X ; (4D89) Store A to $6970,X - JSR l_4428 ; (4D8C) Jump to Subroutine at $4428 - JMP l_4D0C ; (4D8F) Jump to $4D0C - -l_4D92 - JSR l_4C00 ; (4D92) Jump to Subroutine at $4C00 - LDA #$00 ; (4D95) Set A to #$00 (0 / 00000000) - STA CarCollision ; (4D97) Store A to $02FD - STA $02FC ; (4D9A) Store A to $02FC - RTS ; (4D9D) Return from Subroutine * = $4D9E .byte $04,$10,$1F,$FF,$00,$FF,$00,$FF,$00,$FF,$0F,$2F,$00,$FF,$0C,$FF @@ -2987,118 +2296,7 @@ l_4D92 * = $4E00 -l_4E00 - LDA $033C ; (4E00) Load A with $033C - STA $AE ; (4E03) Store A to $AE - LDA $033D ; (4E05) Load A with $033D - STA $AF ; (4E08) Store A to $AF - LDA $0335 ; (4E0A) Load A with $0335 - BEQ l_4E2E ; (4E0D) Branch to $4E2E if Equal - BMI l_4E21 ; (4E0F) Branch to $4E21 if minus - CLC ; (4E11) Clear Carry Flag - LDA #$7E ; (4E12) Set A to #$7E (126 / 01111110) - ADC $AE ; (4E14) Add with Carry $AE - STA $AE ; (4E16) Store A to $AE - LDA $AF ; (4E18) Load A with $AF - ADC #$00 ; (4E1A) Add with Carry with #$00 (0 / 00000000) - STA $AF ; (4E1C) Store A to $AF - JMP l_4E2E ; (4E1E) Jump to $4E2E - -l_4E21 - SEC ; (4E21) Set Carry Flag - LDA $AE ; (4E22) Load A with $AE - SBC #$7E ; (4E24) Subtract with Carry #$7E (126 / 01111110) - STA $AE ; (4E26) Store A to $AE - LDA $AF ; (4E28) Load A with $AF - SBC #$00 ; (4E2A) Subtract with Carry #$00 (0 / 00000000) - STA $AF ; (4E2C) Store A to $AF - -l_4E2E - LDA $0334 ; (4E2E) Load A with $0334 - BEQ l_4E52 ; (4E31) Branch to $4E52 if Equal - BMI l_4E45 ; (4E33) Branch to $4E45 if minus - CLC ; (4E35) Clear Carry Flag - LDA #$01 ; (4E36) Set A to #$01 (1 / 00000001) - ADC $AE ; (4E38) Add with Carry $AE - STA $AE ; (4E3A) Store A to $AE - LDA $AF ; (4E3C) Load A with $AF - ADC #$00 ; (4E3E) Add with Carry with #$00 (0 / 00000000) - STA $AF ; (4E40) Store A to $AF - JMP l_4E52 ; (4E42) Jump to $4E52 - -l_4E45 - SEC ; (4E45) Set Carry Flag - LDA $AE ; (4E46) Load A with $AE - SBC #$01 ; (4E48) Subtract with Carry #$01 (1 / 00000001) - STA $AE ; (4E4A) Store A to $AE - LDA $AF ; (4E4C) Load A with $AF - SBC #$00 ; (4E4E) Subtract with Carry #$00 (0 / 00000000) - STA $AF ; (4E50) Store A to $AF - -l_4E52 - CLC ; (4E52) Clear Carry Flag - LDA $AE ; (4E53) Load A with $AE - ADC #$08 ; (4E55) Add with Carry with #$08 (8 / 00001000) - STA $AE ; (4E57) Store A to $AE - LDA $AF ; (4E59) Load A with $AF - ADC #$03 ; (4E5B) Add with Carry with #$03 (3 / 00000011) - STA $AF ; (4E5D) Store A to $AF - SEC ; (4E5F) Set Carry Flag - LDA $AE ; (4E60) Load A with $AE - SBC $C9 ; (4E62) Subtract with Carry $C9 - TAX ; (4E64) Transfer A to X - LDA $AF ; (4E65) Load A with $AF - SBC $CA ; (4E67) Subtract with Carry $CA - STA $FE ; (4E69) Store A to $FE - LDY #$03 ; (4E6B) Load Y with #$03 (3 / 00000011) - -l_4E6D - LDA $FE ; (4E6D) Load A with $FE - CMP $4EC4,Y ; (4E6F) Compare Accumulator $4EC4,Y - BNE l_4E7A ; (4E72) Branch to $4E7A if Not Equal - TXA ; (4E74) Transfer X to A - CMP $4EC0,Y ; (4E75) Compare Accumulator $4EC0,Y - BEQ l_4E80 ; (4E78) Branch to $4E80 if Equal - -l_4E7A - DEY ; (4E7A) Decrement Y Register - BPL l_4E6D ; (4E7B) Branch to $4E6D if positive - JMP l_4E97 ; (4E7D) Jump to $4E97 - -l_4E80 - STY $02 ; (4E80) Store Y Register $02 - LDY #$00 ; (4E82) Load Y with #$00 (0 / 00000000) - LDA ($C9),Y ; (4E84) Load A with ($C9),Y - CMP #$12 ; (4E86) Subtract #$12 from A (18 / 00010010) - BCC l_4EA0 ; (4E88) Branch to $4EA0 if Carry Clear - CMP #$1A ; (4E8A) Subtract #$1A from A (26 / 00011010) - BCS l_4EA0 ; (4E8C) Branch if Carry Set $4EA0 - LDY $02 ; (4E8E) Load Y with Data from $02 - LDA $4EC8,Y ; (4E90) Load A with $4EC8,Y - LDY #$00 ; (4E93) Load Y with #$00 (0 / 00000000) - STA ($C9),Y ; (4E95) Store Accumulator ($C9),Y - -l_4E97 - LDA $AE ; (4E97) Load A with $AE - STA $C9 ; (4E99) Store A to $C9 - LDA $AF ; (4E9B) Load A with $AF - STA $CA ; (4E9D) Store A to $CA - RTS ; (4E9F) Return from Subroutine - -l_4EA0 - LDY $02 ; (4EA0) Load Y with Data from $02 - CMP $4ECC,Y ; (4EA2) Compare Accumulator $4ECC,Y - BEQ l_4E97 ; (4EA5) Branch to $4E97 if Equal - LDX $03A2 ; (4EA7) Load X with $03A2 - INX ; (4EAA) Increment X - CPX #$14 ; (4EAB) Subtract #$14 from X (20 / 00010100) - BNE l_4EB4 ; (4EAD) Branch to $4EB4 if Not Equal - JSR l_4900 ; (4EAF) Jump to Subroutine at $4900 - LDX #$12 ; (4EB2) Set X to #$12 (18 / 00010010) - -l_4EB4 - STX $03A2 ; (4EB4) Store X Register $03A2 - JMP l_4E97 ; (4EB7) Jump to $4E97 + .include "4e00.asm" * = $4EBA .byte $EA,$EA,$EA,$EA,$EA,$EA,$86,$03,$7A,$FD,$FE,$00,$01,$FF,$18,$12 @@ -3167,7 +2365,7 @@ l_4F30 JSR l_54F0 ; (4F7C) Jump to Subroutine at $54F0 l_4F7F - JSR l_4260 ; (4F7F) Jump to Subroutine at $4260 + JSR CheckJoyInputs ; (4F7F) Jump to Subroutine at $4260 LDA $02 ; (4F82) Load A with $02 BNE l_4FBB ; (4F84) Branch to $4FBB if Not Equal LDA $FD ; (4F86) Load A with $FD @@ -3450,14 +2648,14 @@ l_51A2 EOR #$08 ; (51AA) Exclusive OR (XOR) with Accumulator and #$08 (8 / 00001000) STA ForwardReverse ; (51AC) Store A to $03A4 CLC ; (51AF) Clear Carry Flag - LDA $0340 ; (51B0) Load A with $0340 + LDA CarSpeed ; (51B0) Load A with $0340 ADC #$03 ; (51B3) Add with Carry with #$03 (3 / 00000011) CMP #$40 ; (51B5) Subtract #$40 from A (64 / 01000000) BCC l_51BB ; (51B7) Branch to $51BB if Carry Clear LDA #$3F ; (51B9) Set A to #$3F (63 / 00111111) l_51BB - STA $0340 ; (51BB) Store A to $0340 + STA CarSpeed ; (51BB) Store A to $0340 LDY DamageCount ; (51BE) Load Y with Data from $03A1 INY ; (51C1) Increment Y Register CPY #$28 ; (51C2) Subtract #$28 from Y (40 / 00101000) @@ -3497,210 +2695,7 @@ l_51F2 * = $5200 -l_5200 - LDA EndGameFlag ; (5200) #00 Continue / #80 Mayday found / Ends game #27 - BNE l_5216 ; (5203) Branch to $5216 if game is ending. This will RTS. - LDY MaydayLoopCounter ; (5205) Load MaydayLoopCounter. Loops from 7 to 0. - DEY ; (5208) Decrement MaydayLoopCounter - STY MaydayLoopCounter ; (5209) Store MaydayLoopCounter - BNE l_5216 ; (520C) Branch to $5216 if Not zero. - LDA MaydayLanded ; (520E) Load A with $02FE. #00 continue circling / #01 Landed. - BEQ l_5218 ; (5211) Branch to $5218 if Equal - JMP l_52A4 ; (5213) Jump to $52A4 - -l_5216 - RTS ; (5216) Return from Subroutine - -* = $5217 - .byte $60 - -* = $5218 - -l_5218 - LDY #$07 ; (5218) Load Y with #$07 (7 / 00000111). - STY MaydayLoopCounter ; (521A) Reset loop counter ($034F). - LDA MaydayDirection ; (521D) Load A with $6930. 7:NW, 6:W, 5:SW, 4:W, 3:SE, 2:E, 1:NE, 0:N. - TAY ; (5220) Transfer A to Y - LDA $69B0,Y ; (5221) Load A with $69B0,Y. 7:Neg (NW), 6:Neg (W), 5:neg (SW), 4:zero (W), 3:one (SE), 2:one (E), 1:one (NE), 0:zero (N). - BMI ReduceMaydayXMap ; (5224) Branch to $5239 if minus. $69B0,7 to $69B0,5 are minus. - BEQ GoingNorthOrSouth ; (5226) Branch to $5247 if Equal. $69B0,4 and $69B0,0 are zero. - CLC ; (5228) Clear Carry Flag - LDA MaydayXMap ; (5229) Load A with $6900 - ADC #$01 ; (522C) Add with Carry with #$01 (1 / 00000001) - STA MaydayXMap ; (522E) Store A to $6900 - BCC GoingNorthOrSouth ; (5231) Branch to $5247 if Carry Clear - INC $6940 ; (5233) Increment Memory $6940 - JMP GoingNorthOrSouth ; (5236) Jump to $5247 - -ReduceMaydayXMap - SEC ; (5239) Set Carry Flag - LDA MaydayXMap ; (523A) Load A with $6900 - SBC #$01 ; (523D) Subtract with Carry #$01 (1 / 00000001) - STA MaydayXMap ; (523F) Store A to $6900 - BCS GoingNorthOrSouth ; (5242) Branch if Carry Set $5247 - DEC $6940 ; (5244) Decrement $6940 - -GoingNorthOrSouth - LDA $69B8,Y ; (5247) Load A with $69B8,Y. 7:Neg (NW), 6:Neg (W), 5:Zero (SW), 4:Pos (W), 3:Pos (SE), 2:Pos (E), 1:Zero (NE), 0:Neg (N). - BMI ReduceMaydayYMap ; (524A) Branch to $525F if minus - BEQ l_526D ; (524C) Branch to $526D if Equal - CLC ; (524E) Clear Carry Flag - LDA MaydayYMap ; (524F) Load A with $6980 - ADC #$01 ; (5252) Add with Carry with #$01 (1 / 00000001) - STA MaydayYMap ; (5254) Store A to $6980 - BCC l_526D ; (5257) Branch to $526D if Carry Clear - INC $69C0 ; (5259) Increment Memory $69C0 - JMP l_526D ; (525C) Jump to $526D - -ReduceMaydayYMap - SEC ; (525F) Set Carry Flag - LDA MaydayYMap ; (5260) Load A with $6980 - SBC #$01 ; (5263) Subtract with Carry #$01 (1 / 00000001) - STA MaydayYMap ; (5265) Store A to $6980 - BCS l_526D ; (5268) Branch if Carry Set $526D - DEC $69C0 ; (526A) Decrement $69C0 - -l_526D - LDA MaydaySpritePointerIndex,Y ; (526D) Load A with $03E0,Y. - STA MaydaySpritePointer ; (5270) Store A to $6920 - LDY $69F8 ; (5273) Load Y with Data from $69F8 - DEY ; (5276) Decrement Y Register - STY $69F8 ; (5277) Store Y Register $69F8 - BNE l_52A1 ; (527A) Branch to $52A1 if Not Equal - CLC ; (527C) Clear Carry Flag - LDA MaydayTurnsTaken ; (527D) Load A with $69F9 - ADC #$02 ; (5280) Add with Carry with #$02 (2 / 00000010) - STA MaydayTurnsTaken ; (5282) Store A to $69F9 - NOP ; (5285) No operation - CMP MayDayLandLocation ; (5286) Subtract $D3 from A. Compare number of Mayday turns taken against $D3. - BNE l_5290 ; (5288) Branch to $5290 if Not Equal - INC MaydayLanded ; (528A) Increment Memory $02FE. #00 continue circling / #01 Landed. - JMP UpdateMaydayDirection ; (528D) Jump to $5296 - -l_5290 - LDY MaydayTurnsTaken ; (5290) Load Y with Data from $69F9 - STY $69F8 ; (5293) Store Y Register $69F8 - -UpdateMaydayDirection - LDY MaydayDirection ; (5296) Load Y with Data from $6930 - DEY ; (5299) Decrement Y Register - BPL StoreMaydayDirection ; (529A) Branch to $529E if positive - LDY #$07 ; (529C) Load Y with #$07 (7 / 00000111) - -StoreMaydayDirection - STY MaydayDirection ; (529E) Store Y Register $6930 - -l_52A1 - JMP l_5315 ; (52A1) Jump to $5315 - -l_52A4 - LDY #$08 ; (52A4) Load Y with #$08 (8 / 00001000) - STY MaydayLoopCounter ; (52A6) Store Y Register $034F - LDA $6940 ; (52A9) Load A with $6940 - CMP $69FD ; (52AC) Subtract $69FD from A - BCC l_52D1 ; (52AF) Branch to $52D1 if Carry Clear - BEQ l_52B6 ; (52B1) Branch to $52B6 if Equal - JMP l_52C0 ; (52B3) Jump to $52C0 - -l_52B6 - LDA MaydayXMap ; (52B6) Load A with $6900 - CMP $69FC ; (52B9) Subtract $69FC from A - BCC l_52D1 ; (52BC) Branch to $52D1 if Carry Clear - BEQ l_52DF ; (52BE) Branch to $52DF if Equal - -l_52C0 - SEC ; (52C0) Set Carry Flag - LDA MaydayXMap ; (52C1) Load A with $6900 - SBC #$01 ; (52C4) Subtract with Carry #$01 (1 / 00000001) - STA MaydayXMap ; (52C6) Store A to $6900 - BCS l_52DF ; (52C9) Branch if Carry Set $52DF - DEC $6940 ; (52CB) Decrement $6940 - JMP l_52DF ; (52CE) Jump to $52DF - -l_52D1 - CLC ; (52D1) Clear Carry Flag - LDA MaydayXMap ; (52D2) Load A with $6900 - ADC #$01 ; (52D5) Add with Carry with #$01 (1 / 00000001) - STA MaydayXMap ; (52D7) Store A to $6900 - BCC l_52DF ; (52DA) Branch to $52DF if Carry Clear - INC $6940 ; (52DC) Increment Memory $6940 - -l_52DF - LDA $69C0 ; (52DF) Load A with $69C0 - CMP $69FF ; (52E2) Subtract $69FF from A - BCC l_5307 ; (52E5) Branch to $5307 if Carry Clear - BEQ l_52EC ; (52E7) Branch to $52EC if Equal - JMP l_52F6 ; (52E9) Jump to $52F6 - -l_52EC - LDA MaydayYMap ; (52EC) Load A with $6980 - CMP $69FE ; (52EF) Subtract $69FE from A - BCC l_5307 ; (52F2) Branch to $5307 if Carry Clear - BEQ l_5315 ; (52F4) Branch to $5315 if Equal - -l_52F6 - SEC ; (52F6) Set Carry Flag - LDA MaydayYMap ; (52F7) Load A with $6980 - SBC #$01 ; (52FA) Subtract with Carry #$01 (1 / 00000001) - STA MaydayYMap ; (52FC) Store A to $6980 - BCS l_5315 ; (52FF) Branch if Carry Set $5315 - DEC $69C0 ; (5301) Decrement $69C0 - JMP l_5315 ; (5304) Jump to $5315 - -l_5307 - CLC ; (5307) Clear Carry Flag - LDA MaydayYMap ; (5308) Load A with $6980 - ADC #$01 ; (530B) Add with Carry with #$01 (1 / 00000001) - STA MaydayYMap ; (530D) Store A to $6980 - BCC l_5315 ; (5310) Branch to $5315 if Carry Clear - INC $69C0 ; (5312) Increment Memory $69C0 - -l_5315 - LDX $535C ; (5315) Load X with $535C - DEX ; (5318) Decrement X - STX $535C ; (5319) Store X Register $535C - BNE l_534D_RTS ; (531C) Branch to $534D if Not Equal - LDX #$14 ; (531E) Set X to #$14 (20 / 00010100) - STX $535C ; (5320) Store X Register $535C - NOP ; (5323) No operation. - LDX #$02 ; (5324) Set X to #$02 (2 / 00000010). Used to select three timer values. - -ReduceTimer - DEC ScrCounterDigit100,X ; (5326) Decrement $04F3,X. #6d:9,#6c:8,#6b:7,#6a:6,#69:5,#68:4,#67:3,#66:2,#65:1,#64:0. - LDA ScrCounterDigit100,X ; (5329) Load A with $04F3,X - CMP #$63 ; (532C) Subtract #$63 from A (99 / 01100011) - BNE CheckRemainingTime ; (532E) Branch to $5338 if Not Equal - LDA #$6D ; (5330) Set A to #$6D (109 / 01101101) - STA ScrCounterDigit100,X ; (5332) Store A to $04F3,X - DEX ; (5335) Decrement X - BPL ReduceTimer ; (5336) Branch to $5326 if positive - -CheckRemainingTime - LDA ScrCounterDigit100 ; (5338) Load A with $04F3 - CMP #$64 ; (533B) Subtract #$64 from A (100 / 01100100). #64 represents zero on clock. - BNE l_534D_RTS ; (533D) Branch to $534D if Not Equal. - LDA ScrCounterDigit10 ; (533F) Load A with $04F4 - CMP #$64 ; (5342) Subtract #$64 from A (100 / 01100100). #64 represents zero on clock. - BNE Check60SecLeft ; (5344) Branch to $534E if Not Equal - LDA ScrCounterDigit1 ; (5346) Load A with $04F5 - CMP #$64 ; (5349) Subtract #$64 from A (100 / 01100100). #64 represents zero on clock. - BEQ ClockRanOut ; (534B) Branch to $5356 if Equal. Branch if clock reaches 000. - -l_534D_RTS - RTS ; (534D) Return from Subroutine - -Check60SecLeft - CMP #$6A ; (534E) Subtract #$6A from A (106 / 01101010) - BCS l_5355_RTS ; (5350) Branch if Carry Set $5355 - INC MaydayBeginLanding ; (5352) Increment Memory $02E1 - -l_5355_RTS - RTS ; (5355) Return from Subroutine - -ClockRanOut - LDA #$40 ; (5356) Set A to #$40 (64 / 01000000) - STA EndGameFlag ; (5358) Store A to $0313. #00 Continue / #80 Mayday found / Ends game #27. - RTS ; (535B) Return from Subroutine + .include "5200.asm" * = $535C .byte $03,$17,$FF,$00,$FF,$00,$5F,$00,$FF,$08,$FF,$00,$FF,$DF,$FF,$00 @@ -4121,18 +3116,18 @@ l_5A52 * = $5A60 l_5A60 - JSR l_4260 ; (5A60) Jump to Subroutine at $4260 + JSR CheckJoyInputs ; (5A60) Jump to Subroutine at $4260 JMP l_5AB0 ; (5A63) Jump to $5AB0 l_5A66 - JSR l_4290 ; (5A66) Jump to Subroutine at $4290 - JSR l_4500 ; (5A69) Jump to Subroutine at $4500 - JSR l_4600 ; (5A6C) Jump to Subroutine at $4600 - JSR l_4850 ; (5A6F) Jump to Subroutine at $4850 - JSR l_5200 ; (5A72) Jump to Subroutine at $5200 - JSR l_4D92 ; (5A75) Jump to Subroutine at $4D92 - JSR l_4E00 ; (5A78) Jump to Subroutine at $4E00 - JSR l_4940 ; (5A7B) Jump to Subroutine at $4940 + JSR l_4290 ; (5A66) + JSR Sub_UpdateScrDamageSpeedo ; (5A69) Update damage bar and speedo. + JSR l_4600 ; (5A6C) This renders the 3D car windshield view. + JSR l_4850 ; (5A6F) + JSR Sub_MaydayAndClock ; (5A72) Clock and Mayday update routine. + JSR l_4D92 ; (5A75) Other cars dont move. + JSR l_4E00 ; (5A78) Steering wheel keeps spinning. + JSR l_4940 ; (5A7B) LDA EndGameFlag ; (5A7E) Load A with $0313. #00 Continue / #80 Mayday found / Ends game #27. BEQ l_5A8D ; (5A81) Branch to $5A8D if Equal CMP #$80 ; (5A83) Subtract #$80 from A (128 / 10000000) @@ -4255,31 +3250,31 @@ l_5B40 STY $07FC ; (5B4E) Store Y Register $07FC l_5B51 - JSR l_4260 ; (5B51) Jump to Subroutine at $4260 - LDA ForwardReverse ; (5B54) Load A with $03A4 + JSR CheckJoyInputs ; (5B51) Jump to Subroutine at $4260 + LDA ForwardReverse ; (5B54) Load A with $03A4 BNE l_5B89 ; (5B57) Branch to $5B89 if Not Equal LDA $FD ; (5B59) Load A with $FD BEQ l_5B86 ; (5B5B) Branch to $5B86 if Equal BPL l_5B6F ; (5B5D) Branch to $5B6F if positive l_5B5F - DEC $0340 ; (5B5F) Decrement $0340 - LDA $0340 ; (5B62) Load A with $0340 + DEC CarSpeed ; (5B5F) Decrement $0340 + LDA CarSpeed ; (5B62) Load A with $0340 BNE l_5B86 ; (5B65) Branch to $5B86 if Not Equal LDA #$01 ; (5B67) Set A to #$01 (1 / 00000001) - STA $0340 ; (5B69) Store A to $0340 + STA CarSpeed ; (5B69) Store A to $0340 JMP l_5B86 ; (5B6C) Jump to $5B86 l_5B6F - INC $0340 ; (5B6F) Increment Memory $0340 - LDA $0340 ; (5B72) Load A with $0340 + INC CarSpeed ; (5B6F) Increment Memory $0340 + LDA CarSpeed ; (5B72) Load A with $0340 CMP #$40 ; (5B75) Subtract #$40 from A (64 / 01000000) BNE l_5B86 ; (5B77) Branch to $5B86 if Not Equal LDA ForwardReverse ; (5B79) Load A with $03A4 EOR #$08 ; (5B7C) Exclusive OR (XOR) with Accumulator and #$08 (8 / 00001000) STA ForwardReverse ; (5B7E) Store A to $03A4 LDA #$3F ; (5B81) Set A to #$3F (63 / 00111111) - STA $0340 ; (5B83) Store A to $0340 + STA CarSpeed ; (5B83) Store A to $0340 l_5B86 JMP l_5B92 ; (5B86) Jump to $5B92 @@ -4297,7 +3292,7 @@ l_5B92 BNE l_5BB8 ; (5B99) Branch to $5BB8 if Not Equal LDA ForwardReverse ; (5B9B) Load A with $03A4 BEQ l_5BB5 ; (5B9E) Branch to $5BB5 if Equal - LDA $0340 ; (5BA0) Load A with $0340 + LDA CarSpeed ; (5BA0) Load A with $0340 CMP #$15 ; (5BA3) Subtract #$15 from A (21 / 00010101) BCS l_5BB5 ; (5BA5) Branch if Carry Set $5BB5 LDA #$04 ; (5BA7) Set A to #$04 (4 / 00000100) @@ -4340,9 +3335,9 @@ l_5C00 l_5C1E STY $033E ; (5C1E) Store Y Register $033E SEC ; (5C21) Set Carry Flag - LDA $0338 ; (5C22) Load A with $0338 + LDA var_BondCarXPosLow ; (5C22) Load A with $0338 SBC #$02 ; (5C25) Subtract with Carry #$02 (2 / 00000010) - STA $0338 ; (5C27) Store A to $0338 + STA var_BondCarXPosLow ; (5C27) Store A to $0338 BCS l_5C2F ; (5C2A) Branch if Carry Set $5C2F DEC $0339 ; (5C2C) Decrement $0339 @@ -4362,9 +3357,9 @@ l_5C32 l_5C42 STY $033E ; (5C42) Store Y Register $033E CLC ; (5C45) Clear Carry Flag - LDA $0338 ; (5C46) Load A with $0338 + LDA var_BondCarXPosLow ; (5C46) Load A with $0338 ADC #$02 ; (5C49) Add with Carry with #$02 (2 / 00000010) - STA $0338 ; (5C4B) Store A to $0338 + STA var_BondCarXPosLow ; (5C4B) Store A to $0338 BCC l_5C53 ; (5C4E) Branch to $5C53 if Carry Clear INC $0339 ; (5C50) Increment Memory $0339 @@ -4445,10 +3440,10 @@ l_5CBE LDA $0350,X ; (5CCC) Load A with $0350,X BMI l_5CED ; (5CCF) Branch to $5CED if minus CLC ; (5CD1) Clear Carry Flag - ADC $033C ; (5CD2) Add with Carry $033C - STA $033C ; (5CD5) Store A to $033C + ADC V_MapXposition ; (5CD2) Add with Carry $033C + STA V_MapXposition ; (5CD5) Store A to $033C BCC l_5CDD ; (5CD8) Branch to $5CDD if Carry Clear - INC $033D ; (5CDA) Increment Memory $033D + INC V_MapYposition ; (5CDA) Increment Memory $033D l_5CDD LDY $0334 ; (5CDD) Load Y with Data from $0334 @@ -4463,11 +3458,11 @@ l_5CE7 l_5CED SEC ; (5CED) Set Carry Flag - LDA $033C ; (5CEE) Load A with $033C + LDA V_MapXposition ; (5CEE) Load A with $033C SBC #$01 ; (5CF1) Subtract with Carry #$01 (1 / 00000001) - STA $033C ; (5CF3) Store A to $033C + STA V_MapXposition ; (5CF3) Store A to $033C BCS l_5CFB ; (5CF6) Branch if Carry Set $5CFB - DEC $033D ; (5CF8) Decrement $033D + DEC V_MapYposition ; (5CF8) Decrement $033D l_5CFB LDY $0334 ; (5CFB) Load Y with Data from $0334 @@ -4489,10 +3484,10 @@ l_5D08 LDA $0360,X ; (5D16) Load A with $0360,X BMI l_5D37 ; (5D19) Branch to $5D37 if minus CLC ; (5D1B) Clear Carry Flag - ADC $033C ; (5D1C) Add with Carry $033C - STA $033C ; (5D1F) Store A to $033C + ADC V_MapXposition ; (5D1C) Add with Carry $033C + STA V_MapXposition ; (5D1F) Store A to $033C BCC l_5D27 ; (5D22) Branch to $5D27 if Carry Clear - INC $033D ; (5D24) Increment Memory $033D + INC V_MapYposition ; (5D24) Increment Memory $033D l_5D27 LDY $0335 ; (5D27) Load Y with Data from $0335 @@ -4507,11 +3502,11 @@ l_5D31 l_5D37 SEC ; (5D37) Set Carry Flag - LDA $033C ; (5D38) Load A with $033C + LDA V_MapXposition ; (5D38) Load A with $033C SBC #$7E ; (5D3B) Subtract with Carry #$7E (126 / 01111110) - STA $033C ; (5D3D) Store A to $033C + STA V_MapXposition ; (5D3D) Store A to $033C BCS l_5D45 ; (5D40) Branch if Carry Set $5D45 - DEC $033D ; (5D42) Decrement $033D + DEC V_MapYposition ; (5D42) Decrement $033D l_5D45 LDY $0335 ; (5D45) Load Y with Data from $0335 @@ -4529,9 +3524,9 @@ l_5D52 STA $5D70 ; (5D56) Store A to $5D70 LDA #$05 ; (5D59) Set A to #$05 (5 / 00000101) STA $5D71 ; (5D5B) Store A to $5D71 - LDA $033C ; (5D5E) Load A with $033C + LDA V_MapXposition ; (5D5E) Load A with $033C STA $5D6D ; (5D61) Store A to $5D6D - LDA $033D ; (5D64) Load A with $033D + LDA V_MapYposition ; (5D64) Load A with $033D STA $5D6E ; (5D67) Store A to $5D6E l_5D6A @@ -4576,7 +3571,7 @@ l_5DA0 LDX $0342 ; (5DA5) Load X with $0342 DEX ; (5DA8) Decrement X BPL l_5DB6 ; (5DA9) Branch to $5DB6 if positive - LDA $0340 ; (5DAB) Load A with $0340 + LDA CarSpeed ; (5DAB) Load A with $0340 LSR A ; (5DAE) Logical Shift Right Accumulator LSR A ; (5DAF) Logical Shift Right Accumulator STA $0342 ; (5DB0) Store A to $0342 diff --git a/2 Paris/Level2packed.prg b/2 Paris/Level2packed.prg new file mode 100644 index 0000000000000000000000000000000000000000..70b45c89dcd57255fee8f7fb6b4669d66f89281e GIT binary patch literal 18655 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 Tg`XfA0jjXl#sOGNutUu9oW+A9 literal 0 HcmV?d00001 diff --git a/2 Paris/UpdateScrDamageSpeedo.asm b/2 Paris/UpdateScrDamageSpeedo.asm new file mode 100644 index 0000000..2cf74ef --- /dev/null +++ b/2 Paris/UpdateScrDamageSpeedo.asm @@ -0,0 +1,52 @@ +Sub_UpdateScrDamageSpeedo + LDA CarSpeed ; (4500) Load A with $0340 + LSR A ; (4503) Logical Shift Right Accumulator + AND #$03 ; (4504) Logical AND with Accumulator and #$03 (3 / 00000011) + CLC ; (4506) Clear Carry Flag + ADC #$00 ; (4507) Add with Carry with #$00 (0 / 00000000) + PHA ; (4509) Push Accumulator to Stack + LDY #$07 ; (450A) Load Y with #$07 (7 / 00000111) + LDA #$04 ; (450C) Set A to #$04 (4 / 00000100). The value to be entered into the 8 bits at $0576-$057x + +l_UpdateScrSpeedo + STA $0576,Y ; (450E) Set $0576,Y to A + DEY ; (4511) Decrement Y + BPL l_UpdateScrSpeedo ; (4512) Loop 8 times. + LDA CarSpeed ; (4514) Load A with $0340 + CLC ; (4517) Clear Carry Flag + LSR A ; (4518) Logical Shift Right Accumulator + LSR A ; (4519) Logical Shift Right Accumulator + LSR A ; (451A) Divide carspeed by 8. + STA $02 ; (451B) Store carspeed / 8 to $02 + LDA #$07 ; (451D) Set A to #$07 (7 / 00000111) + SEC ; (451F) Set Carry Flag + SBC $02 ; (4520) Subtract with Carry $02 + TAY ; (4522) Transfer A to Y + PLA ; (4523) Pull Accumulator from Stack + STA $0576,Y ; (4524) Set $0576,Y to A + JMP l_UpdateScrDamageBar ; (4527) Jump to $4530 + +* = $452A + .byte $EA,$EA,$EA,$EA,$EA,$EA + +* = $4530 + +l_UpdateScrDamageBar + LDA DamageCount ; (4530) Load A with $03A1 + LSR A ; (4533) Logical Shift Right Accumulator + LSR A ; (4534) Logical Shift Right Accumulator + LSR A ; (4535) Logical Shift Right Accumulator + TAY ; (4536) Transfer A to Y + LDA DamageCount ; (4537) Load A with $03A1. Maximum is #28 (40 / 00101000) + AND #$07 ; (453A) Logical AND with Accumulator and #$07 (7 / 00000111). Get values from 0-7 which is added to #c4. + CLC ; (453C) Clear Carry Flag + ADC #$C4 ; (453D) Add with Carry with #$C4 (196 / 11000100). #c4 is the default value for the section of the damage bar. + TAX ; (453F) Transfer A to X. This will be the value for the damage meter piece. + LDA $4550,Y ; (4540) Load A with $4550,Y + STA $AE ; (4543) Store A to $AE + LDA $4558,Y ; (4545) Load A with $4558,Y + STA $AF ; (4548) Store A to $AF + LDY #$00 ; (454A) Load Y with #$00 (0 / 00000000) + TXA ; (454C) Transfer X to A. Get the character for the damage bar which was calculated previously. + STA ($AE),Y ; (454D) Update part of the damage bar. + RTS ; (454F) Return from Subroutine \ No newline at end of file diff --git a/2 Paris/build.bat b/2 Paris/build.bat index af78286..53f58f1 100644 --- a/2 Paris/build.bat +++ b/2 Paris/build.bat @@ -1,5 +1,5 @@ del "D:\OneDrive\C64\Disassembly\AVTAK\2 Paris\Level2packed.prg" D:\OneDrive\C64\Assemblers\64tass\64tass.exe -a "D:\OneDrive\C64\Disassembly\AVTAK\2 Paris\Level2.asm" -o "D:\OneDrive\C64\Disassembly\AVTAK\2 Paris\Level2compiled.prg" -D:\OneDrive\C64\Tools\exomizer.exe sfx $43e4 -x 1 "D:\OneDrive\C64\Disassembly\AVTAK\2 Paris\Level2compiled.prg" -o "D:\OneDrive\C64\Disassembly\AVTAK\2 Paris\Level2packed.prg" -p 1 +D:\OneDrive\C64\Tools\exomizer.exe sfx $43b0 -x 1 "D:\OneDrive\C64\Disassembly\AVTAK\2 Paris\Level2compiled.prg" -o "D:\OneDrive\C64\Disassembly\AVTAK\2 Paris\Level2packed.prg" -p 1 del "D:\OneDrive\C64\Disassembly\AVTAK\2 Paris\Level2compiled.prg" D:\OneDrive\C64\Emulators\RetroDebugger.exe -wait 2500 -autojmp -prg "D:\OneDrive\C64\Disassembly\AVTAK\2 Paris\Level2packed.prg" diff --git a/2 Paris/joystick.asm b/2 Paris/joystick.asm new file mode 100644 index 0000000..67d12d5 --- /dev/null +++ b/2 Paris/joystick.asm @@ -0,0 +1,40 @@ +CheckJoyInputs + LDY #$00 ; (4260) Load Y with #$00 (0 / 00000000) + LDX #$00 ; (4262) Set X to #$00 (0 / 00000000) + SEC ; (4264) Set Carry Flag + LDA $0346 ; (4265) Load A with $0346 + BNE StoreJoyInputs ; (4268) Branch to $427F if Not Equal + LDA KeyJoy2 ; (426A) Load A with $DC00 + NOP ; (426D) No operation + LSR A ; (426E) Logical Shift Right Accumulator + BCS CheckJoyDown ; (426F) Branch if Carry Set $4272 + DEY ; (4271) Decrement Y Register + +CheckJoyDown + LSR A ; (4272) Logical Shift Right Accumulator + BCS CheckJoyLeft ; (4273) Branch if Carry Set $4276 + INY ; (4275) Increment Y Register. Down on joystick is detected. + +CheckJoyLeft + LSR A ; (4276) Logical Shift Right Accumulator + BCS CheckJoyRight ; (4277) Branch if Carry Set $427A + DEX ; (4279) Decrement X + +CheckJoyRight + LSR A ; (427A) Logical Shift Right Accumulator + BCS JoyUp ; (427B) Branch if Carry Set $427E + INX ; (427D) Increment X + +JoyUp + LSR A ; (427E) Logical Shift Right Accumulator + +StoreJoyInputs + STX $FE ; (427F) Store X to $FE + STY $FD ; (4281) Store Y Register $FD + LDX #$00 ; (4283) Set X to #$00 (0 / 00000000) + BCS StoreFireInputs ; (4285) Branch if Carry Set $4288 + INX ; (4287) Increment X + +StoreFireInputs + STX $02 ; (4288) Store X to $02 + RTS ; (428A) Return from Subroutine \ No newline at end of file