04BA6E: 4DF9 0010 FD96 lea $10fd96.l, A6 ; P1_CURRENT value moving to A6
04BA74: 4EBA 019E jsr ($19e,PC) ; ($4bc14)
04BA78: 4E71 nop
04BA7A: 082C 0000 00C9 btst #$0, ($c9,A4)
04BA80: 6700 0014 beq $4ba96 ; if 1st bit of ((initial A4 value+$c9)^1)+$c9 value is equal to 0 then end the subroutine ahead of time
04BA84: 4EBA 004C jsr ($4c,PC) ; ($4bad2) ; else goto $4bad2 subroutine
04BA88: 4E71 nop
04BA8A: 4EBA 01BA jsr ($1ba,PC) ; ($4bc46)
04BA8E: 4E71 nop
04BA90: 4EBA 0218 jsr ($218,PC) ; ($4bcaa)
04BA94: 4E71 nop
04BA96: 4E75 rts
04BC14: 082D 0003 39F5 btst #$3, ($39f5,A5)
04BC1A: 6700 0028 beq $4bc44 ; if 4th bit of $39f5 + A5 value is equal to 0 then end subroutine ahead of time
04BC1E: 082D 0002 39F6 btst #$2, ($39f6,A5)
04BC24: 6700 001E beq $4bc44 ; else if 3rd bit of $39f6 + A5 value is equal to 0 then end subroutine ahead of time
04BC28: 0A2C 0001 00C9 eori.b #$1, ($c9,A4) ; else (A4+$c9)^1
04BC2E: 302C 00CC move.w ($cc,A4), D0 ; D0=((initial A4 value+$c9)^1)+$cc
04BC32: 322C 00CE move.w ($ce,A4), D1 ; D1=((initial A4 value+$c9)^1)+$ce
04BC36: 343C 0007 move.w #$7, D2 ; D2=7
04BC3A: 363C 0006 move.w #$6, D3 ; D3=6
04BC3E: 4EB9 0000 5FEA jsr $5fea.l
04BC44: 4E75 rts
04BAD2: 102D 39CD move.b ($39cd,A5), D0 ; D0=A5+$39cd
04BAD6: 0240 000F andi.w #$f, D0
04BADA: 41FA 0354 lea ($354,PC) ; ($4be30), A0 ; A0=$ff02
04BADE: 4E71 nop
04BAE0: 7200 moveq #$0, D1 ; D1=0
04BAE2: 1230 0000 move.b (A0,D0.w), D1 ; D1=$ff02+(A5+$39cd)
04BAE6: 6B00 0022 bmi $4bb0a ; if $ff02+(A5+$39cd) is negative then end the subroutine ahead of time
04BAEA: D241 add.w D1, D1
04BAEC: D241 add.w D1, D1 ; else D1=($ff02+(A5+$39cd))*4
04BAEE: 41FA 001C lea ($1c,PC) ; ($4bb0c), A0 ; A0=(swapped value of (((((A4+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20)|#$2c
04BAF2: 4E71 nop
04BAF4: 082D 0002 39F5 btst #$2, ($39f5,A5)
04BAFA: 6700 0008 beq $4bb04 ; if 3rd bit of (A5+$39f5) value is equal to 0 then skip the next 2 operations
04BAFE: 41FA 001C lea ($1c,PC) ; ($4bb1c), A0 ; else A0=(swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20)|#$7c
04BB02: 4E71 nop
04BB04: 2070 1000 movea.l (A0,D1.w), A0 ; A0=((swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20)|#$7c)+(($ff02+(A5+$39cd))*4)
04BB08: 4E90 jsr (A0) ; goto $((swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20)|#$7c)+(($ff02+(A5+$39cd))*4)
04BB0A: 4E75 rts
04BC46: 082D 0004 39CD btst #$4, ($39cd,A5)
04BC4C: 6700 0038 beq $4bc86 ; if 5th bit of A5+$39cd value is equal to 0 then goto $4bc86 subroutine
04BC50: 0C2C 0005 00D0 cmpi.b #$5, ($d0,A4)
04BC56: 6200 002C bhi $4bc84 ; if A4+$d0>5 then end the subroutine ahead of time
04BC5A: 422C 00C9 clr.b ($c9,A4) ; else [A4+$c9] value=0
04BC5E: 7000 moveq #$0, D0 ; D0=0
04BC60: 102C 00D0 move.b ($d0,A4), D0 ; D0=A4+$d0
04BC64: 5200 addq.b #1, D0 ; D0=A4+$d0+#1
04BC66: 01EC 00C9 bset D0, ($c9,A4) ; (A4+$d0+#1)th bit of A4+$c9 value is equal to 1
04BC6A: 302C 00CC move.w ($cc,A4), D0 ; D0=A4+$cc
04BC6E: 322C 00CE move.w ($ce,A4), D1 ; D1=A4+$ce
04BC72: 343C 0007 move.w #$7, D2 ; D2=7
04BC76: 363C 0006 move.w #$6, D3 ; D3=6
04BC7A: 4EB9 0000 5FEA jsr $5fea.l
04BC80: 422D 39CD clr.b ($39cd,A5) ; [A5+$39cd] value=0
04BC84: 4E75 rts
04BCAA: 082C 0000 00C9 btst #$0, ($c9,A4)
04BCB0: 6700 0088 beq $4bd3a ; if 1st bit of A4+$c9 value is equal to 0 then end the subroutine ahead of time
04BCB4: 396C 00CC 00D4 move.w ($cc,A4), ($d4,A4) ; A4+$d4 value = A4+$cc value
04BCBA: 396C 00CE 00D6 move.w ($ce,A4), ($d6,A4) ; A4+$d6 value = A4+$ce value
04BCC0: 302C 00D4 move.w ($d4,A4), D0 ; D0=A4+$cc value
04BCC4: 322C 00D6 move.w ($d6,A4), D1 ; D1=A4+$ce value
04BCC8: 4EB9 0000 5FDE jsr $5fde.l
04BCCE: 207C 0006 E87A movea.l #$6e87a, A0 ; A0=#$6e87a
04BCD4: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+[A4+$ce] value+#$7002) value=#$f00
04BCD8: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04BCDE: 4EB9 0000 5F0C jsr $5f0c.l
04BCE4: 546C 00D6 addq.w #2, ($d6,A4) ; [A4+$d6] value+2
04BCE8: 7E03 moveq #$3, D7 ; D7=3
04BCEA: 7C00 moveq #$0, D6 ; D6=0
04BCEC: 7A00 moveq #$0, D5 ; D5=0
04BCEE: 1A2C 00C8 move.b ($c8,A4), D5 ; D5=[A4+$c8] value
04BCF2: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$d4] value
04BCF6: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$d6] value
04BCFA: 4EB9 0000 5FDE jsr $5fde.l
04BD00: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$d4] value<<5)+[A4+$d6] value+#$7002) value=#$f00
04BD04: BC2C 00D1 cmp.b ($d1,A4), D6
04BD08: 6600 0006 bne $4bd10 ; if [A4+$d1] value !=0 then skip next operation
04BD0C: 0040 8000 ori.w #$8000, D0 ; else (swapped (([A4+$d4] value<<5)+[A4+$d6] value+#$7002) value)|#$8000
04BD10: 7800 moveq #$0, D4 ; D4=0
04BD12: 1805 move.b D5, D4 ; D4=[A4+$c8] value
04BD14: D844 add.w D4, D4
04BD16: D844 add.w D4, D4 ; D4=([A4+$c8] value)*4
04BD18: 41FA 0022 lea ($22,PC) ; ($4bd3c), A0
04BD1C: 4E71 nop
04BD1E: 2070 4000 movea.l (A0,D4.w), A0 ; A0=$4bd3c value+(([A4+$c8] value)*4)
04BD22: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04BD28: 4EB9 0000 5F0C jsr $5f0c.l
04BD2E: 526C 00D6 addq.w #1, ($d6,A4) ; [A4+$d6] value+1
04BD32: 5205 addq.b #1, D5 ; [A4+$c8] value+1
04BD34: 5206 addq.b #1, D6 ; D6=0+1=1
04BD36: 51CF FFBA dbra D7, $4bcf2 ; D7-1=3-1 ; if D7 <> 0 jump back to $4bcf2
04BD3A: 4E75 rts
005FEA: 4EBA FFF2 jsr (-$e,PC) ; ($5fde)
005FEE: 303C 0F20 move.w #$f20, D0 ; lowest D0 word=#$f20
005FF2: 2800 move.l D0, D4 ; D4=swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20
005FF4: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
005FFA: 7C00 moveq #$0, D6 ; D6=0
005FFC: 3A02 move.w D2, D5 ; D5=7
005FFE: 23C0 003C 0000 move.l D0, $3c0000.l ; sending swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20 to REG_VRAMADDR
006004: D081 add.l D1, D0 ; D0=swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20+#$200000
006006: 51CD FFF6 dbra D5, $5ffe ; D5-1=4, jump back to $5ffe because D5 <> 0
00600A: 2004 move.l D4, D0 ; D0=swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20
00600C: 0686 0001 0000 addi.l #$10000, D6 ; D6=#$10000
006012: D086 add.l D6, D0 ; D0=(swapped value of (((((initial A4 value+$c9)^1)+$cc)<<5)+D1+#$7002) + #$f20)+#$10000
006014: 51CB FFE6 dbra D3, $5ffc ; D3-1=5, jump back to $5ffc because D3 <> 0
006018: 4E75 rts
005FDE: EB48 lsl.w #5, D0 ; D0=(((A4+$c9)^1)+$cc)<<5
005FE0: D041 add.w D1, D0 ; D0=((((A4+$c9)^1)+$cc)<<5)+D1
005FE2: 0640 7002 addi.w #$7002, D0 ; D0=((((A4+$c9)^1)+$cc)<<5)+D1+#$7002
005FE6: 4840 swap D0
005FE8: 4E75 rts
04BE30: FF02 dc.w $ff02; opcode 1111
04BB0C: 0004 BB2C ori.b #$2c, D4
04BB1C: 0004 BB7C ori.b #$7c, D4
04BC86: 082D 0005 39CD btst #$5, ($39cd,A5)
04BC8C: 6700 0004 beq $4bc92
04BC90: 4E75 rts
04BC92: 082D 0006 39CD btst #$6, ($39cd,A5)
04BC98: 6700 0004 beq $4bc9e
04BC9C: 4E75 rts
04BC9E: 082D 0007 39CD btst #$7, ($39cd,A5)
04BCA4: 6700 0002 beq $4bca8
04BCA8: 4E75 rts
005FDE: EB48 lsl.w #5, D0
005FE0: D041 add.w D1, D0
005FE2: 0640 7002 addi.w #$7002, D0
005FE6: 4840 swap D0
005FE8: 4E75 rts
005F0C: 1018 move.b (A0)+, D0 ; read byte, inc A0
005F0E: 0C00 00FF cmpi.b #-$1, D0 ; -1 = 0xff
005F12: 6700 000C beq $5f20 ; if D0=#$ff then end the subroutine
005F16: 23C0 003C 0000 move.l D0, $3c0000.l ; else REG_VRAMADDR=D0
005F1C: D081 add.l D1, D0 ; D0=[(A0)+]+#$200000
005F1E: 60EC bra $5f0c ; return to start of subroutine
005F20: 4E75 rts
04BDBA: 4DF9 0010 FD96 lea $10fd96.l, A6 ; P1_CURRENT value moving to A6
04BDC0: 4EBA 0034 jsr ($34,PC) ; ($4bdf6)
04BDC4: 4E71 nop
04BDC6: 4EBA 0570 jsr ($570,PC) ; ($4c338)
04BDCA: 4E71 nop
04BDCC: 4EBA 0730 jsr ($730,PC) ; ($4c4fe)
04BDD0: 4E71 nop
04BDD2: 4EBA 052A jsr ($52a,PC) ; ($4c2fe)
04BDD6: 4E71 nop
04BDD8: 4E75 rts
04BDF6: 102D 39CD move.b ($39cd,A5), D0
04BDFA: 0240 000F andi.w #$f, D0 ; D0=([A5+$39cd] value)&#$f
04BDFE: 41FA 0030 lea ($30,PC) ; ($4be30), A0
04BE02: 4E71 nop
04BE04: 7200 moveq #$0, D1
04BE06: 1230 0000 move.b (A0,D0.w), D1 ; D1=[$4be30]+(([A5+$39cd] value)&#$f)
04BE0A: 6B00 0022 bmi $4be2e ; if [$4be30]+(([A5+$39cd] value)&#$f) is negative then end the subroutine ahead of time
04BE0E: D241 add.w D1, D1
04BE10: D241 add.w D1, D1 ; else D1=([$4be30]+(([A5+$39cd] value)&#$f))*4
04BE12: 41FA 002C lea ($2c,PC) ; ($4be40), A0
04BE16: 4E71 nop
04BE18: 082D 0002 39F5 btst #$2, ($39f5,A5)
04BE1E: 6700 0008 beq $4be28 ; is 3rd bit of [A5+$39f5] value is equal to 0 then goto 4be28 subroutine
04BE22: 41FA 002C lea ($2c,PC) ; ($4be50), A0
04BE26: 4E71 nop
04BE28: 2070 1000 movea.l (A0,D1.w), A0 ; A0=[$4be50] value+(([$4be30]+(([A5+$39cd] value)&#$f))*4)
04BE2C: 4E90 jsr (A0) ; goto [[$4be50] value+(([$4be30]+(([A5+$39cd] value)&#$f))*4)] subroutine
04BE2E: 4E75 rts
04C338: 082D 0000 39F5 btst #$0, ($39f5,A5)
04C33E: 6600 006E bne $4c3ae ; if 1st bit of [A5+$39f5] value is equal to 1 then goto $4c3ae subroutine
04C342: 082D 0004 39CD btst #$4, ($39cd,A5)
04C348: 6700 0012 beq $4c35c ; if 5th bit of [A5+$39cd] value is equal to 0 then goto $4c35c subroutine
04C34C: 206C 00C0 movea.l ($c0,A4), A0 ; A0=A4+$c0
04C350: 7000 moveq #$0, D0 ; D0=0
04C352: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value
04C356: 5230 0000 addq.b #1, (A0,D0.w) ; D0=[A4+$d0] value+[A4+$c0] value+1
04C35A: 4E75 rts
04C2FE: 082D 0003 39F5 btst #$3, ($39f5,A5)
04C304: 6700 0030 beq $4c336 ; if 4th bit of [A5+$39f5] is equal to 0 then end the subroutine ahead of time
04C308: 082D 0002 39F6 btst #$2, ($39f6,A5)
04C30E: 6700 0026 beq $4c336 ; if 3rd bit of [A5+$39f6] is equal to 0 then end the subroutine ahead of time
04C312: 206C 0084 movea.l ($84,A4), A0 ; A0=[A4+$84]
04C316: 4228 00C9 clr.b ($c9,A0) ; [A4+$14D] value=0
04C31A: 0028 0001 00C9 ori.b #$1, ($c9,A0) ; [A4+$14D] value|1=0|1=1 Why it was need to zeroize [A4+$14D] value and to spend "or" opation over it after that, if this address is not used further?
04C320: 302C 00CC move.w ($cc,A4), D0 ; D0=[A4+$cc] value
04C324: 322C 00CE move.w ($ce,A4), D1 ; D1=[A4+$ce] value
04C328: 343C 0014 move.w #$14, D2 ; D2=#$14
04C32C: 363C 0012 move.w #$12, D3 ; D3=#$12
04C330: 4EB9 0000 5FEA jsr $5fea.l
04C336: 4E75 rts
04BE28: 2070 1000 movea.l (A0,D1.w), A0 ; A0=[$4be40] value+(([$4be30]+(([A5+$39cd] value)&#$f))*4)
04BE2C: 4E90 jsr (A0) ; goto [[$4be40] value+(([$4be30]+(([A5+$39cd] value)&#$f))*4)] subroutine
04BE2E: 4E75 rts
04C3AE: 082D 0001 39F6 btst #$1, ($39f6,A5)
04C3B4: 6700 0026 beq $4c3dc ; if 2nd bit of [A5+$39f6] value is equal to 0 then goto $4c3dc subroutine
04C3B8: 06AC 0000 5000 00C0 addi.l #$5000, ($c0,A4) ; [A4+$c0] value+#$5000
04C3C0: 522C 0070 addq.b #1, ($70,A4)
04C3C4: 0C2C 0019 0070 cmpi.b #$19, ($70,A4)
04C3CA: 6300 008E bls $4c45a ; if [A4+$70] value+1<=19 then end the subroutine ahead of time... by jumping to the [b]rts[/b] in another subroutine. Who knows why?
04C3CE: 532C 0070 subq.b #1, ($70,A4) ; else restore old [A4+$70] value which that memory section had before 04C3B8 step.
04C3D2: 04AC 0000 5000 00C0 subi.l #$5000, ($c0,A4) ; [A4+$c0] value-#$5000
04C3DA: 4E75 rts
04C35C: 082D 0005 39CD btst #$5, ($39cd,A5)
04C362: 6700 0012 beq $4c376 ; if 6th bit of [A5+$39cd] value is equal to 0 then goto $4c376 subroutine
04C366: 206C 00C0 movea.l ($c0,A4), A0 ; A0=A4+$c0
04C36A: 7000 moveq #$0, D0 ; D0=0
04C36C: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value
04C370: 5330 0000 subq.b #1, (A0,D0.w) ; D0=[A4+$d0] value+[A4+$c0] value-1
04C374: 4E75 rts
04C3DC: 082D 0003 39F6 btst #$3, ($39f6,A5)
04C3E2: 6700 0020 beq $4c404 ; if 4th bit of [A5+$39f6] value is equal to 0 then goto $4c404 subroutine
04C3E6: 04AC 0000 5000 00C0 subi.l #$5000, ($c0,A4) ; [A4+$c0] value-#$5000
04C3EE: 532C 0070 subq.b #1, ($70,A4) ;
04C3F2: 6400 0066 bcc $4c45a ; if [A4+$70] value >=1 then end the subroutine ahead of time... by jumping to the [b]rts[/b] in another subroutine. Who knows why?
04C3F6: 522C 0070 addq.b #1, ($70,A4) ; else restore old [A4+$70] value which that memory section had before 04C3EE step.
04C3FA: 06AC 0000 5000 00C0 addi.l #$5000, ($c0,A4) ; [A4+$c0] value+#$5000
04C402: 4E75 rts
04C45A: 4E75 rts
04C376: 082D 0006 39CD btst #$6, ($39cd,A5)
04C37C: 6700 0014 beq $4c392 ; if 7th bit of [A5+$39cd] value is equal to 0 then goto $4c392 subroutine
04C380: 206C 00C0 movea.l ($c0,A4), A0 ; A0=A4+$c0
04C384: 7000 moveq #$0, D0 ; D0=0
04C386: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value
04C38A: 0630 0010 0000 addi.b #$10, (A0,D0.w) ; D0=[A4+$d0] value+[A4+$c0] value+#$10
04C390: 4E75 rts
04C404: 082D 0004 39CD btst #$4, ($39cd,A5)
04C40A: 6700 0008 beq $4c414 ; if 5th bit of [A5+$39cd] value is equal to 0 then goto $4c414 subroutine
04C40E: 522C 00C6 addq.b #1, ($c6,A4) ; [A4+$c6] value+1
04C412: 4E75 rts
04C392: 082D 0007 39CD btst #$7, ($39cd,A5)
04C398: 6700 0012 beq $4c3ac ; if 8th bit of [A5+$39cd] value is equal to 0 then end the subroutine ahead of time
04C39C: 206C 00C0 movea.l ($c0,A4), A0 ; else A0=A4+$c0
04C3A0: 7000 moveq #$0, D0 ; D0=0
04C3A2: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value
04C3A6: 0430 0010 0000 subi.b #$10, (A0,D0.w) ; D0=[A4+$d0] value+[A4+$c0] value-#$10
04C3AC: 4E75 rts
04C414: 082D 0005 39CD btst #$5, ($39cd,A5)
04C41A: 6700 0016 beq $4c432 ; if 6th bit of [A5+$39cd] value is equal to 0 then goto $4c432 subroutine
04C41E: 522C 00C5 addq.b #1, ($c5,A4)
04C422: 0C2C 0004 00C5 cmpi.b #$4, ($c5,A4)
04C428: 6300 0006 bls $4c430 ; if [A4+$c5] value+1 <=#$4 then end the subroutine ahead of time
04C42C: 422C 00C5 clr.b ($c5,A4) ; else [A4+$c5] value=0
04C430: 4E75 rts
04C432: 082D 0006 39CD btst #$6, ($39cd,A5)
04C438: 6700 0016 beq $4c450 ; if 7th bit of [A5+$39cd] value is equal to 0 then goto $4c450 subroutine
04C43C: 522C 00C4 addq.b #1, ($c4,A4)
04C440: 0C2C 0019 00C4 cmpi.b #$19, ($c4,A4)
04C446: 6300 0006 bls $4c44e ; if [A4+$c4] value+1 <=#$19 then end the subroutine ahead of time
04C44A: 422C 00C4 clr.b ($c4,A4) ; else [A4+$c4] value=0
04C44E: 4E75 rts
04C450: 082D 0007 39CD btst #$7, ($39cd,A5)
04C456: 6700 0004 beq $4c45c ; if 8th bit of [A5+$39cd] value is equal to 0 then goto $4c45c subroutine
04C45A: 4E75 rts
04C45C: 082D 0002 39F6 btst #$2, ($39f6,A5)
04C462: 6700 000A beq $4c46e ; if 3rd bit of [A5+$39f6] value is equal to 0 then goto $4c46e subroutine
04C466: 4EBA 0056 jsr ($56,PC) ; ($4c4be)
04C46A: 4E71 nop
04C46C: 4E75 rts
04C46E: 082D 0004 39E3 btst #$4, ($39e3,A5)
04C474: 6700 0008 beq $4c47e ; if 5th bit of [A5+$39e3] value is equal to 0 then goto $4c47e subroutine
04C478: 532C 00C6 subq.b #1, ($c6,A4) ; [A4+$c6] value-1
04C47C: 4E75 rts
04C47E: 082D 0005 39E3 btst #$5, ($39e3,A5)
04C484: 6700 0012 beq $4c498 ; if 6th bit of [A5+$39e3] value is equal to 0 then goto $4c498 subroutine
04C488: 532C 00C5 subq.b #1, ($c5,A4)
04C48C: 6400 0008 bcc $4c496 ; if [A4+$c5] value >=1 then end the subroutine ahead of time
04C490: 197C 0004 00C5 move.b #$4, ($c5,A4) ; else [A4+$c5] value=4
04C496: 4E75 rts
04C498: 082D 0006 39E3 btst #$6, ($39e3,A5)
04C49E: 6700 0012 beq $4c4b2 ; if 7th bit of [A5+$39e3] value is equal to 0 then goto $4c4b2 subroutine
04C4A2: 532C 00C4 subq.b #1, ($c4,A4)
04C4A6: 6400 0008 bcc $4c4b0 ; if [A4+$c4] value >=1 then end the subroutine ahead of time
04C4AA: 197C 0019 00C4 move.b #$19, ($c4,A4) ; else [A4+$c5] value=#$19
04C4B0: 4E75 rts
04C4B2: 082D 0007 39E3 btst #$7, ($39e3,A5)
04C4B8: 6700 0002 beq $4c4bc ; if 8th bit of [A5+$39e3] value is equal to 0 then goto $4c4bc subroutine
04C4BC: 4E75 rts
04C4BE: 4EBA 0014 jsr ($14,PC) ; ($4c4d4) ; skip to next subroutine right after start of this one
04C4C2: 4E71 nop
04C4C4: 2040 movea.l D0, A0 ; A0=((#$201000+(([A4+$c4] value)*#$5000))+(([A4+$c5] value)*#$1000))+(([A4+$c6] value)<<4)
04C4C6: 226C 00C0 movea.l ($c0,A4), A1
04C4CA: 700F moveq #$f, D0 ; D0=#$f
04C4CC: 12D8 move.b (A0)+, (A1)+ ; [A4+$c1] value=[((#$201000+(([A4+$c4] value)*#$5000))+(([A4+$c5] value)*#$1000))+(([A4+$c6] value)<<4)+1] value
04C4CE: 51C8 FFFC dbra D0, $4c4cc ; D0-1, if D0 <> 0 jump back to $4c4cc
04C4D2: 4E75 rts
04C4D4: 203C 0020 1000 move.l #$201000, D0 ; D0=#$201000
04C4DA: 7200 moveq #$0, D1 ; D1=#$0
04C4DC: 122C 00C4 move.b ($c4,A4), D1
04C4E0: C2FC 5000 mulu.w #$5000, D1 ; D1=([A4+$c4] value)*#$5000
04C4E4: D081 add.l D1, D0 ; D0=#$201000+(([A4+$c4] value)*#$5000)
04C4E6: 7200 moveq #$0, D1 ; D1=0
04C4E8: 122C 00C5 move.b ($c5,A4), D1
04C4EC: C2FC 1000 mulu.w #$1000, D1 ; D1=([A4+$c5] value)*#$1000
04C4F0: D081 add.l D1, D0 ; D0=(#$201000+(([A4+$c4] value)*#$5000))+(([A4+$c5] value)*#$1000)
04C4F2: 7200 moveq #$0, D1 ; D1=0
04C4F4: 122C 00C6 move.b ($c6,A4), D1
04C4F8: E989 lsl.l #4, D1 ; D1=([A4+$c6] value)<<4
04C4FA: D081 add.l D1, D0 ; D0=((#$201000+(([A4+$c4] value)*#$5000))+(([A4+$c5] value)*#$1000))+(([A4+$c6] value)<<4)
04C4FC: 4E75 rts
04C4FE: 396C 00CC 00D4 move.w ($cc,A4), ($d4,A4)
04C504: 396C 00CE 00D6 move.w ($ce,A4), ($d6,A4)
04C50A: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04C50E: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value
04C512: 4EB9 0000 5FDE jsr $5fde.l
04C518: 207C 0006 E7D8 movea.l #$6e7d8, A0 ; A0=#$6e7d8
04C51E: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C522: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C528: 4EB9 0000 5F0C jsr $5f0c.l
04C52E: 566C 00D4 addq.w #3, ($d4,A4)
04C532: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+3
04C536: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value
04C53A: 4EB9 0000 5FDE jsr $5fde.l
04C540: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C544: 122C 0070 move.b ($70,A4), D1 ; D1=[A4+$70] value
04C548: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04C54E: 4EB9 0000 5F60 jsr $5f60.l
04C554: 566C 00D4 addq.w #3, ($d4,A4) ; [A4+$cc] value+6
04C558: 7000 moveq #$0, D0 ; D0=0
04C55A: 102C 0070 move.b ($70,A4), D0 ; D0=[A4+$70] value
04C55E: E948 lsl.w #4, D0 ; D0=[A4+$70] value<<4
04C560: 43F9 0007 BD00 lea $7bd00.l, A1
04C566: D2C0 adda.w D0, A1 ; A1=$7bd00+[[A4+$70] value<<4]
04C568: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+6
04C56C: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value
04C570: 4EB9 0000 5FDE jsr $5fde.l
04C576: 2049 movea.l A1, A0 ; A0=$7bd00+[[A4+$70] value<<4]
04C578: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C57C: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C582: 4EB9 0000 5F0C jsr $5f0c.l
04C588: 5D6C 00D4 subq.w #6, ($d4,A4)
04C58C: 526C 00D6 addq.w #1, ($d6,A4)
04C590: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value
04C594: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+1
04C598: 4EB9 0000 5FDE jsr $5fde.l
04C59E: 207C 0006 E7DC movea.l #$6e7dc, A0 ; A0=[$6e7dc]
04C5A4: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C5A8: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C5AE: 4EB9 0000 5F0C jsr $5f0c.l
04C5B4: 5A6C 00D4 addq.w #5, ($d4,A4)
04C5B8: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value+5
04C5BC: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+1
04C5C0: 4EB9 0000 5FDE jsr $5fde.l
04C5C6: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C5CA: 122C 00BC move.b ($bc,A4), D1 ; lowest byte of D1=[A4+$bc] value
04C5CE: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04C5D4: 4EB9 0000 5F60 jsr $5f60.l
04C5DA: 566C 00D4 addq.w #3, ($d4,A4)
04C5DE: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value+8
04C5E2: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+1
04C5E6: 4EB9 0000 5FDE jsr $5fde.l
04C5EC: 207C 0006 E7E2 movea.l #$6e7e2, A0 ; A0=[$6e7e2]
04C5F2: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C5F6: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C5FC: 4EB9 0000 5F0C jsr $5f0c.l
04C602: 586C 00D4 addq.w #4, ($d4,A4)
04C606: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value+12
04C60A: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+1
04C60E: 4EB9 0000 5FDE jsr $5fde.l
04C614: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C618: 122C 00D1 move.b ($d1,A4), D1 ; lowest byte of D1=[A4+$d1] value
04C61C: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04C622: 4EB9 0000 5F60 jsr $5f60.l
04C628: 046C 000C 00D4 subi.w #$c, ($d4,A4)
04C62E: 546C 00D6 addq.w #2, ($d6,A4)
04C632: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value
04C636: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+3
04C63A: 4EB9 0000 5FDE jsr $5fde.l
04C640: 207C 0006 E930 movea.l #$6e930, A0 ; A0=[$6e930]
04C646: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C64A: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C650: 4EB9 0000 5F0C jsr $5f0c.l
04C656: 526C 00D6 addq.w #1, ($d6,A4)
04C65A: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value
04C65E: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+4
04C662: 4EB9 0000 5FDE jsr $5fde.l
04C668: 207C 0006 E93A movea.l #$6e93a, A0 ; A0=[$6e93a]
04C66E: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C672: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C678: 4EB9 0000 5F0C jsr $5f0c.l
04C67E: 526C 00D6 addq.w #1, ($d6,A4)
04C682: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value
04C686: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+5
04C68A: 4EB9 0000 5FDE jsr $5fde.l
04C690: 207C 0006 E944 movea.l #$6e944, A0 ; A0=[$6e944]
04C696: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C69A: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C6A0: 4EB9 0000 5F0C jsr $5f0c.l
04C6A6: 526C 00D6 addq.w #1, ($d6,A4)
04C6AA: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value
04C6AE: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+6
04C6B2: 4EB9 0000 5FDE jsr $5fde.l
04C6B8: 207C 0006 E7F2 movea.l #$6e7f2, A0 ; A0=[$6e7f2]
04C6BE: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C6C2: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C6C8: 4EB9 0000 5F0C jsr $5f0c.l
04C6CE: 066C 0009 00D4 addi.w #$9, ($d4,A4)
04C6D4: 576C 00D6 subq.w #3, ($d6,A4)
04C6D8: 2C6C 00C0 movea.l ($c0,A4), A6 ; A6=A4+$c0
04C6DC: 7E0F moveq #$f, D7 ; D7=#$f
04C6DE: 7C03 moveq #$3, D6 ; D6=#$3
04C6E0: 7A00 moveq #$0, D5 ; D5=#$0
04C6E2: 302C 00D4 move.w ($d4,A4), D0 ; lowest word of D0=[A4+$cc] value+9
04C6E6: 322C 00D6 move.w ($d6,A4), D1 ; lowest word of D1=[A4+$ce] value+3
04C6EA: 4EB9 0000 5FDE jsr $5fde.l
04C6F0: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C6F4: BA2C 00D0 cmp.b ($d0,A4), D5
04C6F8: 6600 0006 bne $4c700 ; if [A4+$d0] value=0 then skip next operation
04C6FC: 0040 8000 ori.w #$8000, D0 ; else D0=#$8000|#$f00=#$8f00
04C700: 121E move.b (A6)+, D1 ; D1=(A6) value+1
04C702: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04C708: 4EB9 0000 5F60 jsr $5f60.l
04C70E: 566C 00D4 addq.w #3, ($d4,A4) ; [A4+$d4] value=[A4+$cc] value+12
04C712: 5346 subq.w #1, D6 ; D6-1
04C714: 6A00 000E bpl $4c724 ; if D6>0 then skip to $4c724
04C718: 046C 000C 00D4 subi.w #$c, ($d4,A4) ; else [A4+$d4] value=[A4+$cc] value
04C71E: 526C 00D6 addq.w #1, ($d6,A4) ; [A4+$d6]=[A4+$ce] value+4
04C722: 7C03 moveq #$3, D6 ; D6=3
04C724: 5205 addq.b #1, D5 ; D5+1
04C726: 51CF FFBA dbra D7, $4c6e2 ; D7-1, if D7 <> 0 jump back to $4c6e2
04C72A: 046C 0009 00D4 subi.w #$9, ($d4,A4)
04C730: 526C 00D6 addq.w #1, ($d6,A4)
04C734: 7000 moveq #$0, D0 ; D0=0
04C736: 102D 3A5E move.b ($3a5e,A5), D0
04C73A: D040 add.w D0, D0
04C73C: D040 add.w D0, D0 ; D0=[A5+$3a5e] value*4
04C73E: 41FA 05C0 lea ($5c0,PC) ; ($4cd00), A0
04C742: 4E71 nop
04C744: 2E30 0000 move.l (A0,D0.w), D7 ; D7=([A5+$3a5e] value*4)+[$4cd00] value
04C748: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9
04C74C: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1
04C750: 4EB9 0000 5FDE jsr $5fde.l
04C756: 2047 movea.l D7, A0 ; A0=[([A5+$3a5e] value*4)+[$4cd00]]
04C758: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C75C: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C762: 4EB9 0000 5F0C jsr $5f0c.l
04C768: 526C 00D6 addq.w #1, ($d6,A4)
04C76C: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9
04C770: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+2
04C774: 4EB9 0000 5FDE jsr $5fde.l
04C77A: 207C 0006 E7DC movea.l #$6e7dc, A0 ; A0=[$6e7dc]
04C780: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C784: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C78A: 4EB9 0000 5F0C jsr $5f0c.l
04C790: 5A6C 00D4 addq.w #5, ($d4,A4)
04C794: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-4
04C798: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+2
04C79C: 4EB9 0000 5FDE jsr $5fde.l
04C7A2: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C7A6: 122D 3A5F move.b ($3a5f,A5), D1 ; D1=[A5+$3a5f]
04C7AA: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04C7B0: 4EB9 0000 5F60 jsr $5f60.l
04C7B6: 5B6C 00D4 subq.w #5, ($d4,A4)
04C7BA: 526C 00D6 addq.w #1, ($d6,A4)
04C7BE: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9
04C7C2: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+3
04C7C6: 4EB9 0000 5FDE jsr $5fde.l
04C7CC: 207C 0006 E7E2 movea.l #$6e7e2, A0 ; A0=[$6e7e2]
04C7D2: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C7D6: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C7DC: 4EB9 0000 5F0C jsr $5f0c.l
04C7E2: 586C 00D4 addq.w #4, ($d4,A4)
04C7E6: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-5
04C7EA: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+3
04C7EE: 4EB9 0000 5FDE jsr $5fde.l
04C7F4: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C7F8: 122D 3A61 move.b ($3a61,A5), D1 ; D1=[A5+$3a61]
04C7FC: 243C 0020 0000 move.l #$200000, D2
04C802: 4EB9 0000 5F60 jsr $5f60.l
04C808: 596C 00D4 subq.w #4, ($d4,A4)
04C80C: 526C 00D6 addq.w #1, ($d6,A4)
04C810: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9
04C814: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+4
04C818: 4EB9 0000 5FDE jsr $5fde.l
04C81E: 207C 0006 E806 movea.l #$6e806, A0 ; A0=[$6e806]
04C824: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C828: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C82E: 4EB9 0000 5F0C jsr $5f0c.l
04C834: 506C 00D4 addq.w #8, ($d4,A4)
04C838: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-1
04C83C: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+4
04C840: 4EB9 0000 5FDE jsr $5fde.l
04C846: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C84A: 122D 3A62 move.b ($3a62,A5), D1 ; D1=[A5+$3a62] value
04C84E: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04C854: 4EB9 0000 5F60 jsr $5f60.l
04C85A: 516C 00D4 subq.w #8, ($d4,A4)
04C85E: 526C 00D6 addq.w #1, ($d6,A4)
04C862: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9
04C866: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+4
04C86A: 4EB9 0000 5FDE jsr $5fde.l
04C870: 207C 0006 E810 movea.l #$6e810, A0 ; A0=[$6e810]
04C876: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C87A: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C880: 4EB9 0000 5F0C jsr $5f0c.l
04C886: 506C 00D4 addq.w #8, ($d4,A4)
04C88A: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-1
04C88E: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+4
04C892: 4EB9 0000 5FDE jsr $5fde.l
04C898: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C89C: 122D 3A63 move.b ($3a63,A5), D1 ; D1=[A5+$3a63] value
04C8A0: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04C8A6: 4EB9 0000 5F60 jsr $5f60.l
04C8AC: 516C 00D4 subq.w #8, ($d4,A4)
04C8B0: 526C 00D6 addq.w #1, ($d6,A4)
04C8B4: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9
04C8B8: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+5
04C8BC: 4EB9 0000 5FDE jsr $5fde.l
04C8C2: 207C 0006 E842 movea.l #$6e842, A0 ; A0=[#$6e842]
04C8C8: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C8CC: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C8D2: 4EB9 0000 5F0C jsr $5f0c.l
04C8D8: 066C 000A 00D4 addi.w #$a, ($d4,A4)
04C8DE: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+1
04C8E2: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+5
04C8E6: 4EB9 0000 5FDE jsr $5fde.l
04C8EC: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C8F0: 122D 3A5A move.b ($3a5a,A5), D1 ; D1=[A5+$3a5a] value
04C8F4: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04C8FA: 4EB9 0000 5F60 jsr $5f60.l
04C900: 046C 000A 00D4 subi.w #$a, ($d4,A4)
04C906: 526C 00D6 addq.w #1, ($d6,A4)
04C90A: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9
04C90E: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+6
04C912: 4EB9 0000 5FDE jsr $5fde.l
04C918: 207C 0006 E84E movea.l #$6e84e, A0 ; A0=[$6e84e]
04C91E: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C922: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C928: 4EB9 0000 5F0C jsr $5f0c.l
04C92E: 066C 000A 00D4 addi.w #$a, ($d4,A4)
04C934: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+1
04C938: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+6
04C93C: 4EB9 0000 5FDE jsr $5fde.l
04C942: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C946: 122D 3A64 move.b ($3a64,A5), D1 ; D1=[A5+$3a64] value
04C94A: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04C950: 4EB9 0000 5F60 jsr $5f60.l
04C956: 046C 000A 00D4 subi.w #$a, ($d4,A4)
04C95C: 526C 00D6 addq.w #1, ($d6,A4)
04C960: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9
04C964: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+7
04C968: 4EB9 0000 5FDE jsr $5fde.l
04C96E: 207C 0006 E85A movea.l #$6e85a, A0 ; A0=[$6e85a]
04C974: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C978: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C97E: 4EB9 0000 5F0C jsr $5f0c.l
04C984: 5A6C 00D4 addq.w #5, ($d4,A4)
04C988: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-4
04C98C: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+7
04C990: 4EB9 0000 5FDE jsr $5fde.l
04C996: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C99A: 322D 0118 move.w ($118,A5), D1 ; D1=[A5+$118] value
04C99E: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04C9A4: 4EB9 0000 5F94 jsr $5f94.l
04C9AA: 586C 00D4 addq.w #4, ($d4,A4)
04C9AE: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value
04C9B2: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+7
04C9B6: 4EB9 0000 5FDE jsr $5fde.l
04C9BC: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C9C0: 322D 011A move.w ($11a,A5), D1 ; D1=[A5+$11a] value
04C9C4: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04C9CA: 4EB9 0000 5F94 jsr $5f94.l
04C9D0: 046C 0009 00D4 subi.w #$9, ($d4,A4)
04C9D6: 526C 00D6 addq.w #1, ($d6,A4)
04C9DA: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9
04C9DE: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+8
04C9E2: 4EB9 0000 5FDE jsr $5fde.l
04C9E8: 207C 0006 E860 movea.l #$6e860, A0 ; A0=[$6e860]
04C9EE: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04C9F2: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04C9F8: 4EB9 0000 5F0C jsr $5f0c.l
04C9FE: 5A6C 00D4 addq.w #5, ($d4,A4)
04CA02: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-4
04CA06: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+8
04CA0A: 4EB9 0000 5FDE jsr $5fde.l
04CA10: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CA14: 322D 0318 move.w ($318,A5), D1 ; D1=[A5+$318] value
04CA18: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04CA1E: 4EB9 0000 5F94 jsr $5f94.l
04CA24: 586C 00D4 addq.w #4, ($d4,A4)
04CA28: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value
04CA2C: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+8
04CA30: 4EB9 0000 5FDE jsr $5fde.l
04CA36: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CA3A: 322D 031A move.w ($31a,A5), D1 ; D1=[A5+$31a] value
04CA3E: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04CA44: 4EB9 0000 5F94 jsr $5f94.l
04CA4A: 046C 0009 00D4 subi.w #$9, ($d4,A4)
04CA50: 526C 00D6 addq.w #1, ($d6,A4)
04CA54: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9
04CA58: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+9
04CA5C: 4EB9 0000 5FDE jsr $5fde.l
04CA62: 207C 0006 E866 movea.l #$6e866, A0 ; A0=[$6e866]
04CA68: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CA6C: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04CA72: 4EB9 0000 5F0C jsr $5f0c.l
04CA78: 5A6C 00D4 addq.w #5, ($d4,A4)
04CA7C: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-4
04CA80: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+9
04CA84: 4EB9 0000 5FDE jsr $5fde.l
04CA8A: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CA8E: 322D 0120 move.w ($120,A5), D1 ; D1=[A5+$120]
04CA92: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04CA98: 4EB9 0000 5F94 jsr $5f94.l
04CA9E: 586C 00D4 addq.w #4, ($d4,A4)
04CAA2: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value
04CAA6: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+9
04CAAA: 4EB9 0000 5FDE jsr $5fde.l
04CAB0: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CAB4: 322D 0122 move.w ($122,A5), D1 ; D1=[A5+$122] value
04CAB8: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04CABE: 4EB9 0000 5F94 jsr $5f94.l
04CAC4: 046C 0009 00D4 subi.w #$9, ($d4,A4)
04CACA: 526C 00D6 addq.w #1, ($d6,A4)
04CACE: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-9
04CAD2: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+10
04CAD6: 4EB9 0000 5FDE jsr $5fde.l
04CADC: 207C 0006 E86C movea.l #$6e86c, A0 ; A0=[$6e86c]
04CAE2: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CAE6: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04CAEC: 4EB9 0000 5F0C jsr $5f0c.l
04CAF2: 5A6C 00D4 addq.w #5, ($d4,A4)
04CAF6: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value-4
04CAFA: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+10
04CAFE: 4EB9 0000 5FDE jsr $5fde.l
04CB04: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CB08: 322D 0320 move.w ($320,A5), D1 ; D1=[A5+$320] value
04CB0C: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04CB12: 4EB9 0000 5F94 jsr $5f94.l
04CB18: 586C 00D4 addq.w #4, ($d4,A4)
04CB1C: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value
04CB20: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+10
04CB24: 4EB9 0000 5FDE jsr $5fde.l
04CB2A: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CB2E: 322D 0322 move.w ($322,A5), D1 ; D1=[A5+$322] value
04CB32: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04CB38: 4EB9 0000 5F94 jsr $5f94.l
04CB3E: 586C 00D4 addq.w #4, ($d4,A4)
04CB42: 046C 000A 00D6 subi.w #$a, ($d6,A4)
04CB48: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+4
04CB4C: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value
04CB50: 4EB9 0000 5FDE jsr $5fde.l
04CB56: 207C 0006 E7D8 movea.l #$6e7d8, A0 ; A0=[$6e7d8]
04CB5C: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CB60: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04CB66: 4EB9 0000 5F0C jsr $5f0c.l
04CB6C: 566C 00D4 addq.w #3, ($d4,A4)
04CB70: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+7
04CB74: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value
04CB78: 4EB9 0000 5FDE jsr $5fde.l
04CB7E: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CB82: 122C 00C4 move.b ($c4,A4), D1 ; D1=[A4+$c4] value
04CB86: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04CB8C: 4EB9 0000 5F60 jsr $5f60.l
04CB92: 576C 00D4 subq.w #3, ($d4,A4)
04CB96: 526C 00D6 addq.w #1, ($d6,A4)
04CB9A: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+4
04CB9E: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1
04CBA2: 4EB9 0000 5FDE jsr $5fde.l
04CBA8: 207C 0006 E7DC movea.l #$6e7dc, A0 ; A0=[$6e7dc]
04CBAE: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CBB2: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04CBB8: 4EB9 0000 5F0C jsr $5f0c.l
04CBBE: 5A6C 00D4 addq.w #5, ($d4,A4)
04CBC2: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+9
04CBC6: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1
04CBCA: 4EB9 0000 5FDE jsr $5fde.l
04CBD0: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CBD4: 122C 00C5 move.b ($c5,A4), D1 ; D1=[A4+$c5] value
04CBD8: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04CBDE: 4EB9 0000 5F60 jsr $5f60.l
04CBE4: 5B6C 00D4 subq.w #5, ($d4,A4)
04CBE8: 526C 00D6 addq.w #1, ($d6,A4)
04CBEC: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+4
04CBF0: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+2
04CBF4: 4EB9 0000 5FDE jsr $5fde.l
04CBFA: 207C 0006 E7E2 movea.l #$6e7e2, A0 ; A0=[$6e7e2]
04CC00: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CC04: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04CC0A: 4EB9 0000 5F0C jsr $5f0c.l
04CC10: 586C 00D4 addq.w #4, ($d4,A4)
04CC14: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+8
04CC18: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+2
04CC1C: 4EB9 0000 5FDE jsr $5fde.l
04CC22: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CC26: 122C 00C6 move.b ($c6,A4), D1 ; D1=[A4+$c6] value
04CC2A: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04CC30: 4EB9 0000 5F60 jsr $5f60.l
04CC36: 576C 00D4 subq.w #3, ($d4,A4)
04CC3A: 5A6C 00D6 addq.w #5, ($d6,A4)
04CC3E: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+5
04CC42: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+7
04CC46: 4EB9 0000 5FDE jsr $5fde.l
04CC4C: 207C 0006 E872 movea.l #$6e872, A0 ; A0=[$6e872]
04CC52: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CC56: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04CC5C: 4EB9 0000 5F0C jsr $5f0c.l
04CC62: 302D 0118 move.w ($118,A5), D0 ; D0=[A5+$118] value
04CC66: 906D 0318 sub.w ($318,A5), D0 ; D0=[A5+$118] value-[A5+$318] value
04CC6A: 4EB9 0000 2F94 jsr $2f94.l
04CC70: 1940 00C8 move.b D0, ($c8,A4) ; [A4+$c8] value=([A5+$118] value-[A5+$318] value) or -([A5+$118] value-[A5+$318] value)
04CC74: 566C 00D4 addq.w #3, ($d4,A4)
04CC78: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+8
04CC7C: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+7
04CC80: 4EB9 0000 5FDE jsr $5fde.l
04CC86: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CC8A: 122C 00C8 move.b ($c8,A4), D1 ; D1=[A4+$c8] value
04CC8E: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04CC94: 4EB9 0000 5F60 jsr $5f60.l
04CC9A: 576C 00D4 subq.w #3, ($d4,A4)
04CC9E: 546C 00D6 addq.w #2, ($d6,A4)
04CCA2: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+5
04CCA6: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+9
04CCAA: 4EB9 0000 5FDE jsr $5fde.l
04CCB0: 207C 0006 E876 movea.l #$6e876, A0 ; A0=[$6e876]
04CCB6: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CCBA: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04CCC0: 4EB9 0000 5F0C jsr $5f0c.l
04CCC6: 302D 0120 move.w ($120,A5), D0 ; D0=[A5+$120] value
04CCCA: 906D 0320 sub.w ($320,A5), D0 ; D0=[A5+$120] value-[A5+$320] value
04CCCE: 4EB9 0000 2F94 jsr $2f94.l
04CCD4: 1940 00C8 move.b D0, ($c8,A4) ; [A4+$c8] value=([A5+$120] value-[A5+$320] value) or -([A5+$120] value-[A5+$320] value)
04CCD8: 566C 00D4 addq.w #3, ($d4,A4)
04CCDC: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+8
04CCE0: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+9
04CCE4: 4EB9 0000 5FDE jsr $5fde.l
04CCEA: 303C 0F00 move.w #$f00, D0 ; lowest word of D0=#$f00
04CCEE: 122C 00C8 move.b ($c8,A4), D1 ; D1=[A4+$c8] value
04CCF2: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04CCF8: 4EB9 0000 5F60 jsr $5f60.l
04CCFE: 4E75 rts
005F60: 1601 move.b D1, D3 ; D3=[A4+$70] value
005F62: 0241 00F0 andi.w #$f0, D1
005F66: E809 lsr.b #4, D1 ; D1=([A4+$70] value&#$f0)<<4
005F68: 103B 101A move.b ($1a,PC,D1.w), D0 ; lowest byte of D0=(([A4+$70] value&#$f0)<<4)+PC+$1a
005F6C: 23C0 003C 0000 move.l D0, $3c0000.l ; send (high 2 bytes of swapped (((old [A4+$d4] value+3)<<5)+[A4+$d6] value+#$7002)+#$f00+((([A4+$70] value&#$f0)<<4)+PC+$1a)) value to REG_VRAMADDR
005F72: 0243 000F andi.w #$f, D3
005F76: 103B 300C move.b ($c,PC,D3.w), D0 ; lowest byte of D0=([A4+$70] value&3)+PC+$c
005F7A: D082 add.l D2, D0 ; D0=(high 2 bytes of swapped (((old [A4+$d4] value+3)<<5)+[A4+$d6] value+#$7002)+#$f00+(([A4+$70] value&3)+PC+$c))+#$200000
005F7C: 23C0 003C 0000 move.l D0, $3c0000.l ; send ((high 2 bytes of swapped (((old [A4+$d4] value+3)<<5)+[A4+$d6] value+#$7002)+#$f00+(([A4+$70] value&3)+PC+$c))+#$200000) value to REG_VRAMADDR
005F82: 4E75 rts
005F94: 3601 move.w D1, D3 ; D3=[A5+$118] value
005F96: E049 lsr.w #8, D1 ; D1=[A5+$118] value>>8
005F98: E809 lsr.b #4, D1 ; lowest byte of D1=(lowest byte of [A5+$118] value)>>12
005F9A: 103B 10E8 move.b (-$18,PC,D1.w), D0 ; lowest byte of D0=high byte of ([A5+$118] value>>8)+((lowest byte of [A5+$118] value)>>12)+PC-$18
005F9E: 23C0 003C 0000 move.l D0, $3c0000.l ; send (high byte of ([A5+$118] value>>8)+((lowest byte of [A5+$118] value)>>12)+PC-$18) to REG_VRAMADDR
005FA4: 3203 move.w D3, D1 ; D1=[A5+$118] value
005FA6: 0241 0F00 andi.w #$f00, D1 ; D1=[A5+$118] value&#$f00
005FAA: E049 lsr.w #8, D1 ; D1=([A5+$118] value&#$f00)>>8
005FAC: 103B 10D6 move.b (-$2a,PC,D1.w), D0 ; D0=(([A5+$118] value&#$f00)>>8)+PC-$2a
005FB0: D082 add.l D2, D0 ; D0=(([A5+$118] value&#$f00)>>8)+PC-$2a+#$200000
005FB2: 23C0 003C 0000 move.l D0, $3c0000.l ; send ((([A5+$118] value&#$f00)>>8)+PC-$2a+#$200000) to REG_VRAMADDR
005FB8: 3203 move.w D3, D1 ; D1=[A5+$118] value
005FBA: 0241 00F0 andi.w #$f0, D1 ; D1=[A5+$118] value&#$f0
005FBE: E809 lsr.b #4, D1 ; D1=([A5+$118] value&#$f0)>>4
005FC0: 103B 10C2 move.b (-$3e,PC,D1.w), D0 ; D0=(([A5+$118] value&#$f0)>>4)+PC-$3e
005FC4: D082 add.l D2, D0 ; D0=(([A5+$118] value&#$f0)>>4)+PC-$3e+#$200000
005FC6: 23C0 003C 0000 move.l D0, $3c0000.l ; send ((([A5+$118] value&#$f0)>>4)+PC-$3e+#$200000) to REG_VRAMADDR
005FCC: 0243 000F andi.w #$f, D3
005FD0: 103B 30B2 move.b (-$4e,PC,D3.w), D0 ; D0=([A5+$118] value&#$f)+PC-$4e
005FD4: D082 add.l D2, D0 ; D0=([A5+$118] value&#$f)+PC-$4e+#$200000
005FD6: 23C0 003C 0000 move.l D0, $3c0000.l ; send (([A5+$118] value&#$f)+PC-$4e+#$200000) to REG_VRAMADDR
005FDC: 4E75 rts
002F94: 4A40 tst.w D0
002F96: 6A02 bpl $2f9a
002F98: 4440 neg.w D0
002F9A: 4E75 rts
04CD6E: 4DF9 0010 FD96 lea $10fd96.l, A6 ; P1_CURRENT value moving to A6
04CD74: 4EBA 0034 jsr ($34,PC) ; ($4cdaa)
04CD78: 4E71 nop
04CD7A: 4EBA 026A jsr ($26a,PC) ; ($4cfe6)
04CD7E: 4E71 nop
04CD80: 4EBA 0348 jsr ($348,PC) ; ($4d0ca)
04CD84: 4E71 nop
04CD86: 4EBA 0224 jsr ($224,PC) ; ($4cfac)
04CD8A: 4E71 nop
04CD8C: 4E75 rts
04CDAA: 102D 39CD move.b ($39cd,A5), D0 ; D0=[A5+$39cd] value
04CDAE: 0240 000F andi.w #$f, D0 ; D0=[A5+$39cd] value&#$f
04CDB2: 41FA 0030 lea ($30,PC) ; ($4cde4), A0
04CDB6: 4E71 nop
04CDB8: 7200 moveq #$0, D1 ; D1=0
04CDBA: 1230 0000 move.b (A0,D0.w), D1 ; D1=[$4cde4] value+([A5+$39cd] value&#$f)
04CDBE: 6B00 0022 bmi $4cde2 ; if ([$4cde4] value+([A5+$39cd] value&#$f)) value is negative then end the subroutine ahead of time
04CDC2: D241 add.w D1, D1
04CDC4: D241 add.w D1, D1 ; else D1=([$4cde4] value+([A5+$39cd] value&#$f))*4
04CDC6: 41FA 002C lea ($2c,PC) ; ($4cdf4), A0
04CDCA: 4E71 nop
04CDCC: 082D 0002 39F5 btst #$2, ($39f5,A5)
04CDD2: 6700 0008 beq $4cddc ; if 3rd bit of [A5+$39f5] value is equal to 0, then skip next 2 steps
04CDD6: 41FA 002C lea ($2c,PC) ; ($4ce04), A0
04CDDA: 4E71 nop
04CDDC: 2070 1000 movea.l (A0,D1.w), A0 ; A0=(([$4cde4] value+([A5+$39cd] value&#$f))*4)+[$4cdf4] value or (([$4cde4] value+([A5+$39cd] value&#$f))*4)+[$4ce04] value
04CDE0: 4E90 jsr (A0)
04CDE2: 4E75 rts
04CFE6: 082D 0000 39F5 btst #$0, ($39f5,A5)
04CFEC: 6600 006E bne $4d05c ; if 1st bit of [A5+$39f5] value is equal to 1 then goto $4d05c subroutine
04CFF0: 082D 0004 39CD btst #$4, ($39cd,A5)
04CFF6: 6700 0012 beq $4d00a ; else if 5th bit of [A5+$39cd] value is equal to 0 then goto $4d00a subroutine
04CFFA: 206C 00C0 movea.l ($c0,A4), A0 ; A0=[A4+$c0]
04CFFE: 7000 moveq #$0, D0 ; D0=0
04D000: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value
04D004: 5230 0000 addq.b #1, (A0,D0.w) ; ([A4+$c0] value+[A4+$d0] value)+#1
04D008: 4E75 rts
04D00A: 082D 0005 39CD btst #$5, ($39cd,A5)
04D010: 6700 0012 beq $4d024 ; else if 6th bit of [A5+$39cd] value is equal to 0 then goto $4d024 subroutine
04D014: 206C 00C0 movea.l ($c0,A4), A0 ; A0=[A4+$c0]
04D018: 7000 moveq #$0, D0 ; D0=0
04D01A: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value
04D01E: 5330 0000 subq.b #1, (A0,D0.w) ; ([A4+$c0] value+[A4+$d0] value)-#1
04D022: 4E75 rts
04D024: 082D 0006 39CD btst #$6, ($39cd,A5)
04D02A: 6700 0014 beq $4d040 ; else if 7th bit of [A5+$39cd] value is equal to 0 then goto $4d040 subroutine
04D02E: 206C 00C0 movea.l ($c0,A4), A0 ; A0=[A4+$c0]
04D032: 7000 moveq #$0, D0 ; D0=0
04D034: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value
04D038: 0630 0010 0000 addi.b #$10, (A0,D0.w) ; ([A4+$c0] value+[A4+$d0] value)+#$10
04D03E: 4E75 rts
04D040: 082D 0007 39CD btst #$7, ($39cd,A5)
04D046: 6700 0012 beq $4d05a ; else if 8th bit of [A5+$39cd] value is equal to 0 then end the subroutine ahead of time
04D04A: 206C 00C0 movea.l ($c0,A4), A0 ; A0=[A4+$c0]
04D04E: 7000 moveq #$0, D0 ; D0=0
04D050: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value
04D054: 0430 0010 0000 subi.b #$10, (A0,D0.w) ; ([A4+$c0] value+[A4+$d0] value)-#$10
04D05A: 4E75 rts
04D05C: 082D 0001 39F6 btst #$1, ($39f6,A5)
04D062: 6700 0026 beq $4d08a ; if 2nd bit of [A5+$39f6] value is equal to 0 then goto $4d08a subroutine
04D066: 06AC 0000 0400 00C0 addi.l #$400, ($c0,A4)) ; else [A4+$c0] value+#$400
04D06E: 522C 0070 addq.b #1, ($70,A4) ; [A4+$70] value+1
04D072: 0C2C 0019 0070 cmpi.b #$19, ($70,A4)
04D078: 6300 004E bls $4d0c8 ; if [A4+$70] value<=#$19 then end all subroutines in this quote
04D07C: 532C 0070 subq.b #1, ($70,A4)
04D080: 04AC 0000 0400 00C0 subi.l #$400, ($c0,A4) ; else restore old values of [A4+$c0] and [A4+$70]
04D088: 4E75 rts
04D08A: 082D 0003 39F6 btst #$3, ($39f6,A5)
04D090: 6700 0020 beq $4d0b2 ; if 4th bit of [A5+$39f6] value is equal to 0 then goto $4d0b2 subroutine
04D094: 04AC 0000 0400 00C0 subi.l #$400, ($c0,A4) ; else [A4+$c0] value-#$400
04D09C: 532C 0070 subq.b #1, ($70,A4) ; [A4+$70] value-1
04D0A0: 6400 0026 bcc $4d0c8 ; if [A4+$70] value>=1 then end all subroutines in this quote
04D0A4: 522C 0070 addq.b #1, ($70,A4)
04D0A8: 06AC 0000 0400 00C0 addi.l #$400, ($c0,A4) ; else restore old values of [A4+$c0] and [A4+$70]
04D0B0: 4E75 rts
04D0B2: 082D 0004 39CD btst #$4, ($39cd,A5)
04D0B8: 6700 0004 beq $4d0be ; if 5th bit of [A5+$39cd] value is equal to 0 then goto $4d0be subroutine
04D0BC: 4E75 rts
04D0BE: 082D 0005 39CD btst #$5, ($39cd,A5)
04D0C4: 6700 0002 beq $4d0c8 ; if 5th bit of [A5+$39cd] value is equal to 0 then goto $4d0c8 subroutine
04D0C8: 4E75 rts
04D0CA: 396C 00CC 00D4 move.w ($cc,A4), ($d4,A4)
04D0D0: 396C 00CE 00D6 move.w ($ce,A4), ($d6,A4)
04D0D6: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04D0DA: 322C 00D6 move.w ($d6,A4), D1 ; D0=[A4+$ce] value
04D0DE: 4EB9 0000 5FDE jsr $5fde.l
04D0E4: 207C 0006 E7D8 movea.l #$6e7d8, A0 ; A0=[$6e7d8]
04D0EA: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D0EE: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04D0F4: 4EB9 0000 5F0C jsr $5f0c.l
04D0FA: 566C 00D4 addq.w #3, ($d4,A4)
04D0FE: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+3
04D102: 322C 00D6 move.w ($d6,A4), D1 ; D0=[A4+$ce] value
04D106: 4EB9 0000 5FDE jsr $5fde.l
04D10C: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D110: 122C 0070 move.b ($70,A4), D1 ; D1=[A4+$70] value
04D114: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04D11A: 4EB9 0000 5F60 jsr $5f60.l
04D120: 576C 00D4 subq.w #3, ($d4,A4)
04D124: 526C 00D6 addq.w #1, ($d6,A4)
04D128: 7000 moveq #$0, D0 ; D0=0
04D12A: 102C 0070 move.b ($70,A4), D0 ; D0=[A4+$70] value
04D12E: E948 lsl.w #4, D0 ; D0=[A4+$70] value<<4
04D130: 43F9 0007 BD00 lea $7bd00.l, A1 ; A1=[$7bd00]
04D136: D2C0 adda.w D0, A1 ; A1=[$7bd00 +([A4+$70] value<<4)]
04D138: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04D13C: 322C 00D6 move.w ($d6,A4), D1 ; D0=[A4+$ce] value+1
04D140: 4EB9 0000 5FDE jsr $5fde.l
04D146: 2049 movea.l A1, A0 ; A0=[$7bd00 +([A4+$70] value<<4)]
04D148: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D14C: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04D152: 4EB9 0000 5F0C jsr $5f0c.l
04D158: 526C 00D6 addq.w #1, ($d6,A4)
04D15C: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04D160: 322C 00D6 move.w ($d6,A4), D1 ; D0=[A4+$ce] value+2
04D164: 4EB9 0000 5FDE jsr $5fde.l
04D16A: 207C 0006 E806 movea.l #$6e806, A0 ; A0=[$6e806]
04D170: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D174: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04D17A: 4EB9 0000 5F0C jsr $5f0c.l
04D180: 506C 00D4 addq.w #8, ($d4,A4)
04D184: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+8
04D188: 322C 00D6 move.w ($d6,A4), D1 ; D0=[A4+$ce] value+2
04D18C: 4EB9 0000 5FDE jsr $5fde.l
04D192: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D196: 122C 00D1 move.b ($d1,A4), D1 ; D1=[A4+$d1] value
04D19A: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04D1A0: 4EB9 0000 5F60 jsr $5f60.l
04D1A6: 046C 0008 00D4 subi.w #$8, ($d4,A4)
04D1AC: 546C 00D6 addq.w #2, ($d6,A4)
04D1B0: 202C 00C0 move.l ($c0,A4), D0 ; D0=[A4+$c0] value
04D1B4: 0240 FC00 andi.w #$fc00, D0 ; D0=[A4+$c0] value&#$fc00
04D1B8: 7200 moveq #$0, D1 ; D1=0
04D1BA: 122C 00D3 move.b ($d3,A4), D1 ; D1=[A4+$d3] value
04D1BE: D241 add.w D1, D1
04D1C0: D241 add.w D1, D1 ; D1=[A4+$d3] value*4
04D1C2: D081 add.l D1, D0 ; D0=([A4+$c0] value&#$fc00)+([A4+$d3] value*4)
04D1C4: 2C40 movea.l D0, A6 ; A6=[([A4+$c0] value&#$fc00)+([A4+$d3] value*4)]
04D1C6: 7E0F moveq #$f, D7 ; D7=#$f
04D1C8: 7C03 moveq #$3, D6 ; D6=#$3
04D1CA: 7A00 moveq #$0, D5 ; D5=0
04D1CC: 7800 moveq #$0, D4 ; D4=0
04D1CE: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04D1D2: 322C 00D6 move.w ($d6,A4), D1 ; D0=[A4+$ce] value+4
04D1D6: 4EB9 0000 5FDE jsr $5fde.l
04D1DC: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D1E0: B82C 00D0 cmp.b ($d0,A4), D4
04D1E4: 6600 000E bne $4d1f4 ; if [A4+$d0] value!=0 then skip next 3 steps
04D1E8: BA2C 00D2 cmp.b ($d2,A4), D5
04D1EC: 6600 0006 bne $4d1f4 ; else if [A4+$d2] value!=0 then skip next step
04D1F0: 0040 8000 ori.w #$8000, D0 ; else D0=#$8000|#$f00=#$8f00
04D1F4: 121E move.b (A6)+, D1 ; D1=[([A4+$c0] value&#$fc00)+([A4+$d3] value*4)+1] value
04D1F6: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04D1FC: 4EB9 0000 5F60 jsr $5f60.l
04D202: 566C 00D4 addq.w #3, ($d4,A4)
04D206: 5244 addq.w #1, D4 ; D4=1
04D208: 5346 subq.w #1, D6 ; D6=2
04D20A: 6A00 0012 bpl $4d21e ; Here is begin of the cycle. The next 5 steps will use to be skipped while D6 is positive.
04D20E: 046C 000C 00D4 subi.w #$c, ($d4,A4)
04D214: 526C 00D6 addq.w #1, ($d6,A4)
04D218: 7800 moveq #$0, D4 ; D4=0
04D21A: 5245 addq.w #1, D5 ; D5+1
04D21C: 7C03 moveq #$3, D6 ; D6=3
04D21E: 51CF FFAE dbra D7, $4d1ce ; D7-1, if D7 <> 0 jump back to $4d1ce
04D222: 4E75 rts
04CFAC: 082D 0003 39F5 btst #$3, ($39f5,A5)
04CFB2: 6700 0030 beq $4cfe4 ; if 4th bit of [A5+$39f5] value is equal to 0 then end the subroutine ahead of time
04CFB6: 082D 0002 39F6 btst #$2, ($39f6,A5)
04CFBC: 6700 0026 beq $4cfe4 ; if 3rd bit of [A5+$39f6] value is equal to 0 then end the subroutine ahead of time
04CFC0: 206C 0084 movea.l ($84,A4), A0 ; A0=[A4+$84]
04CFC4: 4228 00C9 clr.b ($c9,A0) ; [A0+$c9] value=0
04CFC8: 0028 0001 00C9 ori.b #$1, ($c9,A0) ; [A0+$c9] value=0|1=1
04CFCE: 302C 00CC move.w ($cc,A4), D0 ; D0=[A4+$cc] value
04CFD2: 322C 00CE move.w ($ce,A4), D1 ; D1=[A4+$ce] value
04CFD6: 343C 000F move.w #$f, D2 ; D2=#$f
04CFDA: 363C 0007 move.w #$7, D3 ; D3=#$7
04CFDE: 4EB9 0000 5FEA jsr $5fea.l
04CFE4: 4E75 rts
04D28A: 4DF9 0010 FD96 lea $10fd96.l, A6 ; P1_CURRENT value moving to A6
04D290: 4EBA 0034 jsr ($34,PC) ; ($4d2c6)
04D294: 4E71 nop
04D296: 4EBA 0254 jsr ($254,PC) ; ($4d4ec)
04D29A: 4E71 nop
04D29C: 4EBA 0360 jsr ($360,PC) ; ($4d5fe)
04D2A0: 4E71 nop
04D2A2: 4EBA 020E jsr ($20e,PC) ; ($4d4b2)
04D2A6: 4E71 nop
04D2A8: 4E75 rts
04D2C6: 102D 39CD move.b ($39cd,A5), D0 ; D0=[A5+$39cd] value
04D2CA: 0240 000F andi.w #$f, D0 ; D0=[A5+$39cd] value&#$f
04D2CE: 41FA 0030 lea ($30,PC) ; ($4d300), A0
04D2D2: 4E71 nop
04D2D4: 7200 moveq #$0, D1 ; D1=0
04D2D6: 1230 0000 move.b (A0,D0.w), D1 ; D1=([A5+$39cd] value&#$f)+$ff02
04D2DA: 6B00 0022 bmi $4d2fe ; if ([A5+$39cd] value&#$f)+$ff02 is negative then end the subroutime ahead of time
04D2DE: D241 add.w D1, D1
04D2E0: D241 add.w D1, D1 ; else D1=(([A5+$39cd] value&#$f)+$ff02)*4
04D2E2: 41FA 002C lea ($2c,PC) ; ($4d310), A0
04D2E6: 4E71 nop
04D2E8: 082D 0002 39F5 btst #$2, ($39f5,A5)
04D2EE: 6700 0008 beq $4d2f8 ; if 3rd bit of [A5+$39f5] value is equal to 0 then skip next 2 steps
04D2F2: 41FA 002C lea ($2c,PC) ; ($4d320), A0
04D2F6: 4E71 nop
04D2F8: 2070 1000 movea.l (A0,D1.w), A0 ; A0=[((([A5+$39cd] value&#$f)+$ff02)*4)+$4d330] or [((([A5+$39cd] value&#$f)+$ff02)*4)+$4d41a]
04D2FC: 4E90 jsr (A0)
04D2FE: 4E75 rts
04D4EC: 082D 0000 39F5 btst #$0, ($39f5,A5)
04D4F2: 6600 0082 bne $4d576 ; if 1st bit of [A5+$39f5] value is equal to 0 the goto $4d576 subroutine
04D4F6: 082D 0004 39CD btst #$4, ($39cd,A5)
04D4FC: 6700 000E beq $4d50c ; if 5th bit of [A5+$39f5] value is equal to 0 then goto $4d50c subroutine
04D500: 4EBA 05AA jsr ($5aa,PC) ; ($4daac)
04D504: 4E71 nop
04D506: 2040 movea.l D0, A0 ; A0=[([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value]
04D508: 5210 addq.b #1, (A0) ; [([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value]+1
04D50A: 4E75 rts
04D5FE: 396C 00CC 00D4 move.w ($cc,A4), ($d4,A4)
04D604: 396C 00CE 00D6 move.w ($ce,A4), ($d6,A4)
04D60A: 7000 moveq #$0, D0 ; D0=0
04D60C: 102C 00D3 move.b ($d3,A4), D0 ; D0=[A4+$d3] value
04D610: E948 lsl.w #4, D0 ; D0=[A4+$d3] value<<4
04D612: 43F9 0006 E964 lea $6e964.l, A1 ; A1=[$6e964]
04D618: D2C0 adda.w D0, A1 ; A1=[$6e964+([A4+$d3] value<<4)]
04D61A: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04D61E: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value
04D622: 4EB9 0000 5FDE jsr $5fde.l
04D628: 2049 movea.l A1, A0 ; A0=[$6e964+([A4+$d3] value<<4)]
04D62A: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D62E: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04D634: 4EB9 0000 5F0C jsr $5f0c.l
04D63A: 526C 00D6 addq.w #1, ($d6,A4)
04D63E: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04D642: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+1
04D646: 207C 0006 E838 movea.l #$6e838, A0 ; A0=[$6e838]
04D64C: 343C 0F00 move.w #$f00, D2 ; D2=#$f00
04D650: 363C 0001 move.w #$1, D3 ; D3=1
04D654: 4EB9 0000 5F22 jsr $5f22.l
04D65A: 586C 00D4 addq.w #4, ($d4,A4)
04D65E: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+4
04D662: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+1
04D666: 4EB9 0000 5FDE jsr $5fde.l
04D66C: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D670: 122C 0071 move.b ($71,A4), D1 ; D1=[A4+$71] value
04D674: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04D67A: 4EB9 0000 5F60 jsr $5f60.l
04D680: 566C 00D4 addq.w #3, ($d4,A4)
04D684: 302C 0070 move.w ($70,A4), D0 ; D0=[A4+$70] value
04D688: E948 lsl.w #4, D0 ; D0=[A4+$70] value<<4
04D68A: 43F9 0007 BD00 lea $7bd00.l, A1 ; A1=[$7bd00]
04D690: D2C0 adda.w D0, A1 ; A1=[$7bd00+([A4+$70] value<<4)]
04D692: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+7
04D696: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+1
04D69A: 4EB9 0000 5FDE jsr $5fde.l
04D6A0: 2049 movea.l A1, A0 ; A0=[$7bd00+([A4+$70] value<<4)]
04D6A2: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D6A6: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04D6AC: 4EB9 0000 5F0C jsr $5f0c.l
04D6B2: 576C 00D4 subq.w #3, ($d4,A4)
04D6B6: 526C 00D6 addq.w #1, ($d6,A4)
04D6BA: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+4
04D6BE: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+2
04D6C2: 4EB9 0000 5FDE jsr $5fde.l
04D6C8: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D6CC: 122C 00D1 move.b ($d1,A4), D1 ; D1=[A4+$d1] value
04D6D0: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04D6D6: 4EB9 0000 5F60 jsr $5f60.l
04D6DC: 566C 00D4 addq.w #3, ($d4,A4)
04D6E0: 7000 moveq #$0, D0 ; D0=0
04D6E2: 102C 00D1 move.b ($d1,A4), D0 ; D0=[A4+$d1] value
04D6E6: E948 lsl.w #4, D0 ; D0=[A4+$d1] value<<4
04D6E8: 43F9 0007 BD00 lea $7bd00.l, A1 ; A1=[$7bd00]
04D6EE: D2C0 adda.w D0, A1 ; A1=[$7bd00+([A4+$d1] value<<4)]
04D6F0: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+7
04D6F4: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+2
04D6F8: 4EB9 0000 5FDE jsr $5fde.l
04D6FE: 2049 movea.l A1, A0 ; A0=[$7bd00+([A4+$d1] value<<4)]
04D700: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D704: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04D70A: 4EB9 0000 5F0C jsr $5f0c.l
04D710: 5F6C 00D4 subq.w #7, ($d4,A4)
04D714: 546C 00D6 addq.w #2, ($d6,A4)
04D718: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04D71C: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+4
04D720: 343C 000D move.w #$d, D2 ; D2=#$d
04D724: 363C 0007 move.w #$7, D3 ; D3=7
04D728: 4EB9 0000 5FEA jsr $5fea.l
04D72E: 202C 00C0 move.l ($c0,A4), D0 ; D0=[A4+$c0] value
04D732: D0AC 00C4 add.l ($c4,A4), D0 ; D0=[A4+$c0] value+[A4+$c4] value
04D736: 7200 moveq #$0, D1 ; D1=0
04D738: 122C 00C8 move.b ($c8,A4), D1 ; D1=[A4+$c8] value
04D73C: C2EC 0070 mulu.w ($70,A4), D1 ; D1=[A4+$c8] value*[A4+$70] value
04D740: C2FC 001A mulu.w #$1a, D1 ; D1=[A4+$c8] value*[A4+$70] value*#$1a
04D744: D081 add.l D1, D0 ; D0=([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)
04D746: 7200 moveq #$0, D1 ; D1=0
04D748: 7400 moveq #$0, D2 ; D2=0
04D74A: 122C 00C9 move.b ($c9,A4), D1 ; D1=[A4+$c9] value
04D74E: 142C 00C8 move.b ($c8,A4), D2 ; D2=[A4+$c8] value
04D752: C2C2 mulu.w D2, D1 ; D1=[A4+$c9] value*[A4+$c8] value
04D754: D081 add.l D1, D0 ; D0=([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c9] value*[A4+$c8] value)
04D756: 2C40 movea.l D0, A6 ; A6=[([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c9] value*[A4+$c8] value)]
04D758: 7E00 moveq #$0, D7 ; D7=0
04D75A: 1E2C 00C8 move.b ($c8,A4), D7 ; D7=[A4+$c8] value
04D75E: CEFC 0008 mulu.w #$8, D7 ; D7=[A4+$c8] value*8
04D762: 5347 subq.w #1, D7 ; D7=([A4+$c8] value*8)-1
04D764: 1C2C 00C8 move.b ($c8,A4), D6 ; D6=[A4+$c8] value
04D768: 7A00 moveq #$0, D5 ; D5=0
04D76A: 7800 moveq #$0, D4 ; D4=0
04D76C: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04D770: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+4
04D774: 4EB9 0000 5FDE jsr $5fde.l
04D77A: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D77E: B82C 00D0 cmp.b ($d0,A4), D4
04D782: 6600 000E bne $4d792 ; if [A4+$d0] value!=0 then skip next 3 steps
04D786: BA2C 00D2 cmp.b ($d2,A4), D5
04D78A: 6600 0006 bne $4d792 ; else if [A4+$d2] value!=0 then skip next 1 steps
04D78E: 0040 8000 ori.w #$8000, D0 ; else D0=[A4+$cc] value|#$8000
04D792: 121E move.b (A6)+, D1 ; D1=[([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c9] value*[A4+$c8] value)]+1
04D794: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04D79A: 4EB9 0000 5F60 jsr $5f60.l
04D7A0: 566C 00D4 addq.w #3, ($d4,A4)
04D7A4: 5244 addq.w #1, D4 ; D4=1
04D7A6: 5306 subq.b #1, D6 ; D6=[A4+$c8] value-1
04D7A8: 6600 001C bne $4d7c6 ; if [A4+$c8] value!=1 then skip to $4d7c6
04D7AC: 7000 moveq #$0, D0 ; else D0=0
04D7AE: 102C 00C8 move.b ($c8,A4), D0 ; D0=[A4+$c8] value
04D7B2: C0FC 0003 mulu.w #$3, D0 ; D0=[A4+$c8] value*3
04D7B6: 916C 00D4 sub.w D0, ($d4,A4) ; ([A4+$cc] value+3)-([A4+$c8] value*3)
04D7BA: 526C 00D6 addq.w #1, ($d6,A4)
04D7BE: 7800 moveq #$0, D4 ; D4=0
04D7C0: 5245 addq.w #1, D5 ; D5=1
04D7C2: 1C2C 00C8 move.b ($c8,A4), D6 ; D6=[A4+$c8] value
04D7C6: 51CF FFA4 dbra D7, $4d76c ; (([A4+$c8] value*8)-1)-1, if ([A4+$c8] value*8)-1<>0 then jump back to $4d76c
04D7CA: 066C 0001 00D6 addi.w #$1, ($d6,A4)
04D7D0: 302C 00D4 move.w ($d4,A4), D0
04D7D4: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1
04D7D8: 4EB9 0000 5FDE jsr $5fde.l
04D7DE: 207C 0006 E85A movea.l #$6e85a, A0 ; A0=[#$6e85a]
04D7E4: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D7E8: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04D7EE: 4EB9 0000 5F0C jsr $5f0c.l
04D7F4: 5A6C 00D4 addq.w #5, ($d4,A4)
04D7F8: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+5
04D7FC: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1
04D800: 4EB9 0000 5FDE jsr $5fde.l
04D806: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D80A: 322D 0118 move.w ($118,A5), D1 ; D1=[A5+$118] value
04D80E: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04D814: 4EB9 0000 5F94 jsr $5f94.l
04D81A: 586C 00D4 addq.w #4, ($d4,A4)
04D81E: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+9
04D822: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1
04D826: 4EB9 0000 5FDE jsr $5fde.l
04D82C: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D830: 322D 011A move.w ($11a,A5), D1 ; D1=[A5+$11a] value
04D834: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04D83A: 4EB9 0000 5F94 jsr $5f94.l
04D840: 046C 0009 00D4 subi.w #$9, ($d4,A4)
04D846: 526C 00D6 addq.w #1, ($d6,A4)
04D84A: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value
04D84E: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+2
04D852: 4EB9 0000 5FDE jsr $5fde.l
04D858: 207C 0006 E860 movea.l #$6e860, A0 ; A0=[#$6e860]
04D85E: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D862: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04D868: 4EB9 0000 5F0C jsr $5f0c.l
04D86E: 5A6C 00D4 addq.w #5, ($d4,A4)
04D872: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+5
04D876: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+2
04D87A: 4EB9 0000 5FDE jsr $5fde.l
04D880: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D884: 322D 0318 move.w ($318,A5), D1 ; D1=[A5+$318] value
04D888: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04D88E: 4EB9 0000 5F94 jsr $5f94.l
04D894: 586C 00D4 addq.w #4, ($d4,A4)
04D898: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+9
04D89C: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+2
04D8A0: 4EB9 0000 5FDE jsr $5fde.l
04D8A6: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D8AA: 322D 031A move.w ($31a,A5), D1 ; D1=[A5+$31a] value
04D8AE: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04D8B4: 4EB9 0000 5F94 jsr $5f94.l
04D8BA: 046C 0009 00D4 subi.w #$9, ($d4,A4)
04D8C0: 526C 00D6 addq.w #1, ($d6,A4)
04D8C4: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value
04D8C8: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+3
04D8CC: 4EB9 0000 5FDE jsr $5fde.l
04D8D2: 207C 0006 E866 movea.l #$6e866, A0 ; A0=[#$6e866]
04D8D8: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D8DC: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04D8E2: 4EB9 0000 5F0C jsr $5f0c.l
04D8E8: 5A6C 00D4 addq.w #5, ($d4,A4)
04D8EC: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+5
04D8F0: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+3
04D8F4: 4EB9 0000 5FDE jsr $5fde.l
04D8FA: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D8FE: 322D 0120 move.w ($120,A5), D1 ; D1=[A5+$120] value
04D902: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04D908: 4EB9 0000 5F94 jsr $5f94.l
04D90E: 586C 00D4 addq.w #4, ($d4,A4)
04D912: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+9
04D916: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+3
04D91A: 4EB9 0000 5FDE jsr $5fde.l
04D920: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D924: 322D 0122 move.w ($122,A5), D1 ; D1=[A5+$122] value
04D928: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04D92E: 4EB9 0000 5F94 jsr $5f94.l
04D934: 046C 0009 00D4 subi.w #$9, ($d4,A4)
04D93A: 526C 00D6 addq.w #1, ($d6,A4)
04D93E: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value
04D942: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+4
04D946: 4EB9 0000 5FDE jsr $5fde.l
04D94C: 207C 0006 E86C movea.l #$6e86c, A0 ; A0=[#$6e86c]
04D952: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D956: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04D95C: 4EB9 0000 5F0C jsr $5f0c.l
04D962: 5A6C 00D4 addq.w #5, ($d4,A4)
04D966: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+5
04D96A: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+4
04D96E: 4EB9 0000 5FDE jsr $5fde.l
04D974: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D978: 322D 0320 move.w ($320,A5), D1 ; D1=[A5+$320] value
04D97C: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04D982: 4EB9 0000 5F94 jsr $5f94.l
04D988: 586C 00D4 addq.w #4, ($d4,A4)
04D98C: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+9
04D990: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+4
04D994: 4EB9 0000 5FDE jsr $5fde.l
04D99A: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D99E: 322D 0322 move.w ($322,A5), D1 ; D1=[A5+$322] value
04D9A2: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04D9A8: 4EB9 0000 5F94 jsr $5f94.l
04D9AE: 066C 0005 00D4 addi.w #$5, ($d4,A4)
04D9B4: 576C 00D6 subq.w #3, ($d6,A4)
04D9B8: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+14
04D9BC: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1
04D9C0: 4EB9 0000 5FDE jsr $5fde.l
04D9C6: 207C 0006 E872 movea.l #$6e872, A0 ; A0=[#$6e872]
04D9CC: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04D9D0: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04D9D6: 4EB9 0000 5F0C jsr $5f0c.l
04D9DC: 302D 0118 move.w ($118,A5), D0 ; D0=[A5+$118] value
04D9E0: 906D 0318 sub.w ($318,A5), D0 ; D0=[A5+$118] value-[A5+$318] value
04D9E4: 4EB9 0000 2F94 jsr $2f94.l
04D9EA: 1940 0050 move.b D0, ($50,A4) ; [A4+$50] value=[A5+$118] value-[A5+$318] value or -([A5+$118] value-[A5+$318] value)
04D9EE: 566C 00D4 addq.w #3, ($d4,A4)
04D9F2: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+17
04D9F6: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+1
04D9FA: 4EB9 0000 5FDE jsr $5fde.l
04DA00: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04DA04: 122C 0050 move.b ($50,A4), D1 ; D1=[A5+$118] value-[A5+$318] value or -([A5+$118] value-[A5+$318] value)
04DA08: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04DA0E: 4EB9 0000 5F60 jsr $5f60.l
04DA14: 576C 00D4 subq.w #3, ($d4,A4)
04DA18: 546C 00D6 addq.w #2, ($d6,A4)
04DA1C: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+14
04DA20: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+3
04DA24: 4EB9 0000 5FDE jsr $5fde.l
04DA2A: 207C 0006 E876 movea.l #$6e876, A0 ; A0=[#$6e876]
04DA30: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04DA34: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04DA3A: 4EB9 0000 5F0C jsr $5f0c.l
04DA40: 302D 0120 move.w ($120,A5), D0 ; D0=[A5+$120] value
04DA44: 906D 0320 sub.w ($320,A5), D0 ; D0=[A5+$120] value-[A5+$320] value
04DA48: 4EB9 0000 2F94 jsr $2f94.l
04DA4E: 1940 0050 move.b D0, ($50,A4) ; [A4+$50] value=[A5+$120] value-[A5+$320] value or -([A5+$120] value-[A5+$320] value)
04DA52: 566C 00D4 addq.w #3, ($d4,A4)
04DA56: 302C 00D4 move.w ($d4,A4), D0 ; D0=old [A4+$d4] value+17
04DA5A: 322C 00D6 move.w ($d6,A4), D1 ; D1=old [A4+$d6] value+3
04DA5E: 4EB9 0000 5FDE jsr $5fde.l
04DA64: 303C 0F00 move.w #$f00, D0 ; D0=#$f00
04DA68: 122C 0050 move.b ($50,A4), D1 ; D1=[A5+$120] value-[A5+$320] value or -([A5+$120] value-[A5+$320] value)
04DA6C: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04DA72: 4EB9 0000 5F60 jsr $5f60.l
04DA78: 4E75 rts
04D4B2: 082D 0003 39F5 btst #$3, ($39f5,A5)
04D4B8: 6700 0030 beq $4d4ea ; if 4th bit of [A5+$39f5] value is equal to 0 then end the subroutine ahead of time
04D4BC: 082D 0002 39F6 btst #$2, ($39f6,A5)
04D4C2: 6700 0026 beq $4d4ea ; else if 3rd bit of [A5+$39f6] value is equal to 0 then end the subroutine ahead of time
04D4C6: 206C 0084 movea.l ($84,A4), A0 ; else A0=[A4+$84]
04D4CA: 4228 00C9 clr.b ($c9,A0) ; [A4+14D] value=0
04D4CE: 0028 0001 00C9 ori.b #$1, ($c9,A0) ; [A4+14D] value=0|1=1
04D4D4: 302C 00CC move.w ($cc,A4), D0 ; D0=[A4+$cc] value
04D4D8: 322C 00CE move.w ($ce,A4), D1 ; D1=[A4+$ce] value
04D4DC: 343C 0015 move.w #$15, D2 ; D2=#$15
04D4E0: 363C 0010 move.w #$10, D3 ; D3=#$10
04D4E4: 4EB9 0000 5FEA jsr $5fea.l
04D4EA: 4E75 rts
04D300: FF02 dc.w $ff02; opcode 1111
04D310: 0004 D330 ori.b #$30, D4
04D320: 0004 D41A ori.b #$1a, D4
04D576: 082D 0004 39CD btst #$4, ($39cd,A5)
04D57C: 6700 0010 beq $4d58e ; if 5th bit of [A5+$39cd] value is equal to 0 then goto $4d58e, else...
04D580: 4EBA 052A jsr ($52a,PC) ; ($4daac)
04D584: 4E71 nop
04D586: 2040 movea.l D0, A0 ; A0=[([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value]
04D588: 0610 0010 addi.b #$10, (A0) ; [([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value]+#$10
04D58C: 4E75 rts
04D58E: 082D 0005 39CD btst #$5, ($39cd,A5)
04D594: 6700 0010 beq $4d5a6 ; if 6th bit of [A5+$39cd] value is equal to 0 then goto $4d5a6, else...
04D598: 4EBA 0512 jsr ($512,PC) ; ($4daac)
04D59C: 4E71 nop
04D59E: 2040 movea.l D0, A0 ; A0=[([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value]
04D5A0: 0410 0010 subi.b #$10, (A0) ; [([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value]-#$10
04D5A4: 4E75 rts
04D5A6: 082D 0006 39CD btst #$6, ($39cd,A5)
04D5AC: 6700 0018 beq $4d5c6 ; if 7th bit of [A5+$39cd] value is equal to 0 then goto $4d5c6, else...
04D5B0: 4EBA 0046 jsr ($46,PC) ; ($4d5f8)
04D5B4: 4E71 nop
04D5B6: 536C 0070 subq.w #1, ($70,A4)
04D5BA: 6400 0034 bcc $4d5f0 ; if [A4+$70] value>=1 then end the subroutine ahead of time
04D5BE: 397C 0019 0070 move.w #$19, ($70,A4) ; else [A4+$70] value=#$19
04D5C4: 4E75 rts
04D5C6: 082D 0007 39CD btst #$7, ($39cd,A5)
04D5CC: 6700 0022 beq $4d5f0 ; if 8th bit of [A5+$39cd] value is equal to 0 then end the subroutine ahead of time, else...
04D5D0: 4EBA 0020 jsr ($20,PC) ; ($4d5f2)
04D5D4: 4E71 nop
04D5D6: 532C 00D3 subq.b #1, ($d3,A4)
04D5DA: 6400 0008 bcc $4d5e4 ; if [A4+$d3] value>=1 then skip next step
04D5DE: 197C 0007 00D3 move.b #$7, ($d3,A4) ; else [A4+$d3] value=7
04D5E4: 4EBA 0494 jsr ($494,PC) ; ($4da7a)
04D5E8: 4E71 nop
04D5EA: 4EBA 04AC jsr ($4ac,PC) ; ($4da98)
04D5EE: 4E71 nop
04D5F0: 4E75 rts
04D5F2: 422C 00D0 clr.b ($d0,A4)
04D5F6: 4E75 rts
04D5F8: 422C 00D0 clr.b ($d0,A4)
04D5FC: 4E75 rts
04DA7A: 7000 moveq #$0, D0 ; D0=0
04DA7C: 7200 moveq #$0, D1 ; D1=0
04DA7E: 102C 00D3 move.b ($d3,A4), D0 ; D0=[A4+$d3] value
04DA82: 41FA 005A lea ($5a,PC) ; ($4dade), A0
04DA86: 4E71 nop
04DA88: 5300 subq.b #1, D0
04DA8A: 6500 0006 bcs $4da92 ; if [A4+$d3] value<1 then skip next 2 steps
04DA8E: D298 add.l (A0)+, D1 ; else D1=[$0a91]=#$42
04DA90: 60F6 bra $4da88 ; here is a begin of cycle, and it will continue till [A4+$d3] value became less than 1
04DA92: 2941 00C4 move.l D1, ($c4,A4)
04DA96: 4E75 rts
04DA98: 7000 moveq #$0, D0 ; D0=0
04DA9A: 102C 00D3 move.b ($d3,A4), D0 ; D0=[A4+$d3] value
04DA9E: 41FA 005E lea ($5e,PC) ; ($4dafe), A0
04DAA2: 4E71 nop
04DAA4: 1970 0000 00C8 move.b (A0,D0.w), ($c8,A4) ; [A4+$c8] value=[A4+$d3] value+#$0404
04DAAA: 4E75 rts
04DADE: 0000 0A90 ori.b #$90, D0
000A90: 4842 swap D2
04DAFE: 0404 0404 subi.b #$4, D4
04DAAC: 202C 00C0 move.l ($c0,A4), D0 ; D0=[A4+$c0] value
04DAB0: D0AC 00C4 add.l ($c4,A4), D0 ; D0=[A4+$c0] value+[A4+$c4] value
04DAB4: 7200 moveq #$0, D1 ; D1=0
04DAB6: 122C 00C8 move.b ($c8,A4), D1 ; D1=[A4+$c8] value
04DABA: C2EC 0070 mulu.w ($70,A4), D1 ; D1=[A4+$c8] value*[A4+$70] value
04DABE: C2FC 001A mulu.w #$1a, D1 ; D1=[A4+$c8] value*[A4+$70] value*#$1a
04DAC2: D081 add.l D1, D0 ; D0=([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)
04DAC4: 7200 moveq #$0, D1 ; D1=0
04DAC6: 7400 moveq #$0, D2 ; D2=0
04DAC8: 122C 00C8 move.b ($c8,A4), D1 ; D1=[A4+$c8] value
04DACC: 142C 00D1 move.b ($d1,A4), D2 ; D2=[A4+$d1] value
04DAD0: C2C2 mulu.w D2, D1 ; D1=[A4+$c8] value*[A4+$d1] value
04DAD2: D081 add.l D1, D0 ; D0=([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)
04DAD4: 7200 moveq #$0, D1 ; D1=0
04DAD6: 122C 00D0 move.b ($d0,A4), D1 ; D1=[A4+$d0] value
04DADA: D081 add.l D1, D0 ; D0=([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value
04DADC: 4E75 rts
04D50C: 082D 0005 39CD btst #$5, ($39cd,A5)
04D512: 6700 000E beq $4d522 ; if 6th bit of [A5+$39cd] value is equal to 0 then goto $4d522 subroutine
04D516: 4EBA 0594 jsr ($594,PC) ; ($4daac)
04D51A: 4E71 nop
04D51C: 2040 movea.l D0, A0 ; A0=[([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value]
04D51E: 5310 subq.b #1, (A0) ; [([A4+$c0] value+[A4+$c4] value)+([A4+$c8] value*[A4+$70] value*#$1a)+([A4+$c8] value*[A4+$d1] value)+[A4+$d0] value]-1
04D520: 4E75 rts
04D522: 082D 0006 39CD btst #$6, ($39cd,A5)
04D528: 6700 001C beq $4d546 ; if 7th bit of [A5+$39cd] value is equal to 0 then goto $4d546 subroutine
04D52C: 4EBA 00CA jsr ($ca,PC) ; ($4d5f8)
04D530: 4E71 nop
04D532: 526C 0070 addq.w #1, ($70,A4)
04D536: 0C6C 0019 0070 cmpi.w #$19, ($70,A4)
04D53C: 6300 0036 bls $4d574 ; if old [A4+$70] value+1<=#$19 then end the subroutine ahead of time
04D540: 426C 0070 clr.w ($70,A4) ; else [A4+$d3] value=0
04D544: 4E75 rts
04D546: 082D 0007 39CD btst #$7, ($39cd,A5)
04D54C: 6700 0026 beq $4d574 ; if 8th bit of [A5+$39cd] is equal to 0 then end the subroutine ahead of time, else...
04D550: 4EBA 00A0 jsr ($a0,PC) ; ($4d5f2)
04D554: 4E71 nop
04D556: 522C 00D3 addq.b #1, ($d3,A4)
04D55A: 0C2C 0007 00D3 cmpi.b #$7, ($d3,A4)
04D560: 6300 0006 bls $4d568 ; if old [A4+$d3] value+1<=7 then skip next step
04D564: 422C 00D3 clr.b ($d3,A4) ; else [A4+$d3] value=0
04D568: 4EBA 0510 jsr ($510,PC) ; ($4da7a)
04D56C: 4E71 nop
04D56E: 4EBA 0528 jsr ($528,PC) ; ($4da98)
04D572: 4E71 nop
04D574: 4E75 rts
005F22: 3800 move.w D0, D4 ; D4=[A4+$cc] value
005F24: 3A01 move.w D1, D5 ; D5=[A4+$ce] value+1
005F26: 4EBA 00B6 jsr ($b6,PC) ; ($5fde)
005F2A: 4E71 nop
005F2C: 3002 move.w D2, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002)=#$f00
005F2E: 1018 move.b (A0)+, D0 ; lowest byte of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002)=[$6e839] value=#$41
005F30: 0C00 00FF cmpi.b #-$1, D0
005F34: 6700 0028 beq $5f5e ; looks like here is a begin of cycle which will be continue till lowest byte of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002) become -1
005F38: 0C00 000D cmpi.b #$d, D0
005F3C: 6600 0012 bne $5f50 ; if lowest byte of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002)!=#$d then skip to $5f50
005F40: DA43 add.w D3, D5 ; else D5=[A4+$ce] value+1+1=[A4+$ce] value+2
005F42: 3004 move.w D4, D0 ; D0=[A4+$cc] value
005F44: 3205 move.w D5, D1 ; D1=[A4+$ce] value+1
005F46: 4EBA 0096 jsr ($96,PC) ; ($5fde)
005F4A: 4E71 nop
005F4C: 3002 move.w D2, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002)=#$f00
005F4E: 60DE bra $5f2e ; jump back to $5f2e, and lowest byte of D0 will become equal to #$41 again. Is this cycle an infinitive?
005F50: 23C0 003C 0000 move.l D0, $3c0000.l ; send (highest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002)+high byte of #$f00+lowest byte) to REG_VRAMADDR
005F56: 0680 0020 0000 addi.l #$200000, D0 ; D0=(highest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002)+high byte of #$f00+lowest byte)+#$200000
005F5C: 60D0 bra $5f2e ; jump back to $5f2e, and lowest byte of D0 will become equal to #$41 again. Is this cycle an infinitive?
005F5E: 4E75 rts
002F94: 4A40 tst.w D0
002F96: 6A02 bpl $2f9a ; if [A5+$118] value-[A5+$318] value is negative then change its sign
002F98: 4440 neg.w D0
002F9A: 4E75 rts
04DB40: 4DF9 0010 FD96 lea $10fd96.l, A6
04DB46: 4EBA 002E jsr ($2e,PC) ; ($4db76)
04DB4A: 4E71 nop
04DB4C: 4EBA 016C jsr ($16c,PC) ; ($4dcba)
04DB50: 4E71 nop
04DB52: 4EBA 012C jsr ($12c,PC) ; ($4dc80)
04DB56: 4E71 nop
04DB58: 4E75 rts
04DB76: 102D 39CD move.b ($39cd,A5), D0 ; D0=[A5+$39cd] value
04DB7A: 0240 000F andi.w #$f, D0 ; D0=[A5+$39cd] value&#$f
04DB7E: 41FA 0030 lea ($30,PC) ; ($4dbb0), A0 ; A0=[$4dbb0]
04DB82: 4E71 nop
04DB84: 7200 moveq #$0, D1 ; D1=0
04DB86: 1230 0000 move.b (A0,D0.w), D1 ; D1=[$4dbb0] value+0=[$4dbb0] value
04DB8A: 6B00 0022 bmi $4dbae ; if [$4dbb0] value is negative then end the subroutine ahead of time
04DB8E: D241 add.w D1, D1
04DB90: D241 add.w D1, D1 ; else D1=[$4dbb0] value*4
04DB92: 41FA 002C lea ($2c,PC) ; ($4dbc0), A0 ; A0=[$4dbc0]
04DB96: 4E71 nop
04DB98: 082D 0002 39F5 btst #$2, ($39f5,A5)
04DB9E: 6700 0008 beq $4dba8; if 3rd bit of [A5+$39f5] value is equal to 0 then skip next 2 steps
04DBA2: 41FA 002C lea ($2c,PC) ; ($4dbd0), A0 ; else A0=[$4dbd0]
04DBA6: 4E71 nop
04DBA8: 2070 1000 movea.l (A0,D1.w), A0 ; A0=[$4dbd0+([$4dbb0] value*4)]
04DBAC: 4E90 jsr (A0) ; goto [$4dbd0+([$4dbb0] value*4)] subroutine
04DBAE: 4E75 rts
04DCBA: 396C 00CC 00D4 move.w ($cc,A4), ($d4,A4) ; [A4+$d4] value=[A4+$cc] value
04DCC0: 396C 00CE 00D6 move.w ($ce,A4), ($d6,A4) ; [A4+$d6] value=[A4+$ce] value
04DCC6: 7000 moveq #$0, D0 ; D0=0
04DCC8: 102D 3A5E move.b ($3a5e,A5), D0 ; D0=[A5+$3a5e] value
04DCCC: D040 add.w D0, D0
04DCCE: D040 add.w D0, D0 ; D0=[A5+$3a5e] value*4
04DCD0: 41FA F02E lea (-$fd2,PC) ; ($4cd00), A0 ; A0=[$4cd00]
04DCD4: 2E30 0000 move.l (A0,D0.w), D7 ; D7=[$4cd00] value+([A5+$3a5e] value*4)
04DCD8: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04DCDC: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value
04DCE0: 4EB9 0000 5FDE jsr $5fde.l
04DCE6: 2047 movea.l D7, A0 ; A0=D7 value
04DCE8: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+[A4+$ce] value+#$7002) value=#$f00
04DCEC: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04DCF2: 4EB9 0000 5F0C jsr $5f0c.l
04DCF8: 526C 00D6 addq.w #1, ($d6,A4)
04DCFC: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04DD00: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+1
04DD04: 4EB9 0000 5FDE jsr $5fde.l
04DD0A: 207C 0006 E7DC movea.l #$6e7dc, A0 ; A0=[#$6e7dc]
04DD10: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002) value=#$f00
04DD14: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04DD1A: 4EB9 0000 5F0C jsr $5f0c.l
04DD20: 5A6C 00D4 addq.w #5, ($d4,A4)
04DD24: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+5
04DD28: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+1
04DD2C: 4EB9 0000 5FDE jsr $5fde.l
04DD32: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+5)<<5)+([A4+$ce] value+1)+#$7002) value=#$f00
04DD36: 122D 3A5F move.b ($3a5f,A5), D1 ; D1=[A5+$3a5f] value
04DD3A: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04DD40: 4EB9 0000 5F60 jsr $5f60.l
04DD46: 5B6C 00D4 subq.w #5, ($d4,A4)
04DD4A: 526C 00D6 addq.w #1, ($d6,A4)
04DD4E: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04DD52: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+2
04DD56: 4EB9 0000 5FDE jsr $5fde.l
04DD5C: 207C 0006 E7E2 movea.l #$6e7e2, A0 ; A0=[#$6e7e2]
04DD62: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+2)+#$7002) value=#$f00
04DD66: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04DD6C: 4EB9 0000 5F0C jsr $5f0c.l
04DD72: 586C 00D4 addq.w #4, ($d4,A4)
04DD76: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+4
04DD7A: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+2
04DD7E: 4EB9 0000 5FDE jsr $5fde.l
04DD84: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+4)<<5)+([A4+$ce] value+2)+#$7002) value=#$f00
04DD88: 122D 3A61 move.b ($3a61,A5), D1 ; D1=[A5+$3a61] value
04DD8C: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04DD92: 4EB9 0000 5F60 jsr $5f60.l
04DD98: 596C 00D4 subq.w #4, ($d4,A4)
04DD9C: 526C 00D6 addq.w #1, ($d6,A4)
04DDA0: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04DDA4: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+3
04DDA8: 4EB9 0000 5FDE jsr $5fde.l
04DDAE: 207C 0006 E806 movea.l #$6e806, A0 ; A0=[#$6e806]
04DDB4: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+3)+#$7002) value=#$f00
04DDB8: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04DDBE: 4EB9 0000 5F0C jsr $5f0c.l
04DDC4: 506C 00D4 addq.w #8, ($d4,A4)
04DDC8: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+8
04DDCC: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+3
04DDD0: 4EB9 0000 5FDE jsr $5fde.l
04DDD6: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+8)<<5)+([A4+$ce] value+3)+#$7002) value=#$f00
04DDDA: 122D 3A62 move.b ($3a62,A5), D1 ; D1=[A5+$3a62] value
04DDDE: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04DDE4: 4EB9 0000 5F60 jsr $5f60.l
04DDEA: 516C 00D4 subq.w #8, ($d4,A4)
04DDEE: 526C 00D6 addq.w #1, ($d6,A4)
04DDF2: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04DDF6: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+4
04DDFA: 4EB9 0000 5FDE jsr $5fde.l
04DE00: 207C 0006 E810 movea.l #$6e810, A0 ; A0=[#$6e810]
04DE06: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+4)+#$7002) value=#$f00
04DE0A: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04DE10: 4EB9 0000 5F0C jsr $5f0c.l
04DE16: 506C 00D4 addq.w #8, ($d4,A4)
04DE1A: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+8
04DE1E: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+4
04DE22: 4EB9 0000 5FDE jsr $5fde.l
04DE28: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+8)<<5)+([A4+$ce] value+4)+#$7002) value=#$f00
04DE2C: 122D 3A63 move.b ($3a63,A5), D1 ; D1=[A5+$3a63] value
04DE30: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04DE36: 4EB9 0000 5F60 jsr $5f60.l
04DE3C: 516C 00D4 subq.w #8, ($d4,A4)
04DE40: 526C 00D6 addq.w #1, ($d6,A4)
04DE44: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04DE48: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+5
04DE4C: 4EB9 0000 5FDE jsr $5fde.l
04DE52: 207C 0006 E842 movea.l #$6e842, A0 ; A0=[#$6e842]
04DE58: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+5)+#$7002) value=#$f00
04DE5C: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04DE62: 4EB9 0000 5F0C jsr $5f0c.l
04DE68: 066C 000A 00D4 addi.w #$a, ($d4,A4)
04DE6E: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+#$a
04DE72: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+5
04DE76: 4EB9 0000 5FDE jsr $5fde.l
04DE7C: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+#$a)<<5)+([A4+$ce] value+5)+#$7002) value=#$f00
04DE80: 122D 3A5A move.b ($3a5a,A5), D1 ; D1=[A5+$3a5a] value
04DE84: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04DE8A: 4EB9 0000 5F60 jsr $5f60.l
04DE90: 046C 000A 00D4 subi.w #$a, ($d4,A4)
04DE96: 526C 00D6 addq.w #1, ($d6,A4)
04DE9A: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04DE9E: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+6
04DEA2: 4EB9 0000 5FDE jsr $5fde.l
04DEA8: 207C 0006 E84E movea.l #$6e84e, A0 ; A0=[#$6e84e]
04DEAE: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+6)+#$7002) value=#$f00
04DEB2: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04DEB8: 4EB9 0000 5F0C jsr $5f0c.l
04DEBE: 066C 000A 00D4 addi.w #$a, ($d4,A4)
04DEC4: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+#$a
04DEC8: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+6
04DECC: 4EB9 0000 5FDE jsr $5fde.l
04DED2: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+#$a)<<5)+([A4+$ce] value+6)+#$7002) value=#$f00
04DED6: 122D 3A64 move.b ($3a64,A5), D1 ; D1=[A5+$3a64] value
04DEDA: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04DEE0: 4EB9 0000 5F60 jsr $5f60.l
04DEE6: 046C 000A 00D4 subi.w #$a, ($d4,A4)
04DEEC: 526C 00D6 addq.w #1, ($d6,A4)
04DEF0: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04DEF4: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+7
04DEF8: 4EB9 0000 5FDE jsr $5fde.l
04DEFE: 207C 0006 E85A movea.l #$6e85a, A0 ; A0=[#$6e85a]
04DF04: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+7)+#$7002) value=#$f00
04DF08: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04DF0E: 4EB9 0000 5F0C jsr $5f0c.l
04DF14: 5A6C 00D4 addq.w #5, ($d4,A4)
04DF18: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+5
04DF1C: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+7
04DF20: 4EB9 0000 5FDE jsr $5fde.l
04DF26: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+5)<<5)+([A4+$ce] value+7)+#$7002) value=#$f00
04DF2A: 322D 0118 move.w ($118,A5), D1 ; D1=[A5+$118] value
04DF2E: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04DF34: 4EB9 0000 5F94 jsr $5f94.l
04DF3A: 586C 00D4 addq.w #4, ($d4,A4)
04DF3E: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+9
04DF42: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+7
04DF46: 4EB9 0000 5FDE jsr $5fde.l
04DF4C: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+9)<<5)+([A4+$ce] value+7)+#$7002) value=#$f00
04DF50: 322D 011A move.w ($11a,A5), D1 ; D1=[A5+$11a] value
04DF54: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04DF5A: 4EB9 0000 5F94 jsr $5f94.l
04DF60: 046C 0009 00D4 subi.w #$9, ($d4,A4)
04DF66: 526C 00D6 addq.w #1, ($d6,A4)
04DF6A: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04DF6E: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+8
04DF72: 4EB9 0000 5FDE jsr $5fde.l
04DF78: 207C 0006 E860 movea.l #$6e860, A0 ; A0=[#$6e860]
04DF7E: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+8)+#$7002) value=#$f00
04DF82: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04DF88: 4EB9 0000 5F0C jsr $5f0c.l
04DF8E: 5A6C 00D4 addq.w #5, ($d4,A4)
04DF92: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+5
04DF96: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+8
04DF9A: 4EB9 0000 5FDE jsr $5fde.l
04DFA0: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+5)<<5)+([A4+$ce] value+8)+#$7002) value=#$f00
04DFA4: 322D 0318 move.w ($318,A5), D1 ; D1=[A5+$318] value
04DFA8: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04DFAE: 4EB9 0000 5F94 jsr $5f94.l
04DFB4: 586C 00D4 addq.w #4, ($d4,A4)
04DFB8: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+9
04DFBC: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+8
04DFC0: 4EB9 0000 5FDE jsr $5fde.l
04DFC6: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+9)<<5)+([A4+$ce] value+8)+#$7002) value=#$f00
04DFCA: 322D 031A move.w ($31a,A5), D1 ; D1=[A5+$31a] value
04DFCE: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04DFD4: 4EB9 0000 5F94 jsr $5f94.l
04DFDA: 046C 0009 00D4 subi.w #$9, ($d4,A4)
04DFE0: 526C 00D6 addq.w #1, ($d6,A4)
04DFE4: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04DFE8: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+9
04DFEC: 4EB9 0000 5FDE jsr $5fde.l
04DFF2: 207C 0006 E866 movea.l #$6e866, A0 ; A0=[#$6e866]
04DFF8: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+9)+#$7002) value=#$f00
04DFFC: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04E002: 4EB9 0000 5F0C jsr $5f0c.l
04E008: 5A6C 00D4 addq.w #5, ($d4,A4)
04E00C: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+5
04E010: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+9
04E014: 4EB9 0000 5FDE jsr $5fde.l
04E01A: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+5)<<5)+([A4+$ce] value+9)+#$7002) value=#$f00
04E01E: 322D 0120 move.w ($120,A5), D1 ; D1=[A5+$120] value
04E022: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04E028: 4EB9 0000 5F94 jsr $5f94.l
04E02E: 586C 00D4 addq.w #4, ($d4,A4)
04E032: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+9
04E036: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+9
04E03A: 4EB9 0000 5FDE jsr $5fde.l
04E040: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+9)<<5)+([A4+$ce] value+9)+#$7002) value=#$f00
04E044: 322D 0122 move.w ($122,A5), D1 ; D1=[A5+$122] value
04E048: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04E04E: 4EB9 0000 5F94 jsr $5f94.l
04E054: 046C 0009 00D4 subi.w #$9, ($d4,A4)
04E05A: 526C 00D6 addq.w #1, ($d6,A4)
04E05E: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04E062: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+#$a
04E066: 4EB9 0000 5FDE jsr $5fde.l
04E06C: 207C 0006 E86C movea.l #$6e86c, A0 ; A0=[#$6e86c]
04E072: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+#$a)+#$7002) value=#$f00
04E076: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04E07C: 4EB9 0000 5F0C jsr $5f0c.l
04E082: 5A6C 00D4 addq.w #5, ($d4,A4)
04E086: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+5
04E08A: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+#$a
04E08E: 4EB9 0000 5FDE jsr $5fde.l
04E094: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+5)<<5)+([A4+$ce] value+#$a)+#$7002) value=#$f00
04E098: 322D 0320 move.w ($320,A5), D1 ; D1=[A5+$320] value
04E09C: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04E0A2: 4EB9 0000 5F94 jsr $5f94.l
04E0A8: 586C 00D4 addq.w #4, ($d4,A4)
04E0AC: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+9
04E0B0: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+#$a
04E0B4: 4EB9 0000 5FDE jsr $5fde.l
04E0BA: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+9)<<5)+([A4+$ce] value+#$a)+#$7002) value=#$f00
04E0BE: 322D 0322 move.w ($322,A5), D1 ; D1=[A5+$322] value
04E0C2: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04E0C8: 4EB9 0000 5F94 jsr $5f94.l
04E0CE: 5A6C 00D4 addq.w #5, ($d4,A4)
04E0D2: 576C 00D6 subq.w #3, ($d6,A4)
04E0D6: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+#$e
04E0DA: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+7
04E0DE: 4EB9 0000 5FDE jsr $5fde.l
04E0E4: 207C 0006 E872 movea.l #$6e872, A0 ; A0=[#$6e872]
04E0EA: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+#$e)<<5)+([A4+$ce] value+7)+#$7002) value=#$f00
04E0EE: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04E0F4: 4EB9 0000 5F0C jsr $5f0c.l
04E0FA: 302D 0118 move.w ($118,A5), D0 ; D0=[A5+$118] value
04E0FE: 906D 0318 sub.w ($318,A5), D0 ; D0=[A5+$118] value-[A5+$318] value
04E102: 4EB9 0000 2F94 jsr $2f94.l
04E108: 1940 00C8 move.b D0, ($c8,A4) ; [A4+$c8] value=([A5+$118] value-[A5+$318] value) or -([A5+$118] value-[A5+$318] value)
04E10C: 566C 00D4 addq.w #3, ($d4,A4)
04E110: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+#$11
04E114: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+7
04E118: 4EB9 0000 5FDE jsr $5fde.l
04E11E: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+#$11)<<5)+([A4+$ce] value+7)+#$7002) value=#$f00
04E122: 122C 00C8 move.b ($c8,A4), D1 ; D1=([A5+$118] value-[A5+$318] value) or -([A5+$118] value-[A5+$318] value)
04E126: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04E12C: 4EB9 0000 5F60 jsr $5f60.l
04E132: 576C 00D4 subq.w #3, ($d4,A4)
04E136: 546C 00D6 addq.w #2, ($d6,A4)
04E13A: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+#$e
04E13E: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+9
04E142: 4EB9 0000 5FDE jsr $5fde.l
04E148: 207C 0006 E876 movea.l #$6e876, A0 ; A0=[#$6e876]
04E14E: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+#$e)<<5)+([A4+$ce] value+9)+#$7002) value=#$f00
04E152: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04E158: 4EB9 0000 5F0C jsr $5f0c.l
04E15E: 302D 0120 move.w ($120,A5), D0 ; D0=[A5+$120] value
04E162: 906D 0320 sub.w ($320,A5), D0 ; D0=[A5+$120] value-[A5+$320] value
04E166: 4EB9 0000 2F94 jsr $2f94.l
04E16C: 1940 00C8 move.b D0, ($c8,A4) ; [A4+$c8] value=([A5+$120] value-[A5+$320] value) or -([A5+$120] value-[A5+$320] value)
04E170: 566C 00D4 addq.w #3, ($d4,A4)
04E174: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+#$11
04E178: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+9
04E17C: 4EB9 0000 5FDE jsr $5fde.l
04E182: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+#$11)<<5)+([A4+$ce] value+9)+#$7002) value=#$f00
04E186: 122C 00C8 move.b ($c8,A4), D1 ; D1=([A5+$120] value-[A5+$320] value) or -([A5+$120] value-[A5+$320] value)
04E18A: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04E190: 4EB9 0000 5F60 jsr $5f60.l
04E196: 4E75 rts
04DC80: 082D 0003 39F5 btst #$3, ($39f5,A5)
04DC86: 6700 0030 beq $4dcb8 ; if 4th bit of [A5+$39f5] value is equal to 0 then end the subroutine ahead of time
04DC8A: 082D 0002 39F6 btst #$2, ($39f6,A5)
04DC90: 6700 0026 beq $4dcb8 ; if 3rd bit of [A5+$39f6] value is equal to 0 then end the subroutine ahead of time
04DC94: 206C 0084 movea.l ($84,A4), A0 ; A0=[A4+$84]
04DC98: 4228 00C9 clr.b ($c9,A0) ; [A4+$14d] value=0
04DC9C: 0028 0001 00C9 ori.b #$1, ($c9,A0) ; [A4+$14d] value|1=0|1=1
04DCA2: 302C 00CC move.w ($cc,A4), D0 ; D0=[A4+$cc] value
04DCA6: 322C 00CE move.w ($ce,A4), D1 ; D0=[A4+$ce] value
04DCAA: 343C 0012 move.w #$12, D2 ; D2=#$12
04DCAE: 363C 000A move.w #$a, D3 ; D3=#$a
04DCB2: 4EB9 0000 5FEA jsr $5fea.l
04DCB8: 4E75 rts
04E1D6: 4DF9 0010 FD96 lea $10fd96.l, A6
04E1DC: 4EBA 0034 jsr ($34,PC) ; ($4e212)
04E1E0: 4E71 nop
04E1E2: 4EBA 0158 jsr ($158,PC) ; ($4e33c)
04E1E6: 4E71 nop
04E1E8: 4EBA 01F2 jsr ($1f2,PC) ; ($4e3dc)
04E1EC: 4E71 nop
04E1EE: 4EBA 01B2 jsr ($1b2,PC) ; ($4e3a2)
04E1F2: 4E71 nop
04E1F4: 4E75 rts
04E212: 102D 39CD move.b ($39cd,A5), D0 ; D0=[A5+$39cd] value
04E216: 0240 000F andi.w #$f, D0 ; D0=[A5+$39cd] value&#$f
04E21A: 41FA 0030 lea ($30,PC) ; ($4e24c), A0 ; A0=[$4e24c]
04E21E: 4E71 nop
04E220: 7200 moveq #$0, D1 ; D1=0
04E222: 1230 0000 move.b (A0,D0.w), D1 ; D1=[$4e24c] value+([A5+$39cd] value&#$f)=ff02+([A5+$39cd] value&#$f)
04E226: 6B00 0022 bmi $4e24a ; if ff02+([A5+$39cd] value&#$f) is negative then end the subroutine ahead of time
04E22A: D241 add.w D1, D1
04E22C: D241 add.w D1, D1 ; else D1=(ff02+([A5+$39cd] value&#$f))*4
04E22E: 41FA 002C lea ($2c,PC) ; ($4e25c), A0 ; A0=[$4e25c]
04E232: 4E71 nop
04E234: 082D 0002 39F5 btst #$2, ($39f5,A5)
04E23A: 6700 0008 beq $4e244 ; if 3rd bit of [A5+$39f5] value is equal to 0 then skip next 2 steps
04E23E: 41FA 002C lea ($2c,PC) ; ($4e26c), A0 ; else A0=[$4e26c]
04E242: 4E71 nop
04E244: 2070 1000 movea.l (A0,D1.w), A0 ; A0=([$4e25c] value+((ff02+([A5+$39cd] value&#$f))*4)) or ([$4e26c] value+((ff02+([A5+$39cd] value&#$f))*4))
04E248: 4E90 jsr (A0) ; goto [([$4e25c] value+((ff02+([A5+$39cd] value&#$f))*4))] or [([$4e26c] value+((ff02+([A5+$39cd] value&#$f))*4))] subroutine
04E24A: 4E75 rts
04E24C: FF02 dc.w $ff02; opcode 1111
04E33C: 082D 0004 39CD btst #$4, ($39cd,A5)
04E342: 6700 000E beq $4e352 ; if 5th bit of [A5+$39cd] value is equal to 0 then goto $4e352 subroutine
04E346: 4EBA 0020 jsr ($20,PC) ; ($4e368) ; else goto $4e368 subroutine
04E34A: 4E71 nop
04E34C: 7001 moveq #$1, D0 ; D0=1
04E34E: 4E90 jsr (A0) ; if 5th bit of [A5+$39cd] value is not equal to 0 then goto [[$4e37e] value+([A4+$d0] value*4)]=[#$4e386+([A4+$d0] value*4)] subroutine
04E350: 4E75 rts
04E352: 082D 0005 39CD btst #$5, ($39cd,A5)
04E358: 6700 000C beq $4e366 ; if 6th bit of [A5+$39cd] value is equal to 0 then end the subroutine ahead of time
04E35C: 4EBA 000A jsr ($a,PC) ; ($4e368) ; else goto $4e368 subroutine
04E360: 4E71 nop
04E362: 70FF moveq #-$1, D0 ; D0=#-$1
04E364: 4E90 jsr (A0) ; if 6th bit of [A5+$39cd] value is not equal to 0 then goto [[$4e37e] value+([A4+$d0] value*4)]=[#$4e386+([A4+$d0] value*4)] subroutine
04E366: 4E75 rts
04E368: 7000 moveq #$0, D0 ; D0=0
04E36A: 102C 00D0 move.b ($d0,A4), D0 ; D0=[A4+$d0] value
04E36E: D040 add.w D0, D0
04E370: D040 add.w D0, D0 ; D0=[A4+$d0] value*4
04E372: 41FA 000A lea ($a,PC) ; ($4e37e), A0 ; A0=[$4e37e]
04E376: 4E71 nop
04E378: 2070 0000 movea.l (A0,D0.w), A0 ; A0=[[$4e37e] value+([A4+$d0] value*4)]=[#$4e386+([A4+$d0] value*4)]
04E37C: 4E75 rts
04E37E: 0004 E386 ori.b #$86, D4
04E3DC: 396C 00CC 00D4 move.w ($cc,A4), ($d4,A4) ; [A4+$d4] value=[A4+$cc] value
04E3E2: 396C 00CE 00D6 move.w ($ce,A4), ($d6,A4) ; [A4+$d6] value=[A4+$ce] value
04E3E8: 7800 moveq #$0, D4 ; D4=0
04E3EA: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04E3EE: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value
04E3F2: 4EB9 0000 5FDE jsr $5fde.l
04E3F8: 207C 0006 E842 movea.l #$6e842, A0 ; A0=[#$6e842]
04E3FE: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+[A4+$ce] value+#$7002) value=#$f00
04E402: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04E408: 4EB9 0000 5F0C jsr $5f0c.l
04E40E: 066C 000A 00D4 addi.w #$a, ($d4,A4)
04E414: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+#$a
04E418: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value
04E41C: 4EB9 0000 5FDE jsr $5fde.l
04E422: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+#$a)<<5)+[A4+$ce] value+#$7002) value=#$f00
04E426: B82C 00D0 cmp.b ($d0,A4), D4
04E42A: 6600 0006 bne $4e432 ; if [A4+$d0] value!=0 then skip next step
04E42E: 0040 8000 ori.w #$8000, D0 ; else D0=#$f00|#$8000=#$8f00
04E432: 122D 3A5A move.b ($3a5a,A5), D1 ; D1=[A5+$3a5a] value
04E436: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04E43C: 4EB9 0000 5F60 jsr $5f60.l
04E442: 046C 000A 00D4 subi.w #$a, ($d4,A4)
04E448: 5204 addq.b #1, D4
04E44A: 526C 00D6 addq.w #1, ($d6,A4)
04E44E: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value
04E452: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+1
04E456: 4EB9 0000 5FDE jsr $5fde.l
04E45C: 207C 0006 E958 movea.l #$6e958, A0 ; A0=[#$6e958]
04E462: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped (([A4+$cc] value<<5)+([A4+$ce] value+1)+#$7002) value=#$f00
04E466: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04E46C: 4EB9 0000 5F0C jsr $5f0c.l
04E472: 066C 000A 00D4 addi.w #$a, ($d4,A4)
04E478: 302C 00D4 move.w ($d4,A4), D0 ; D0=[A4+$cc] value+#$a
04E47C: 322C 00D6 move.w ($d6,A4), D1 ; D1=[A4+$ce] value+1
04E480: 4EB9 0000 5FDE jsr $5fde.l
04E486: 303C 0F00 move.w #$f00, D0 ; lowest word of swapped ((([A4+$cc] value+#$a)<<5)+([A4+$ce] value+1)+#$7002) value=#$f00
04E48A: B82C 00D0 cmp.b ($d0,A4), D4
04E48E: 6600 0006 bne $4e496 ; if [A5+$d0] value!=1 then skip next step
04E492: 0040 8000 ori.w #$8000, D0 ; else D0=#$f00|#$8000=#$8f00
04E496: 41ED 0100 lea ($100,A5), A0 ; A0=[A5+$100]
04E49A: 4A28 0130 tst.b ($130,A0)
04E49E: 6A00 0006 bpl $4e4a6 ; if [A5+$230] value is positive then skip next step
04E4A2: 41ED 0300 lea ($300,A5), A0 ; else A0=[A5+$300]
04E4A6: 1228 0168 move.b ($168,A0), D1 ; D1=[A5+$268] value or [A5+$468] value
04E4AA: 243C 0020 0000 move.l #$200000, D2 ; D2=#$200000
04E4B0: 4EB9 0000 5F60 jsr $5f60.l
04E4B6: 4E75 rts
04E3A2: 082D 0003 39F5 btst #$3, ($39f5,A5)
04E3A8: 6700 0030 beq $4e3da ; if 4th bit of [A5+$39f5] value is equal to 0 then end the subroutine ahead of time
04E3AC: 082D 0002 39F6 btst #$2, ($39f6,A5)
04E3B2: 6700 0026 beq $4e3da ; if 3rd bit of [A5+$39f6] value is equal to 0 then end the subroutine ahead of time
04E3B6: 206C 0084 movea.l ($84,A4), A0 ; else A0=[A4+$84]
04E3BA: 4228 00C9 clr.b ($c9,A0) ; [A4+$14d] value=0
04E3BE: 0028 0001 00C9 ori.b #$1, ($c9,A0) ; [A4+$14d] value|1=0|1=1
04E3C4: 302C 00CC move.w ($cc,A4), D0 ; D0=[A4+$cc] value
04E3C8: 322C 00CE move.w ($ce,A4), D1 ; D1=[A4+$ce] value
04E3CC: 343C 000B move.w #$b, D2 ; D2=#$b
04E3D0: 363C 0001 move.w #$1, D3 ; D3=1
04E3D4: 4EB9 0000 5FEA jsr $5fea.l
04E3DA: 4E75 rts
03311E: 0839 0004 0010 FD97 btst #$4, $10fd97.l
033126: 6700 0008 beq $33130 ; if (p1e&JOY_A)=0 then skip next 2 steps
03312A: 522C 0073 addq.b #1, ($73,A4) ; else [A4+$73] value+1
03312E: 4E75 rts
033130: 0839 0005 0010 FD97 btst #$5, $10fd97.l
033138: 6700 0008 beq $33142 ; if (p1e&JOY_B)=0 then skip next 2 steps
03313C: 532C 0073 subq.b #1, ($73,A4) ; else [A4+$73] value-1
033140: 4E75 rts
033142: 0839 0006 0010 FD97 btst #$6, $10fd97.l
03314A: 6700 0008 beq $33154 ; if (p1e&JOY_C)=0 then skip next 2 steps
03314E: 522C 0071 addq.b #1, ($71,A4) ; else [A4+$71] value+1
033152: 4E75 rts
033154: 0839 0007 0010 FD97 btst #$7, $10fd97.l
03315C: 6700 0006 beq $33164 ; if (p1e&JOY_D)=0 then end the subroutine
033160: 532C 0071 subq.b #1, ($71,A4) ; else [A4+$71] value-1
033164: 4E75 rts
033408: 0839 0004 0010 FD97 btst #$4, $10fd97.l
033410: 6700 000C beq $3341e ; if (p1e&JOY_A)=0 then skip next 2 steps
033414: 06AC 0000 1000 0058 addi.l #$1000, ($58,A4) ; else [A4+$58] value+#$1000
03341C: 4E75 rts
03341E: 0839 0005 0010 FD97 btst #$5, $10fd97.l
033426: 6700 000C beq $33434 ; if (p1e&JOY_B)=0 then skip next 2 steps
03342A: 06AC 0000 0400 005C addi.l #$400, ($5c,A4) ; else [A5+$5c] value+#$400
033432: 4E75 rts
033434: 0839 0006 0010 FD97 btst #$6, $10fd97.l
03343C: 6700 000C beq $3344a ; if (p1e&JOY_C)=0 then skip next 2 steps
033440: 06AC 0000 1000 0064 addi.l #$1000, ($64,A4) ; else [A4+$64] value+#$1000
033448: 4E75 rts
03344A: 0839 0007 0010 FD97 btst #$7, $10fd97.l
033452: 6700 0014 beq $33468 ; if (p1e&JOY_D)=0 then end the subroutine
033456: 526C 0070 addq.w #1, ($70,A4) ; else [A4+$70] value+#1
03345A: 0C6C 0018 0070 cmpi.w #$18, ($70,A4)
033460: 6300 0006 bls $33468 ; if old [A4+$70] value+#1<=#$18 then end the subroutine
033464: 426C 0070 clr.w ($70,A4) ; else [A4+$70] value=0
033468: 4E75 rts
03346A: 0839 0004 0010 FD97 btst #$4, $10fd97.l
033472: 6700 0020 beq $33494 ; if (p1e&JOY_A)=0 then skip next 5 steps
033476: 04AC 0000 1000 0058 subi.l #$1000, ($58,A4) ; [A4+$58] value-#$1000
03347E: 0CAC 0000 1000 0058 cmpi.l #$1000, ($58,A4)
033486: 6400 006E bcc $334f6 ; if old [A4+$58] value-#$1000>=#$1000 then end the subroutine
03348A: 297C 0000 1000 0058 move.l #$1000, ($58,A4) ; else [A4+$58] value=#$1000
033492: 4E75 rts
033494: 0839 0005 0010 FD97 btst #$5, $10fd97.l
03349C: 6700 0020 beq $334be ; if (p1e&JOY_B)=0 then skip next 5 steps
0334A0: 04AC 0000 0400 005C subi.l #$400, ($5c,A4) ; [A4+$5c] value-#$400
0334A8: 0CAC 0000 0400 005C cmpi.l #$400, ($5c,A4)
0334B0: 6400 0044 bcc $334f6 ; if old [A4+$5c] value-#$400>=#$400 then end the subroutine
0334B4: 297C 0000 0400 005C move.l #$400, ($5c,A4) ; else [A4+$5c] value=#$400
0334BC: 4E75 rts
0334BE: 0839 0006 0010 FD97 btst #$6, $10fd97.l
0334C6: 6700 0014 beq $334dc ; if (p1e&JOY_C)=0 then skip next 4 steps
0334CA: 04AC 0000 1000 0064 subi.l #$1000, ($64,A4)
0334D2: 6400 0022 bcc $334f6 ; if [A4+$64] value>=#$1000 then end the subroutine
0334D6: 42AC 0064 clr.l ($64,A4) ; else [A4+$64] value=0
0334DA: 4E75 rts
0334DC: 0839 0007 0010 FD97 btst #$7, $10fd97.l
0334E4: 6700 0010 beq $334f6 ; if (p1e&JOY_D)=0 then end the subroutine
0334E8: 536C 0070 subq.w #1, ($70,A4)
0334EC: 6400 0008 bcc $334f6 ; if [A4+$70] value>=1 then end the subroutine
0334F0: 397C 0018 0070 move.w #$18, ($70,A4) ; else [A4+$70] value=#$18
0334F6: 4E75 rts
04AC56: 0839 0004 0010 FD97 btst #$4, $10fd97.l
04AC5E: 6700 0024 beq $4ac84 ; if (p1e&JOY_A)=0 then skip to $4ac84
04AC62: 4EBA 04B4 jsr ($4b4,PC) ; ($4b118) ; else goto $4b118 subroutine
04AC66: 4E71 nop
04AC68: 1E04 move.b D4, D7
04AC6A: 4EBA 0186 jsr ($186,PC) ; ($4adf2)
04AC6E: 4E71 nop
04AC70: 1807 move.b D7, D4
04AC72: 4EBA 04CC jsr ($4cc,PC) ; ($4b140)
04AC76: 4E71 nop
04AC78: 4EBA 0504 jsr ($504,PC) ; ($4b17e)
04AC7C: 4E71 nop
04AC7E: 3081 move.w D1, (A0)
04AC80: 6000 0162 bra $4ade4
04AC84: 0839 0005 0010 FD97 btst #$5, $10fd97.l
04AC8C: 6700 0024 beq $4acb2 ; if (p1e&JOY_B)=0 then skip to $4acb2
04AC90: 4EBA 0486 jsr ($486,PC) ; ($4b118) ; else goto $4b118 subroutine
04AC94: 4E71 nop
04AC96: 1E03 move.b D3, D7
04AC98: 4EBA 0158 jsr ($158,PC) ; ($4adf2)
04AC9C: 4E71 nop
04AC9E: 1607 move.b D7, D3
04ACA0: 4EBA 049E jsr ($49e,PC) ; ($4b140)
04ACA4: 4E71 nop
04ACA6: 4EBA 04D6 jsr ($4d6,PC) ; ($4b17e)
04ACAA: 4E71 nop
04ACAC: 3081 move.w D1, (A0)
04ACAE: 6000 0134 bra $4ade4
04ACB2: 0839 0006 0010 FD97 btst #$6, $10fd97.l
04ACBA: 6700 0024 beq $4ace0 ; if (p1e&JOY_C)=0 then skip to $4ace0
04ACBE: 4EBA 0458 jsr ($458,PC) ; ($4b118) ; else goto $4b118 subroutine
04ACC2: 4E71 nop
04ACC4: 1E02 move.b D2, D7
04ACC6: 4EBA 012A jsr ($12a,PC) ; ($4adf2)
04ACCA: 4E71 nop
04ACCC: 1407 move.b D7, D2
04ACCE: 4EBA 0470 jsr ($470,PC) ; ($4b140)
04ACD2: 4E71 nop
04ACD4: 4EBA 04A8 jsr ($4a8,PC) ; ($4b17e)
04ACD8: 4E71 nop
04ACDA: 3081 move.w D1, (A0)
04ACDC: 6000 0106 bra $4ade4
04ACE0: 0839 0007 0010 FD97 btst #$7, $10fd97.l
04ACE8: 6700 00FA beq $4ade4 ; if (p1e&JOY_D)=0 then end the subroutine
04ACEC: 41F9 0040 0000 lea $400000.l, A0 ; else A0=[$400000]
04ACF2: 7000 moveq #$0, D0 ; D0=0
04ACF4: 102D 5678 move.b ($5678,A5), D0 ; D0=[A5+$5678] value
04ACF8: EB48 lsl.w #5, D0 ; D0=[A5+$5678] value<<5
04ACFA: D1C0 adda.l D0, A0 ; A0=[[A5+$5678] value<<5]
04ACFC: 43ED 567A lea ($567a,A5), A1 ; A1=[A5+$567a]
04AD00: 303C 000F move.w #$f, D0 ; D0=#$f
04AD04: 32D8 move.w (A0)+, (A1)+ ; [A5+$567b] value=[[A5+$5678] value<<5] value
04AD06: 51C8 FFFC dbra D0, $4ad04 ; D0-1, if D0<>0 then jump back to previous step
04AD0A: 6000 00D8 bra $4ade4 ; else if D0=0 then end the subroutine
04AD0E: 0839 0004 0010 FD97 btst #$4, $10fd97.l
04AD16: 6700 0024 beq $4ad3c ; if (p1e&JOY_A)=0 then skip to $4ad3c
04AD1A: 4EBA 03FC jsr ($3fc,PC) ; ($4b118)
04AD1E: 4E71 nop
04AD20: 1E04 move.b D4, D7
04AD22: 4EBA 00DC jsr ($dc,PC) ; ($4ae00)
04AD26: 4E71 nop
04AD28: 1807 move.b D7, D4
04AD2A: 4EBA 0414 jsr ($414,PC) ; ($4b140)
04AD2E: 4E71 nop
04AD30: 4EBA 044C jsr ($44c,PC) ; ($4b17e)
04AD34: 4E71 nop
04AD36: 3081 move.w D1, (A0)
04AD38: 6000 00AA bra $4ade4
04AD3C: 0839 0005 0010 FD97 btst #$5, $10fd97.l
04AD44: 6700 0024 beq $4ad6a ; if (p1e&JOY_B)=0 then skip to $4ad6a
04AD48: 4EBA 03CE jsr ($3ce,PC) ; ($4b118)
04AD4C: 4E71 nop
04AD4E: 1E03 move.b D3, D7
04AD50: 4EBA 00AE jsr ($ae,PC) ; ($4ae00)
04AD54: 4E71 nop
04AD56: 1607 move.b D7, D3
04AD58: 4EBA 03E6 jsr ($3e6,PC) ; ($4b140)
04AD5C: 4E71 nop
04AD5E: 4EBA 041E jsr ($41e,PC) ; ($4b17e)
04AD62: 4E71 nop
04AD64: 3081 move.w D1, (A0)
04AD66: 6000 007C bra $4ade4
04AD6A: 0839 0006 0010 FD97 btst #$6, $10fd97.l
04AD72: 6700 0024 beq $4ad98 ; if (p1e&JOY_C)=0 then skip to $4ad98
04AD76: 4EBA 03A0 jsr ($3a0,PC) ; ($4b118) ; else goto $4b118 subroutine
04AD7A: 4E71 nop
04AD7C: 1E02 move.b D2, D7 ; D7=(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f)*2)|((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)&1)
04AD7E: 4EBA 0080 jsr ($80,PC) ; ($4ae00)
04AD82: 4E71 nop
04AD84: 1407 move.b D7, D2 ; D2=((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f)*2)|((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)&1))-1 or #$1f
04AD86: 4EBA 03B8 jsr ($3b8,PC) ; ($4b140)
04AD8A: 4E71 nop
04AD8C: 4EBA 03F0 jsr ($3f0,PC) ; ($4b17e)
04AD90: 4E71 nop
04AD92: 3081 move.w D1, (A0)
04AD94: 6000 004E bra $4ade4
04AD98: 0839 0007 0010 FD97 btst #$7, $10fd97.l
04ADA0: 6700 0042 beq $4ade4 ; if (p1e&JOY_D)=0 then end the subroutine
04ADA4: 0A2D 0004 569A eori.b #$4, ($569a,A5) ; else [A5+$569a] value^4
04ADAA: 3B6D 566E 566A move.w ($566e,A5), ($566a,A5) ; [A5+$566a] value=[A5+$566e] value
04ADB0: 3B6D 5670 566C move.w ($5670,A5), ($566c,A5) ; [A5+$566c] value=[A5+$5670] value
04ADB6: 4EBA 04A2 jsr ($4a2,PC) ; ($4b25a)
04ADBA: 4E71 nop
04ADBC: 41FA 05B0 lea ($5b0,PC) ; ($4b36e), A0
04ADC0: 4E71 nop
04ADC2: 303C 8F00 move.w #$8f00, D0 ; lowest word of swapped (([A5+$566e] value<<5)+[A5+$5670] value+#$7002) value=#$8f00
04ADC6: 082D 0002 569A btst #$2, ($569a,A5)
04ADCC: 6600 0006 bne $4add4 ; if 3rd bit of old [A5+$569a] value^4 is not equal to 0 then skip next step
04ADD0: 303C 0F00 move.w #$f00, D0 ; else lowest word of swapped (([A5+$566e] value<<5)+[A5+$5670] value+#$7002) value=#$f00
04ADD4: 223C 0020 0000 move.l #$200000, D1 ; D1=#$200000
04ADDA: 4EBA 04E4 jsr ($4e4,PC) ; ($4b2c0)
04ADDE: 4E71 nop
04ADE0: 6000 0002 bra $4ade4 ; end the subroutine
04ADE4: 4E75 rts
04B25A: 302D 566A move.w ($566a,A5), D0 ; D0=[A5+$566e] value
04B25E: EB48 lsl.w #5, D0 ; D0=[A5+$566e] value<<5
04B260: D06D 566C add.w ($566c,A5), D0 ; D0=([A5+$566e] value<<5)+[A5+$5670] value
04B264: 0640 7002 addi.w #$7002, D0 ; D0=([A5+$566e] value<<5)+[A5+$5670] value+#$7002
04B268: 4840 swap D0
04B26A: 4E75 rts
04B36E: 5041 addq.w #8, D1
04B2C0: 1018 move.b (A0)+, D0 ; D0=[$4b36f] value=#$41 at the beginning of cycle
04B2C2: 6B00 000C bmi $4b2d0
04B2C6: 23C0 003C 0000 move.l D0, $3c0000.l ; send D0 to REG_VRAMADDR
04B2CC: D081 add.l D1, D0 ; D0+#$200000
04B2CE: 60F0 bra $4b2c0 ; return to the beginning of cycle
04B2D0: 4E75 rts
04B118: 41F9 0040 0000 lea $400000.l, A0 ; A0=[$400000]
04B11E: 7000 moveq #$0, D0 ; D0=0
04B120: 102D 5678 move.b ($5678,A5), D0 ; D0=[A5+$5678] value
04B124: EB48 lsl.w #5, D0 ; D0=[A5+$5678] value<<5
04B126: D1C0 adda.l D0, A0 ; A0=[$400000+([A5+$5678] value<<5)]
04B128: 302D 5672 move.w ($5672,A5), D0 ; D0=[A5+$5672] value
04B12C: D040 add.w D0, D0 ; D0=[A5+$5672] value*2
04B12E: D1C0 adda.l D0, A0 ; A0=[$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)]
04B130: 3210 move.w (A0), D1 ; D1=[$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value
04B132: 4EBA FF9C jsr (-$64,PC) ; ($4b0d0)
04B136: 4EBA FFB2 jsr (-$4e,PC) ; ($4b0ea)
04B13A: 4EBA FFC2 jsr (-$3e,PC) ; ($4b0fe)
04B13E: 4E75 rts
04B0D0: 3401 move.w D1, D2 ; D2=[$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value
04B0D2: 3E01 move.w D1, D7 ; D7=[$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value
04B0D4: 0247 F000 andi.w #$f000, D7 ; D7=[$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000
04B0D8: E95F rol.w #4, D7 ; D7=([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4
04B0DA: 3A07 move.w D7, D5 ; D5=([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4
04B0DC: 0245 0001 andi.w #$1, D5 ; D5=(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)&1
04B0E0: 0242 000F andi.w #$f, D2 ; D2=[$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f
04B0E4: D442 add.w D2, D2 ; D2=([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f)*2
04B0E6: 8445 or.w D5, D2 ; D2=(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f)*2)|((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)&1)
04B0E8: 4E75 rts
04B0EA: 3601 move.w D1, D3 ; D3=[$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value
04B0EC: 0243 00F0 andi.w #$f0, D3 ; D3=[$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f0
04B0F0: E64B lsr.w #3, D3 ; D3=([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f0)>>3
04B0F2: E24F lsr.w #1, D7 ; D7=(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>1
04B0F4: 3A07 move.w D7, D5 ; D5=(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>1
04B0F6: 0245 0001 andi.w #$1, D5 ; D5=((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>1)&1
04B0FA: 8645 or.w D5, D3 ; D3=(((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>1)&1)|(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f0)>>3)
04B0FC: 4E75 rts
04B0FE: 3801 move.w D1, D4 ; D4=[$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value
04B100: 0244 0F00 andi.w #$f00, D4 ; D4=[$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f00
04B104: 3F04 move.w D4, -(A7) ; [A7-1] value=[$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f00
04B106: 7800 moveq #$0, D4 ; D4=0
04B108: 181F move.b (A7)+, D4 ; D4=[A7+1] value
04B10A: D844 add.w D4, D4 ; D4=[A7+1] value*2
04B10C: E24F lsr.w #1, D7 ; D7=(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2
04B10E: 3A07 move.w D7, D5 ; D5=(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2
04B110: 0245 0001 andi.w #$1, D5 ; D5=((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1
04B114: 8845 or.w D5, D4 ; D4=(((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2)
04B116: 4E75 rts
04AE00: 5307 subq.b #1, D7 ; D7=((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f)*2)|((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)&1))-1
04AE02: 6A00 0006 bpl $4ae0a ; if ((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f)*2)|((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)&1))-1 is positive then end the subroutine
04AE06: 1E3C 001F move.b #$1f, D7 ; else D7=#$1f
04AE0A: 4E75 rts
04B140: 3B6D 566E 566A move.w ($566e,A5), ($566a,A5)
04B146: 3B6D 5670 566C move.w ($5670,A5), ($566c,A5)
04B14C: 546D 566A addq.w #2, ($566a,A5) ; [A5+$566e] value+2
04B150: 546D 566C addq.w #2, ($566c,A5) ; [A5+$5670] value+2
04B154: 302D 5672 move.w ($5672,A5), D0 ; D0=[A5+$5672] value
04B158: D16D 566C add.w D0, ($566c,A5) ; [A5+$566c] value=[A5+$5670] value+2+[A5+$5672] value
04B15C: 3E04 move.w D4, D7 ; D7=(((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2)
04B15E: 4EBA 005C jsr ($5c,PC) ; ($4b1bc)
04B162: 4E71 nop
04B164: 566D 566A addq.w #3, ($566a,A5) ; [A5+$566a] value=[A5+$566e] value+5
04B168: 3E03 move.w D3, D7 ; D7=(((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>1)&1)|(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f0)>>3)
04B16A: 4EBA 0050 jsr ($50,PC) ; ($4b1bc)
04B16E: 4E71 nop
04B170: 566D 566A addq.w #3, ($566a,A5) ; [A5+$566a] value=[A5+$566e] value+8
04B174: 3E02 move.w D2, D7 ; D7=((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f)*2)|((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)&1))-1 or #$1f
04B176: 4EBA 0044 jsr ($44,PC) ; ($4b1bc)
04B17A: 4E71 nop
04B17C: 4E75 rts
04B1BC: 3A2D 566A move.w ($566a,A5), D5 ; D5=[A5+$566e] value+2
04B1C0: EB4D lsl.w #5, D5 ; D5=([A5+$566e] value+2)<<5
04B1C2: DA6D 566C add.w ($566c,A5), D5 ; D5=(([A5+$566e] value+2)<<5)+([A5+$5670] value+2+[A5+$5672] value)
04B1C6: 0645 7002 addi.w #$7002, D5 ; D5=(([A5+$566e] value+2)<<5)+([A5+$5670] value+2+[A5+$5672] value)+#$7002
04B1CA: 4845 swap D5
04B1CC: 4245 clr.w D5 ; lowest word of swapped ((([A5+$566e] value+2)<<5)+([A5+$5670] value+2+[A5+$5672] value)+#$7002) value=0
04B1CE: 3C07 move.w D7, D6 ; D6=(((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2)
04B1D0: 0246 00F0 andi.w #$f0, D6 ; D6=((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2))&#$f0
04B1D4: E80E lsr.b #4, D6 ; D6=(((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2))&#$f0)>>4
04B1D6: 1A3B 6022 move.b ($22,PC,D6.w), D5 ; lowest byte of D5=[$04B1FA+((((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2))&#$f0)>>4) value] value
04B1DA: 0045 0F00 ori.w #$f00, D5 ; lowest word of D5=[$04B1FA+((((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2))&#$f0)>>4) value] value|#$f00
04B1DE: 23C5 003C 0000 move.l D5, $3c0000.l ; send D5 value to REG_VRAMADDR
04B1E4: 0247 000F andi.w #$f, D7 ; D7=((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2))&#$f
04B1E8: 1A3B 7010 move.b ($10,PC,D7.w), D5 ; lowest byte of D5=[$04B1FA+(((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2))&#$f) value] value
04B1EC: 0685 0020 0000 addi.l #$200000, D5 ; D5=(high word of swapped ((([A5+$566e] value+2)<<5)+([A5+$5670] value+2+[A5+$5672] value)+#$7002) value+([$04B1FA+((((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2))&#$f0)>>4) value] value|#$f00))+#$200000
04B1F2: 23C5 003C 0000 move.l D5, $3c0000.l ; send D5 value to REG_VRAMADDR
04B1F8: 4E75 rts
04B17E: 3A02 move.w D2, D5 ; D5=((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f)*2)|((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)&1))-1 or #$1f
04B180: E24A lsr.w #1, D2 ; D2=(((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f)*2)|((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)&1))-1)>>1 or #$f
04B182: 0245 0001 andi.w #$1, D5 ; D5=(((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f)*2)|((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)&1))-1)&1 or #$1
04B186: 6704 beq $4b18c ; if (((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f)*2)|((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)&1))-1)&1=0 (i. e D5 value is even) then skip next step
04B188: 0042 1000 ori.w #$1000, D2 ; else D2=((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f)*2)|((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)&1))-1)>>1) |#$1000 or D2=#$100f
04B18C: 3A03 move.w D3, D5 ; D5=(((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>1)&1)|(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f0)>>3)
04B18E: 0243 001E andi.w #$1e, D3 ; D3=((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>1)&1)|(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f0)>>3))&#$1e
04B192: E74B lsl.w #3, D3 ; D3=(((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>1)&1)|(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f0)>>3))&#$1e)<<3
04B194: 0245 0001 andi.w #$1, D5 ; D5=((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>1)&1)|(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f0)>>3))&1
04B198: 6704 beq $4b19e ; if ((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>1)&1)|(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f0)>>3)) is even then skip next step
04B19A: 0043 2000 ori.w #$2000, D3 ; else D3=((((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>1)&1)|(([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f0)>>3))&#$1e)<<3)|#$2000
04B19E: 3A04 move.w D4, D5 ; D5=(((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2)
04B1A0: 0244 001E andi.w #$1e, D4 ; D4=((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2))&#$1e
04B1A4: EF4C lsl.w #7, D4 ; D4=(((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2))&#$1e)<<7
04B1A6: 0245 0001 andi.w #$1, D5 ; D5=((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2))&1
04B1AA: 6700 0006 beq $4b1b2 ; if (((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2) is even then skip next step
04B1AE: 0044 4000 ori.w #$4000, D4 ; else D4=((((((([$400000+([A5+$5678] value<<5)+([A5+$5672] value*2)] value&#$f000)ROL4)>>2)&1)|([A7+1] value*2))&#$1e)<<7)|#$4000
04B1B2: 7200 moveq #$0, D1 ; D1=0
04B1B4: 8242 or.w D2, D1
04B1B6: 8243 or.w D3, D1
04B1B8: 8244 or.w D4, D1
04B1BA: 4E75 rts
04ADF2: 5207 addq.b #1, D7
04ADF4: 0C07 0020 cmpi.b #$20, D7
04ADF8: 6500 0004 bcs $4adfe ; if (old D2\D3\D4 value+1)<#$20 then end the subroutine, else D7 lowest byte=0
04ADFC: 4207 clr.b D7
04ADFE: 4E75 rts
000FBA: 1039 0010 FD96 move.b $10fd96.l, D0 ; D0=P1_CURRENT value
000FC0: 122D 8A7B move.b (-$7585,A5), D1 ; D1=[A5-$7585] value
000FC4: 1B40 8A7B move.b D0, (-$7585,A5) ; [A5-$7585] value=P1_CURRENT value
000FC8: B101 eor.b D0, D1 ; D1=P1_CURRENT value^old [A5-$7585] value
000FCA: C200 and.b D0, D1 ; D1=(P1_CURRENT value^old [A5-$7585] value)&P1_CURRENT value
000FCC: 1B41 8A7C move.b D1, (-$7584,A5) ; [A5-$7584] value=(P1_CURRENT value^old [A5-$7585] value)&P1_CURRENT value
000FD0: 1039 0010 FD9C move.b $10fd9c.l, D0 ; D0=P2_CURRENT value
000FD6: 122D 8A7D move.b (-$7583,A5), D1 ; D1=[A5-$7583] value
000FDA: 1B40 8A7D move.b D0, (-$7583,A5) ; [A5-$7583] value=P2_CURRENT value
000FDE: B101 eor.b D0, D1 ; D1=P2_CURRENT value^old [A5-$7583] value
000FE0: C200 and.b D0, D1 ; D1=(P2_CURRENT value^old [A5-$7583] value)&P2_CURRENT value
000FE2: 1B41 8A7E move.b D1, (-$7582,A5) ; [A5-$7582] value=(P2_CURRENT value^old [A5-$7583] value)&P2_CURRENT value
000FE6: 4EB9 0002 0118 jsr $20118.l ; How is it possible? There is no such subroitine in samsho disassembly. This address is a middle of $20116 code string.
000FEC: 422D 8AB1 clr.b (-$754f,A5) ; [A5-$754f] value=0
000FF0: 2B7C 0010 1080 89FA move.l #$101080, (-$7606,A5) ; [A5-$7606] value=#$101080
000FF8: 41ED 9040 lea (-$6fc0,A5), A0 ; A0=[A5-$6fc0]
000FFC: 203C 0010 2000 move.l #$102000, D0 ; D0=#$102000
001002: 3140 0002 move.w D0, ($2,A0) ; [A5-$6fbe] value=#$102000
001006: 41ED A000 lea (-$6000,A5), A0 ; A0=[A5-$6000]
00100A: 203C 0010 1040 move.l #$101040, D0 ; D0=#$101040
001010: 3140 0000 move.w D0, ($0,A0) ; [A5-$6000] value=#$101040
001014: 317C FFFF 0004 move.w #$ffff, ($4,A0) ; [A5-$5ffc] value=#$ffff
00101A: 4DED E142 lea (-$1ebe,A5), A6 ; A6=[A5-$1ebe]
00101E: 4EBA 16C4 jsr ($16c4,PC) ; ($26e4)
001022: 4DED E182 lea (-$1e7e,A5), A6 ; A6=[A5-$1e7e]
001026: 4EBA 1728 jsr ($1728,PC) ; ($2750)
00102A: 422D 8AB7 clr.b (-$7549,A5) ; [A5-$7549] value=0
00102E: 4DED A142 lea (-$5ebe,A5), A6 ; A6=[A5-$5ebe]
001032: 4A6E 002E tst.w ($2e,A6)
001036: 6700 0006 beq $103e ; if [A5-$5e90] value=0 then skip next step
00103A: 536E 002E subq.w #1, ($2e,A6) ; else [A5-$5e90] value-1
00103E: 2F0E move.l A6, -(A7) ; [A7-1]=[A5-$5ebe]
001040: 206E 0000 movea.l ($0,A6), A0 ; A0=[A5-$5ebe]
001044: 4E90 jsr (A0) ; goto [A5-$5ebe] subroutine
001046: 2C5F movea.l (A7)+, A6 ; A6=[A7+1]
001048: 7000 moveq #$0, D0 ; D0=0
00104A: 102E 0051 move.b ($51,A6), D0 ; D0=[A7+$52] value
00104E: 6700 000C beq $105c ; if [A7+$52] value=0 then skip next 4 steps
001052: D040 add.w D0, D0
001054: D040 add.w D0, D0 ; else D0=[A7+$52] value*4
001056: 207B 002A movea.l ($2a,PC,D0.w), A0 ; A0=[$1082+([A7+$52] value*4)]
00105A: 4E90 jsr (A0) ; goto [$1082+([A7+$52] value*4)] subroutine
00105C: 4EB9 0000 4510 jsr $4510.l
001062: 522D 8AB7 addq.b #1, (-$7549,A5) ; [A5-$7549] value+1
001066: 0C6E FFFF 0008 cmpi.w #-$1, ($8,A6)
00106C: 6700 000E beq $107c ; if [A7+9] value=-1 then end the cycle
001070: 200E move.l A6, D0 ; D0=[A7+1] value
001072: 302E 0006 move.w ($6,A6), D0 ; lowest word of D0 value=[A7+7] value
001076: 2C40 movea.l D0, A6 ; A6=[high word of [A7+1] value+[A7+7] value]
001078: 4EFA FFB8 jmp (-$48,PC) ; ($1032)
00107C: 4EBA 0AA8 jsr ($aa8,PC) ; ($1b26)
001080: 4E75 rts
020116: 0000 082D ori.b #$2d, D0
02011A: 0006 8000 ori.b #$0, D6
02011E: 6700 003A beq $2015a ; if D6|0=0 => D6=0 then end the subroutine
020122: 1B79 0010 FD96 8A7B move.b $10fd96.l, (-$7585,A5) ; else send P1_CURRENT to [A5-$7585]
02012A: 1039 0010 FD98 move.b $10fd98.l, D0 ; send P1_REPEAT to D0
020130: 0240 00F0 andi.w #$f0, D0 ; D0=P1_REPEAT&#$f0
020134: 8039 0010 FD97 or.b $10fd97.l, D0 ; D0=(P1_REPEAT&#$f0)|P1_CHANGE
02013A: 1B40 8A7C move.b D0, (-$7584,A5) ; [A5-$7584] value=(P1_REPEAT&#$f0)|P1_CHANGE
02013E: 1B79 0010 FD9C 8A7D move.b $10fd9c.l, (-$7583,A5) ; send P2_CURRENT to [A5-$7583]
020146: 1039 0010 FD9E move.b $10fd9e.l, D0 ; send P2_REPEAT to D0
02014C: 0240 00F0 andi.w #$f0, D0 ; D0=P2_REPEAT&#$f0
020150: 8039 0010 FD9D or.b $10fd9d.l, D0 ; D0=(P2_REPEAT&#$f0)|P2_CHANGE
020156: 1B40 8A7E move.b D0, (-$7582,A5) ; [A5-$7582] value=(P2_REPEAT&#$f0)|P2_CHANGE
02015A: 4E75 rts
0026E4: 7000 moveq #$0, D0 ; D0=0
0026E6: 102E 001B move.b ($1b,A6), D0 ; D0=[A5-$1ea3] value
0026EA: 6700 0062 beq $274e ; if [A5-$1ea3] value=0 then end the subroutine
0026EE: E548 lsl.w #2, D0 ; else D0=[A5-$1ea3] value<<2
0026F0: 43F9 0004 C000 lea $4c000.l, A1 ; A1=[$4c000]
0026F6: 2271 0000 movea.l (A1,D0.w), A1 ; A1=[$4c000+([A5-$1ea3] value<<2)]
0026FA: 422E 001B clr.b ($1b,A6) ; [A5-$1ea3] value=0
0026FE: 302E 000C move.w ($c,A6), D0 ; D0=[A5-$1eb2] value
002702: 5240 addq.w #1, D0 ; D0=[A5-$1eb2] value+1
002704: C0FC 0040 mulu.w #$40, D0 ; D0=([A5-$1eb2] value+1)*#$40
002708: 7827 moveq #$27, D4 ; D4=#$27
00270A: 7C16 moveq #$16, D6 ; D6=#$16
00270C: 7A02 moveq #$2, D5 ; D5=#$2
00270E: 49F9 003C 0002 lea $3c0002.l, A4 ; send REG_VRAMRW to A4
002714: 522D 8A77 addq.b #1, (-$7589,A5) ; [A5-$7589] value+1
002718: 397C 0001 0002 move.w #$1, ($2,A4) ; REG_VRAMMOD value=1
00271E: 0640 0012 addi.w #$12, D0 ; D0=(([A5-$1eb2] value+1)*#$40)+#$12
002722: 3940 FFFE move.w D0, (-$2,A4) ; send D0 value to REG_VRAMADDR
002726: 3E06 move.w D6, D7 ; D7=#$16
002728: 3899 move.w (A1)+, (A4) ; REG_VRAMRW value=[$4c001+([A5-$1ea3] value<<2)]
00272A: 3899 move.w (A1)+, (A4) ; REG_VRAMRW value=[$4c002+([A5-$1ea3] value<<2)]
00272C: 51CF FFFA dbra D7, $2728 ; D7-1, if D7 <> 0 then skip 1 step back
002730: 0440 0012 subi.w #$12, D0 ; D0=([A5-$1eb2] value+1)*#$40
002734: 3940 FFFE move.w D0, (-$2,A4) ; send D0 value to REG_VRAMADDR
002738: 3E05 move.w D5, D7 ; D7=#$2
00273A: 3899 move.w (A1)+, (A4) ; REG_VRAMRW value=[$4c003+([A5-$1ea3] value<<2)]
00273C: 3899 move.w (A1)+, (A4) ; REG_VRAMRW value=[$4c004+([A5-$1ea3] value<<2)]
00273E: 51CF FFFA dbra D7, $273a ; D7-1, if D7 <> 0 then skip 1 step back
002742: 0640 0040 addi.w #$40, D0 ; D0=(([A5-$1eb2] value+1)*#$40)+#$40
002746: 51CC FFD6 dbra D4, $271e ; D4-1, if D4 <> 0 then jump back to $271e
00274A: 532D 8A77 subq.b #1, (-$7589,A5) ; [A5-$7589] value-1
00274E: 4E75 rts
002750: 7000 moveq #$0, D0 ; D0=0
002752: 102E 001B move.b ($1b,A6), D0 ; D0=[A5-$1e63] value
002756: 6700 004A beq $27a2 ; if [A5-$1e63] value=0 then end the subroutine
00275A: E548 lsl.w #2, D0 ; else D0=[A5-$1e63] value<<2
00275C: 43F9 0004 C000 lea $4c000.l, A1 ; A1=[$4c000]
002762: 2271 0000 movea.l (A1,D0.w), A1 ; A1=[$4c000+([A5-$1e63] value<<2)]
002766: 422E 001B clr.b ($1b,A6) ; [A5-$1e63] value=0
00276A: 302E 000C move.w ($c,A6), D0 ; D0=[A5-$1e72] value
00276E: 5240 addq.w #1, D0 ; D0=[A5-$1e72] value+1
002770: C0FC 0040 mulu.w #$40, D0 ; D0=([A5-$1e72] value+1)*#$40
002774: 7827 moveq #$27, D4 ; D4=#$27
002776: 7C19 moveq #$19, D6 ; D6=#$19
002778: 49F9 003C 0002 lea $3c0002.l, A4 ; send REG_VRAMRW to A4
00277E: 522D 8A77 addq.b #1, (-$7589,A5) ; [A5-$7589] value+1
002782: 397C 0001 0002 move.w #$1, ($2,A4) ; REG_VRAMMOD value=1
002788: 3940 FFFE move.w D0, (-$2,A4) ; send D0 value to REG_VRAMADDR
00278C: 3E06 move.w D6, D7 ; D7=#$19
00278E: 3899 move.w (A1)+, (A4) ; REG_VRAMRW value=[$4c001+([A5-$1e63] value<<2)]
002790: 3899 move.w (A1)+, (A4) ; REG_VRAMRW value=[$4c002+([A5-$1e63] value<<2)]
002792: 51CF FFFA dbra D7, $278e ; D7-1, if D7 <> 0 then skip 1 step back
002796: 0640 0040 addi.w #$40, D0 ; D0=(([A5-$1e72] value+1)*#$40)+#$40
00279A: 51CC FFEC dbra D4, $2788 ; D4-1, if D4 <> 0 then skip back to $2788
00279E: 532D 8A77 subq.b #1, (-$7589,A5) ; [A5-$7589] value-1
0027A2: 4E75 rts
004510: 522D 8A83 addq.b #1, (-$757d,A5) ; [A5-$757d] value+1
004514: 7000 moveq #$0, D0 ; D0=0
004516: 102E 0055 move.b ($55,A6), D0 ; D0=[A7+$56] value
00451A: 6700 0082 beq $459e ; if [A7+$56] value=0 then goto $459e subroutine
00451E: 6B00 0020 bmi $4540 ; else if [A7+$56] value is negative then goto $4540 subroutine
004522: 0240 000F andi.w #$f, D0 ; else D0=[A7+$56] value&#$f
004526: D040 add.w D0, D0 ; D0=([A7+$56] value&#$f)*2
004528: 1D7B 007A 0058 move.b ($7a,PC,D0.w), ($58,A6) ; [A7+$59] value=[$45a4+(([A7+$56] value&#$f)*2)] value
00452E: 1D7B 0075 0059 move.b ($75,PC,D0.w), ($59,A6) ; [A7+$5a] value=[$45a5+(([A7+$56] value&#$f)*2)] value
004534: 002E 0080 0055 ori.b #$80, ($55,A6) ; [A7+$56] value|#$80
00453A: 1D7C 0004 0057 move.b #$4, ($57,A6) ; [A7+$58] value=4
004540: 1B7C 0001 8AB1 move.b #$1, (-$754f,A5) ; [A5-$754f] value=1
004546: 532E 0057 subq.b #1, ($57,A6) ; [A7+$58] value=3
00454A: 022E 0003 0057 andi.b #$3, ($57,A6) ; [A7+$58] value&3=3&3=3
004550: 7000 moveq #$0, D0 ; D0=0
004552: 102E 0056 move.b ($56,A6), D0 ; D0=[A7+$57] value
004556: D040 add.w D0, D0
004558: D040 add.w D0, D0 ; D0=[A7+$57] value*4
00455A: 802E 0057 or.b ($57,A6), D0 ; D0=([A7+$57] value*4)|[A7+$58] value
00455E: D040 add.w D0, D0
004560: D040 add.w D0, D0 ; D0=(([A7+$57] value*4)|[A7+$58] value)*4
004562: 287B 0050 movea.l ($50,PC,D0.w), A4 ; A4=[$45b4+((([A7+$57] value*4)|[A7+$58] value)*4)]
004566: 7000 moveq #$0, D0 ; D0=0
004568: 301C move.w (A4)+, D0 ; D0=[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value
00456A: 0C40 FFFF cmpi.w #-$1, D0
00456E: 6700 000A beq $457a ; if [$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value=-1 then skip next 2 steps
004572: 4EBA 0838 jsr ($838,PC) ; ($4dac)
004576: 4EFA FFEE jmp (-$12,PC) ; ($4566)
00457A: 4A2E 0057 tst.b ($57,A6)
00457E: 6600 001E bne $459e ; if [A7+$58] value!=0 then skip to $459e
004582: 72FE moveq #-$2, D1 ; else D1=-2
004584: 102E 0059 move.b ($59,A6), D0 ; D0=[A7+$5a] value
004588: B02E 0058 cmp.b ($58,A6), D0
00458C: 6B00 000C bmi $459a ; if [A7+$5a] value - [A7+$59] value is negative => [A7+$59] value>[A7+$5a] value then skip to $459a
004590: 6600 0006 bne $4598 ; else if [A7+$5a] value - [A7+$59] value!=0 then skip next step
004594: 422E 0055 clr.b ($55,A6) ; else [A7+$56] value=0
004598: 7202 moveq #$2, D1 ; D1=2
00459A: D32E 0058 add.b D1, ($58,A6) ; [A7+$59] value+2
00459E: 532D 8A83 subq.b #1, (-$757d,A5) ; [A5-$757d] value-1
0045A2: 4E75 rts
004DAC: 122E 0055 move.b ($55,A6), D1 ; D1=old [A7+$56] value|#$80
004DB0: E849 lsr.w #4, D1 ; D1=(old [A7+$56] value|#$80)>>4
004DB2: 0241 0007 andi.w #$7, D1 ; D1=((old [A7+$56] value|#$80)>>4)&7
004DB6: D241 add.w D1, D1
004DB8: D241 add.w D1, D1 ; D1=(((old [A7+$56] value|#$80)>>4)&7)*4
004DBA: 2ABB 10DC move.l (-$24,PC,D1.w), (A5) ; (A5) value=[$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value
004DBE: 323C 000F move.w #$f, D1 ; D1=#$f
004DC2: 41ED 6C00 lea ($6c00,A5), A0 ; A0=[A5+$6c00]
004DC6: 2070 0000 movea.l (A0,D0.w), A0 ; A0=[A5+$6c00+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value]
004DCA: 226D 8500 movea.l (-$7b00,A5), A1 ; A1=[A5-$7b00]
004DCE: B3FC 0010 06C8 cmpa.l #$1006c8, A1
004DD4: 6200 006E bhi $4e44 ; if [A5-$7b00]>#$1006c8 then goto $4e44 subroutine
004DD8: E748 lsl.w #3, D0 ; D0=([$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value)<<3
004DDA: 0680 0040 0000 addi.l #$400000, D0 ; D0=(([$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value)<<3)+#$400000
004DE0: 22C0 move.l D0, (A1)+ ; [A5-$7aff] value=(([$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value)<<3)+#$400000
004DE2: 32C1 move.w D1, (A1)+ ; [A5-$7afe] value=#$f
004DE4: 102E 0058 move.b ($58,A6), D0 ; D0=[A7+$59] value
004DE8: 2A15 move.l (A5), D5 ; D5=[$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value
004DEA: 45F9 0000 4E46 lea $4e46.l, A2 ; A2=[$4e46]
004DF0: 3418 move.w (A0)+, D2 ; D2=[A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] value
004DF2: 3C02 move.w D2, D6 ; D6=[A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] value
004DF4: E95E rol.w #4, D6 ; D6=[A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] valueROL4
004DF6: 7600 moveq #$0, D3 ; D3=0
004DF8: 7802 moveq #$2, D4 ; D4=2
004DFA: 3F02 move.w D2, -(A7) ; [A7-1] value=[A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] value
004DFC: 0242 000F andi.w #$f, D2 ; D2=([A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] value)&#$f
004E00: E24E lsr.w #1, D6 ; D6=([A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] valueROL4)>>1
004E02: E352 roxl.w #1, D2 ; D2=(([A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] value)&#$f)ROXL1
004E04: B405 cmp.b D5, D2
004E06: 6A00 0010 bpl $4e18 ; if ((([A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] value)&#$f)ROXL1) value-[$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value is positive then goto $4e18
004E0A: D400 add.b D0, D2 ; else D2=((([A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] value)&#$f)ROXL1)+[A7+$59] value
004E0C: B405 cmp.b D5, D2
004E0E: 6B00 0012 bmi $4e22 ; if (((([A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] value)&#$f)ROXL1)+[A7+$59] value)-[$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value is negative then goto $4e22
004E12: 1405 move.b D5, D2 ; else D2=[$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value
004E14: 4EFA 000C jmp ($c,PC) ; ($4e22)
004E18: 9400 sub.b D0, D2 ; D2=((([A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] value)&#$f)ROXL1)-[A7+$59] value
004E1A: B405 cmp.b D5, D2
004E1C: 6A00 0004 bpl $4e22 ; if (((([A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] value)&#$f)ROXL1)-[A7+$59] value)-[$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value is positive then skip next step
004E20: 1405 move.b D5, D2 ; else D2=[$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value
004E22: E34A lsl.w #1, D2 ; D2=([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value)<<1 or (((([A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] value)&#$f)ROXL1)-[A7+$59] value)<<1 or (((([A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] value)&#$f)ROXL1)+[A7+$59] value)<<1
004E24: 8672 2000 or.w (A2,D2.w), D3 ; D3=([$4e46]value+(([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value)<<1))|0 or ([$4e46]value+((((([A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] value)&#$f)ROXL1)-[A7+$59] value)<<1))|0 or ([$4e46]value+((((([A5+$6c01+[$45b5+((([A7+$57] value*4)|[A7+$58] value)*4)] value] value)&#$f)ROXL1)+[A7+$59] value)<<1))|0
004E28: D5FC 0000 0040 adda.l #$40, A2 ; [$4e46] value+#$40
004E2E: 341F move.w (A7)+, D2 ; D2=[A7+1] value
004E30: E84A lsr.w #4, D2 ; D2=[A7+1] value>>4
004E32: E08D lsr.l #8, D5 ; D5=[$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8
004E34: 51CC FFC4 dbra D4, $4dfa ; D4-1, if D4 <> 0 jump back to $4dfa
004E38: 32C3 move.w D3, (A1)+ ; [A5-$7afd] value=0
004E3A: 51C9 FFAC dbra D1, $4de8 ; D1-1, if D1 <> 0 jump back to $4de8
004E3E: 4291 clr.l (A1)
004E40: 2B49 8500 move.l A1, (-$7b00,A5) ; [A5-$7b00] value=0
004E44: 4E75 rts
001B26: 102D 8A85 move.b (-$757b,A5), D0 ; D0=[A5-$757b] value
001B2A: 6700 0004 beq $1b30 ; if [A5-$757b] value=0 then goto $1b30 subroutine
001B2E: 4E75 rts
001B30: 522D 8A77 addq.b #1, (-$7589,A5) ; [A5-$7589] value+1
001B34: 522D 8A80 addq.b #1, (-$7580,A5) ; [A5-$7580] value+1
001B38: 3A3C 0032 move.w #$32, D5 ; D5=#$32
001B3C: 082D 0000 8A80 btst #$0, (-$7580,A5)
001B42: 6700 0006 beq $1b4a ; if 1st bit of [A5-$7580] value=0 => if (old [A5-$7580] value+1) is even then skip next step
001B46: 3A3C 00BE move.w #$be, D5 ; else D5=#$be
001B4A: 3B45 89FE move.w D5, (-$7602,A5) ; [A5-$7602] value=#$32 or #$be
001B4E: 41ED 8764 lea (-$789c,A5), A0 ; A0=[A5-$789c]
001B52: 082D 0000 8A80 btst #$0, (-$7580,A5)
001B58: 6700 000E beq $1b68 ; if (old [A5-$7580] value+1) is even then skip next 5 steps
001B5C: 7200 moveq #$0, D1 ; else D1=0
001B5E: 303C 0045 move.w #$45, D0 ; D0=#$45
001B62: 20C1 move.l D1, (A0)+ ; [A5-$789b] value=0
001B64: 51C8 FFFC dbra D0, $1b62 ; D0-1, if D0 <> 0 then skip to previous step
001B68: 49F9 003C 0002 lea $3c0002.l, A4 ; send REG_VRAMRW to A4
001B6E: 4DED 9040 lea (-$6fc0,A5), A6 ; A6=[A5-$6fc0]
001B72: 200E move.l A6, D0 ; D0=[A5-$6fc0] value
001B74: 302E 0002 move.w ($2,A6), D0 ; lowest word of D0=[A5-$6fbe] value
001B78: 2C40 movea.l D0, A6 ; [A5-$6fc0] value=high word of [A5-$6fc0] value+[A5-$6fbe] value
001B7A: 0C6E FFFF 0004 cmpi.w #-$1, ($4,A6)
001B80: 6700 0018 beq $1b9a ; if [A5-$6fbc] value=-1 then skip next 6 steps
001B84: 4EB9 0000 1BB6 jsr $1bb6.l
001B8A: 4EB9 0000 1ED8 jsr $1ed8.l
001B90: DA6E 0006 add.w ($6,A6), D5 ; D5=[A5-$6fba] value
001B94: 5245 addq.w #1, D5 ; D5=[A5-$6fba] value+1
001B96: 4EFA FFDA jmp (-$26,PC) ; ($1b72)
001B9A: 303C 0148 move.w #$148, D0 ; D0=#$148
001B9E: 9045 sub.w D5, D0 ; D0=#$148-([A5-$6fba] value+1)
001BA0: DA45 add.w D5, D5 ; D5=([A5-$6fba] value+1)*2
001BA2: 41ED 8700 lea (-$7900,A5), A0 ; A0=[A5-$7900]
001BA6: D0C5 adda.w D5, A0 ; A0=[A5-$7900]+(([A5-$6fba] value+1)*2)
001BA8: 7200 moveq #$0, D1 ; D1=0
001BAA: 30C1 move.w D1, (A0)+
001BAC: 51C8 FFFC dbra D0, $1baa ; D0-1, if D0 <> 0 jump back to previous step
001BB0: 532D 8A77 subq.b #1, (-$7589,A5) ; [A5-$7589] value-1
001BB4: 4E75 rts
001BB6: 397C 0001 0002 move.w #$1, ($2,A4) ; REG_VRAMMOD value=1
001BBC: 41F9 0004 C2DC lea $4c2dc.l, A0 ; A0=[$4c2dc]
001BC2: 3E2E 0006 move.w ($6,A6), D7 ; D7=[A5-$6fba] value
001BC6: 3C2E 0008 move.w ($8,A6), D6 ; D6=[A5-$6fb8] value
001BCA: 7000 moveq #$0, D0 ; D0=0
001BCC: 102E 001E move.b ($1e,A6), D0 ; D0=[A5-$6fa2] value
001BD0: D040 add.w D0, D0
001BD2: D040 add.w D0, D0 ; D0=([A5-$6fa2] value)*4
001BD4: 2070 0000 movea.l (A0,D0.w), A0 ; A0=[$4c2dc+(([A5-$6fa2] value)*4)]
001BD8: 302E 0018 move.w ($18,A6), D0 ; D0=[A5-$6fa8] value
001BDC: D040 add.w D0, D0
001BDE: D040 add.w D0, D0 ; D0=([A5-$6fa8] value)*4
001BE0: 7400 moveq #$0, D2 ; D2=0
001BE2: 1430 0000 move.b (A0,D0.w), D2 ; D2=[[$4c2dc+(([A5-$6fa2] value)*4)]+(([A5-$6fa8] value)*4)] value
001BE6: 2030 0000 move.l (A0,D0.w), D0 ; D0=[[$4c2dc+(([A5-$6fa2] value)*4)]+(([A5-$6fa8] value)*4)] value
001BEA: 0280 00FF FFFF andi.l #$ffffff, D0 ; D0=[[$4c2dc+(([A5-$6fa2] value)*4)]+(([A5-$6fa8] value)*4)] value&#$ffffff
001BF0: 2040 movea.l D0, A0 ; A0=[[[$4c2dc+(([A5-$6fa2] value)*4)]+(([A5-$6fa8] value)*4)] value&#$ffffff]
001BF2: 3D58 000A move.w (A0)+, ($a,A6) ; [A5-$6fb6] value=[([[$4c2dc+(([A5-$6fa2] value)*4)]+(([A5-$6fa8] value)*4)] value&#$ffffff)+1] value
001BF6: 3D58 000C move.w (A0)+, ($c,A6) ; [A5-$6fb4] value=[([[$4c2dc+(([A5-$6fa2] value)*4)]+(([A5-$6fa8] value)*4)] value&#$ffffff)+2] value
001BFA: 1218 move.b (A0)+, D1 ; D1=[([[$4c2dc+(([A5-$6fa2] value)*4)]+(([A5-$6fa8] value)*4)] value&#$ffffff)+3] value
001BFC: D22E 001D add.b ($1d,A6), D1 ; D1=[([[$4c2dc+(([A5-$6fa2] value)*4)]+(([A5-$6fa8] value)*4)] value&#$ffffff)+3] value+[A5-$6fa3] value
001C00: 6400 0004 bcc $1c06 ; if C flag=0 then skip next step
001C04: 7205 moveq #$5, D1 ; else D1=5
001C06: 1A81 move.b D1, (A5) ; lowest byte of (A5) value=[([[$4c2dc+(([A5-$6fa2] value)*4)]+(([A5-$6fa8] value)*4)] value&#$ffffff)+3] value+[A5-$6fa3] value or 5
001C08: 3215 move.w (A5), D1 ; D1=high byte of [$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value lowest word+[([[$4c2dc+(([A5-$6fa2] value)*4)]+(([A5-$6fa8] value)*4)] value&#$ffffff)+3] value+[A5-$6fa3] value or D1=high byte of [$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value lowest word+5
001C0A: 4201 clr.b D1 ; lowest byte of D1=0
001C0C: 47FA 02C6 lea ($2c6,PC) ; ($1ed4), A3
001C10: 3605 move.w D5, D3 ; D3=#$32 or #$be
001C12: 4A2E 001C tst.b ($1c,A6)
001C16: 6700 0008 beq $1c20 ; if [A5-$6fa4] value=0 then skip next 3 steps
001C1A: 5241 addq.w #1, D1 ; D1=high byte of [$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value lowest word+[([[$4c2dc+(([A5-$6fa2] value)*4)]+(([A5-$6fa8] value)*4)] value&#$ffffff)+3] value+[A5-$6fa3] value+1 or D1=high byte of [$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value lowest word+6
001C1C: 544B addq.w #2, A3 ; [$1ed4] value+2
001C1E: D647 add.w D7, D3 ; D3=[A5-$6fba] value+#$32 or [A5-$6fba] value+#$be
001C20: ED4B lsl.w #6, D3 ; D3=([A5-$6fba] value+#$32)<<6 or ([A5-$6fba] value+#$be)<<6
001C22: 0643 0040 addi.w #$40, D3 ; D3=(([A5-$6fba] value+#$32)<<6)+#$40 or (([A5-$6fba] value+#$be)<<6)+#$40
001C26: 102E 001B move.b ($1b,A6), D0 ; D0=[A5-$6fa5] value
001C2A: 6700 0010 beq $1c3c ; if [A5-$6fa5] value=0 then skip next 4 steps
001C2E: 0240 00F0 andi.w #$f0, D0 ; else D0=[A5-$6fa5] value&#$f0
001C32: 8046 or.w D6, D0 ; D0=([A5-$6fa5] value&#$f0)|[A5-$6fb8] value
001C34: 45F9 0000 1CBC lea $1cbc.l, A2 ; A2=[$1cbc]
001C3A: D4C0 adda.w D0, A2 ; A2=[$1cbc]+(([A5-$6fa5] value&#$f0)|[A5-$6fb8] value)
001C3C: 4845 swap D5 ; D5=#$320000+lowest word of ([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8) value or D5=#$be0000+lowest word of ([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8) value
001C3E: D442 add.w D2, D2
001C40: D442 add.w D2, D2 ; D2=[[$4c2dc+(([A5-$6fa2] value)*4)]+(([A5-$6fa8] value)*4)] value*4
001C42: 227B 2008 movea.l ($8,PC,D2.w), A1 ; A1=[$1c4c+([[$4c2dc+(([A5-$6fa2] value)*4)]+(([A5-$6fa8] value)*4)] value*4)]
001C46: 4E91 jsr (A1)
001C48: 4845 swap D5
001C4A: 4E75 rts
001ED8: 397C 0001 0002 move.w #$1, ($2,A4) ; REG_VRAMMOD value=1
001EDE: 3005 move.w D5, D0 ; D0=(lowest word of ([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8) value*#$10000)+#$32 or D0=(lowest word of ([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8) value*#$10000)+#$be
001EE0: D040 add.w D0, D0 ; D0=((lowest word of ([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8) value*#$10000)+#$32)*2 or D0=((lowest word of ([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8) value*#$10000)+#$be)*2
001EE2: 47ED 8700 lea (-$7900,A5), A3 ; A3=[A5-$7900]
001EE6: D6C0 adda.w D0, A3 ; A3=[A5-$7900]+(((lowest word of ([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8) value*#$10000)+#$32)*2) or A3=[A5-$7900]+(((lowest word of ([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8) value*#$10000)+#$be)*2)
001EE8: 382E 0006 move.w ($6,A6), D4 ; D4=[A5-$6fba] value
001EEC: 322E 000C move.w ($c,A6), D1 ; D1=[A5-$6fb4] value
001EF0: 102E 001B move.b ($1b,A6), D0 ; D0=[A5-$6fa5] value
001EF4: 6700 000C beq $1f02 ; if [A5-$6fa5] value=0 then skip next 4 steps
001EF8: 0240 00FF andi.w #$ff, D0 ; else D0=[A5-$6fa5] value&#$ff
001EFC: C1C1 muls.w D1, D0 ; D0=([A5-$6fa5] value&#$ff)*[A5-$6fb4] value
001EFE: E088 lsr.l #8, D0 ; D0=(([A5-$6fa5] value&#$ff)*[A5-$6fb4] value)>>8
001F00: 9240 sub.w D0, D1 ; D1=[A5-$6fb4] value-((([A5-$6fa5] value&#$ff)*[A5-$6fb4] value)>>8)
001F02: 302E 0012 move.w ($12,A6), D0 ; D0=[A5-$6fae] value
001F06: 9041 sub.w D1, D0 ; D0=[A5-$6fae] value-([A5-$6fb4] value-((([A5-$6fa5] value&#$ff)*[A5-$6fb4] value)>>8))
001F08: 4440 neg.w D0 ; D0=-([A5-$6fae] value-([A5-$6fb4] value-((([A5-$6fa5] value&#$ff)*[A5-$6fb4] value)>>8)))
001F0A: EF48 lsl.w #7, D0 ; D0=-([A5-$6fae] value-([A5-$6fb4] value-((([A5-$6fa5] value&#$ff)*[A5-$6fb4] value)>>8)))<<7
001F0C: 806E 0008 or.w ($8,A6), D0 ; D0=(-([A5-$6fae] value-([A5-$6fb4] value-((([A5-$6fa5] value&#$ff)*[A5-$6fb4] value)>>8)))<<7)|[A5-$6fb8] value
001F10: 5240 addq.w #1, D0 ; D0=((-([A5-$6fae] value-([A5-$6fb4] value-((([A5-$6fa5] value&#$ff)*[A5-$6fb4] value)>>8)))<<7)|[A5-$6fb8] value)+1
001F12: 36C0 move.w D0, (A3)+ ; [A5-$78ff] value=((-([A5-$6fae] value-([A5-$6fb4] value-((([A5-$6fa5] value&#$ff)*[A5-$6fb4] value)>>8)))<<7)|[A5-$6fb8] value)+1
001F14: 3004 move.w D4, D0 ; D0=[A5-$6fba] value
001F16: 5340 subq.w #1, D0 ; D0=[A5-$6fba] value-1
001F18: 6B00 000C bmi $1f26 ; if [A5-$6fba] value-1 is negative then skip next 4 steps
001F1C: 323C 0040 move.w #$40, D1 ; else D1=#$40
001F20: 36C1 move.w D1, (A3)+ ; [A5-$78fe] value=[A5-$6fb4] value-((([A5-$6fa5] value&#$ff)*[A5-$6fb4] value)>>8) or [A5-$78fe] value=#$40
001F22: 51C8 FFFC dbra D0, $1f20 ; D0-1, if D0 <> 0 jump back to previous step
001F26: 303C 8401 move.w #$8401, D0 ; D0=#$8401
001F2A: D045 add.w D5, D0 ; D0=(lowest word of ([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8) value*#$10000)+#$8433 or D0=(lowest word of ([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8) value*#$10000)+#$84bf
001F2C: 3940 FFFE move.w D0, (-$2,A4) ; send D0 to REG_VRAMADDR
001F30: 322E 000A move.w ($a,A6), D1 ; D1=[A5-$6fb6] value
001F34: 4A2E 001C tst.b ($1c,A6)
001F38: 6700 000E beq $1f48 ; if [A5-$6fa4]=0 then skip next 5 steps
001F3C: 302E 0006 move.w ($6,A6), D0 ; else D0=[A5-$6fba] value
001F40: 5240 addq.w #1, D0 ; D0=[A5-$6fba] value+1
001F42: E948 lsl.w #4, D0 ; D0=([A5-$6fba] value+1)<<4
001F44: 9041 sub.w D1, D0 ; D0=(([A5-$6fba] value+1)<<4)-[A5-$6fb6] value
001F46: 3200 move.w D0, D1 ; D1=(([A5-$6fba] value+1)<<4)-[A5-$6fb6] value
001F48: 102E 001A move.b ($1a,A6), D0 ; D0=[A5-$6fa6] value
001F4C: 6700 000C beq $1f5a ; if [A5-$6fa6] value=0 then skip next 4 steps
001F50: 0240 00FF andi.w #$ff, D0 ; else D0=[A5-$6fa6] value&#$ff
001F54: C1C1 muls.w D1, D0 ; D0=([A5-$6fa6] value&#$ff)*[A5-$6fb6] value or D0=([A5-$6fa6] value&#$ff)*((([A5-$6fba] value+1)<<4)-[A5-$6fb6] value)
001F56: E088 lsr.l #8, D0 ; D0=(([A5-$6fa6] value&#$ff)*[A5-$6fb6] value)>>8 or D0=(([A5-$6fa6] value&#$ff)*((([A5-$6fba] value+1)<<4)-[A5-$6fb6] value))>>8
001F58: 9240 sub.w D0, D1 ; D1=[A5-$6fb6] value-((([A5-$6fa6] value&#$ff)*[A5-$6fb6] value)>>8) or D1=[A5-$6fb6] value-((([A5-$6fa6] value&#$ff)*((([A5-$6fba] value+1)<<4)-[A5-$6fb6] value))>>8) or D1=((([A5-$6fba] value+1)<<4)-[A5-$6fb6] value)-((([A5-$6fa6] value&#$ff)*[A5-$6fb6] value)>>8) or D1=((([A5-$6fba] value+1)<<4)-[A5-$6fb6] value)-((([A5-$6fa6] value&#$ff)*((([A5-$6fba] value+1)<<4)-[A5-$6fb6] value))>>8)
001F5A: 302E 0010 move.w ($10,A6), D0 ; D0=[A5-$6fb0] value
001F5E: 9041 sub.w D1, D0 ; D0=[A5-$6fb0] value-([A5-$6fb6] value-((([A5-$6fa6] value&#$ff)*[A5-$6fb6] value)>>8)) or D0=[A5-$6fb0] value-([A5-$6fb6] value-((([A5-$6fa6] value&#$ff)*((([A5-$6fba] value+1)<<4)-[A5-$6fb6] value))>>8)) or D0=[A5-$6fb0] value-(((([A5-$6fba] value+1)<<4)-[A5-$6fb6] value)-((([A5-$6fa6] value&#$ff)*[A5-$6fb6] value)>>8)) or D0=[A5-$6fb0] value-(((([A5-$6fba] value+1)<<4)-[A5-$6fb6] value)-((([A5-$6fa6] value&#$ff)*((([A5-$6fba] value+1)<<4)-[A5-$6fb6] value))>>8)) or D0=[A5-$6fb0] value-((([A5-$6fba] value+1)<<4)-[A5-$6fb6] value), or...
001F60: EF48 lsl.w #7, D0
001F62: 3880 move.w D0, (A4)
001F64: 4A6E 001A tst.w ($1a,A6)
001F68: 6700 000A beq $1f74 ; if [A5-$6fa6] value=0 then skip next steps
001F6C: 4EBA 001E jsr ($1e,PC) ; ($1f8c)
001F70: 4EFA 0018 jmp ($18,PC) ; ($1f8a)
001F74: 303C 8001 move.w #$8001, D0 ; D0=#$8001
001F78: D045 add.w D5, D0 ; D0=(lowest word of ([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8) value*#$10000)+#$8033 or D0=(lowest word of ([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8) value*#$10000)+#$80bf
001F7A: 3940 FFFE move.w D0, (-$2,A4)
001F7E: 3004 move.w D4, D0 ; D0=[A5-$6fba] value
001F80: 323C 0FFF move.w #$fff, D1 ; D1=#$fff
001F84: 3881 move.w D1, (A4)
001F86: 51C8 FFFC dbra D0, $1f84 ; D0-1, if D0 <> 0 jump back to previous step
001F8A: 4E75 rts
001F8C: 303C 8001 move.w #$8001, D0 ; D0=#$8001
001F90: D045 add.w D5, D0 ; D0=(lowest word of ([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8) value*#$10000)+#$8033 or D0=(lowest word of ([$4d98+((((old [A7+$56] value|#$80)>>4)&7)*4)] value>>8) value*#$10000)+#$80bf
001F92: 3940 FFFE move.w D0, (-$2,A4) ; send D0 to REG_VRAMADDR
001F96: 3E04 move.w D4, D7 ; D7=[A5-$6fba] value
001F98: 7000 moveq #$0, D0 ; D0=0
001F9A: 102E 001A move.b ($1a,A6), D0 ; D0=[A5-$6fa6] value
001F9E: E948 lsl.w #4, D0 ; D0=[A5-$6fa6] value<<4
001FA0: 3400 move.w D0, D2 ; D2=[A5-$6fa6] value<<4
001FA2: 142E 001B move.b ($1b,A6), D2 ; lowest byte of D2=[A5-$6fa5] value
001FA6: 0A42 0FFF eori.w #$fff, D2 ; D2=(high byte of ([A5-$6fa6] value<<4) value+lowest byte of [A5-$6fa5] value)^#$fff
001FAA: 7200 moveq #$0, D1 ; D1=0
001FAC: 3602 move.w D2, D3 ; D3=(high byte of ([A5-$6fa6] value<<4) value+lowest byte of [A5-$6fa5] value)^#$fff
001FAE: D200 add.b D0, D1 ; D1=[A5-$6fa6] value<<4
001FB0: 6400 0006 bcc $1fb8 ; if C flag=0 then skip next step
001FB4: 0443 0100 subi.w #$100, D3 ; else D3=((high byte of ([A5-$6fa6] value<<4) value+lowest byte of [A5-$6fa5] value)^#$fff)-#$100
001FB8: 3883 move.w D3, (A4)
001FBA: 51CF FFF0 dbra D7, $1fac ; D7-1, if D7 <> 0 jump back to $1fac
001FBE: 4E75 rts
02D46A: 1039 0010 FD97 move.b $10fd97.l, D0 ; D0=P1_CHANGE value
02D470: 4A2D 8A00 tst.b (-$7600,A5)
02D474: 6700 0008 beq $2d47e ; if [A5-$7600] value=0 then skip next step
02D478: 1039 0010 FD9D move.b $10fd9d.l, D0 ; else D0=P2_CHANGE value
02D47E: 0800 0005 btst #$5, D0
02D482: 6700 001E beq $2d4a2 ; if (p1e&JOY_B) or (p2e&JOY_B) then skip to $2d4a2
02D486: 4A2E 001A tst.b ($1a,A6)
02D48A: 6700 0016 beq $2d4a2 ; else if [A6+$1a] value=0 then skip to $2d4a2
02D48E: 532E 001A subq.b #1, ($1a,A6) ; else [A6+$1a] value-1
02D492: 7200 moveq #$0, D1 ; D1=0
02D494: 122E 001A move.b ($1a,A6), D1 ; D1=[A6+$1a] value
02D498: 41EE 0016 lea ($16,A6), A0 ; A0=[A6+$16]
02D49C: 11BC 0025 1000 move.b #$25, (A0,D1.w) ; [A6+$16+([A6+$1a] value)] value=#$25
02D4A2: 0800 0004 btst #$4, D0
02D4A6: 6700 007C beq $2d524 ; if (p1e&JOY_A) or (p2e&JOY_A) then skip to $2d524
02D4AA: 303C 01F4 move.w #$1f4, D0 ; else D0=#$1f4
02D4AE: 4EB9 0002 B7F4 jsr $2b7f4.l
02D4B4: 41EE 0016 lea ($16,A6), A0 ; A0=[A6+$16]
02D4B8: 7000 moveq #$0, D0 ; D0=0
02D4BA: 102E 001A move.b ($1a,A6), D0 ; D0=[A6+$1a] value
02D4BE: 7200 moveq #$0, D1 ; D1=0
02D4C0: 122E 001B move.b ($1b,A6), D1 ; D1=[A6+$1b] value
02D4C4: 1181 0000 move.b D1, (A0,D0.w) ; [A6+$16+([A6+$1a] value)] value=[A6+$1b] value
02D4C8: 522E 001A addq.b #1, ($1a,A6) ; [A6+$1a] value+1
02D4CC: 0C2E 0003 001A cmpi.b #$3, ($1a,A6)
02D4D2: 6600 0050 bne $2d524 ; if old [A6+$1a] value+1!=0 then skip to $2d524
02D4D6: 4EBA FF1E jsr (-$e2,PC) ; ($2d3f6)
02D4DA: 6B00 0040 bmi $2d51c ; if D0 value&D0 value is negative then skip to $2d51c
02D4DE: 5340 subq.w #1, D0 ; else D0=(old D0 value&old D0 value)-1
02D4E0: 6B00 0028 bmi $2d50a ; if (old D0 value&old D0 value)-1 is negative then skip to $2d50a
02D4E4: 43ED 804E lea (-$7fb2,A5), A1 ; else A1=[A5-$7fb2]
02D4E8: 45ED 803E lea (-$7fc2,A5), A2 ; A2=[A5-$7fc2]
02D4EC: 236A 0000 0000 move.l ($0,A2), ($0,A1) ; [A5-$7fb2] value=[A5-$7fc2] value
02D4F2: 236A 0004 0004 move.l ($4,A2), ($4,A1) ; [A5-$7fb6] value=[A5-$7fc6] value
02D4F8: 136A 0008 0008 move.b ($8,A2), ($8,A1) ; [A5-$7fbe] value=[A5-$7fce] value
02D4FE: 92FC 0010 suba.w #$10, A1 ; A1=[A5-$7fa2]
02D502: 94FC 0010 suba.w #$10, A2 ; A2=[A5-$7fb2]
02D506: 51C8 FFE4 dbra D0, $2d4ec ; D0-1, if D0 <> 0 jump 4 steps back
02D50A: 216E 0016 0004 move.l ($16,A6), ($4,A0) ; [A0+$4] value=[A6+$16] value
02D510: 216E 0000 0000 move.l ($0,A6), ($0,A0) ; [A0] value=[A6] value
02D516: 116D 8A93 0008 move.b (-$756d,A5), ($8,A0) ; [A0+$8] value=[A5-$756d] value
02D51C: 526E 0010 addq.w #1, ($10,A6) ; [A6+$10] value+1
02D520: 4EFA 002E jmp ($2e,PC) ; ($2d550)
02D524: 303C 002A move.w #$2a, D0 ; D0=#$2a
02D528: D02D 8A00 add.b (-$7600,A5), D0 ; D0=#$2a+[A5-$7600] value
02D52C: 4EB9 0000 41AA jsr $41aa.l
02D532: 303C 1300 move.w #$1300, D0 ; D0=#$1300
02D536: 4EBA 001A jsr ($1a,PC) ; ($2d552)
02D53A: 322D 89F8 move.w (-$7608,A5), D1 ; D1=[A5-$7608] value
02D53E: 7000 moveq #$0, D0 ; D0=0
02D540: 0241 0010 andi.w #$10, D1 ; D1=[A5-$7608] value&#$10
02D544: 6600 0006 bne $2d54c ; if [A5-$7608] value&#$10!=0 then skip next step
02D548: 303C 1300 move.w #$1300, D0 ; else D0=#$1300
02D54C: 4EBA 0056 jsr ($56,PC) ; ($2d5a4)
02D550: 4E75 rts
02B7F4: D040 add.w D0, D0 ; D0=#$1f4*2=#$3e8
02B7F6: 3B7B 001E 7102 move.w ($1e,PC,D0.w), ($7102,A5) ; [A5+$7102] value=[$2bbfe] value=#$0
02B7FC: 2F08 move.l A0, -(A7) ; [A7-1]=A0 initial address or [A6+$16]
02B7FE: 41ED 7000 lea ($7000,A5), A0 ; A0=[A5+$7000]
02B802: 7000 moveq #$0, D0 ; D0=0
02B804: 102D 7104 move.b ($7104,A5), D0 ; D0=[A5+$7104] value
02B808: 31AD 7102 0000 move.w ($7102,A5), (A0,D0.w) ; [A5+$7000+([A5+$7104] value)] value=#$0
02B80E: 542D 7104 addq.b #2, ($7104,A5) ; [A5+$7104] value+2
02B812: 205F movea.l (A7)+, A0 ; A0=[old A7 address]
02B814: 4E75 rts
02D3F6: 41F9 000F FFFE lea $ffffe.l, A0 ; A0=[$ffffe]
02D3FC: 7004 moveq #$4, D0 ; D0=4
02D3FE: 72FF moveq #-$1, D1 ; D1=-1
02D400: 242E 0000 move.l ($0,A6), D2 ; D2=[A6] value
02D404: 5241 addq.w #1, D1 ; D1=0
02D406: D0FC 0010 adda.w #$10, A0 ; A0=[$ffffe]+#$10
02D40A: B4A8 0000 cmp.l ($0,A0), D2
02D40E: 52C8 FFF4 dbhi D0, $2d404 ; D0-1, if [A6] value>([$ffffe]+#$10) value then skip 2 steps back
02D412: C040 and.w D0, D0 ; I don't understand why it's need to make an AND operation with two same numbers because result value will have no differences from previous value
02D414: 4E75 rts
0041AA: C040 and.w D0, D0 ; I don't understand why it's need to make an AND operation with two same numbers because result value will have no differences from previous value
0041AC: 6B00 004C bmi $41fa
0041B0: 522D 8A79 addq.b #1, (-$7587,A5) ; [A5-$7587] value+1
0041B4: E548 lsl.w #2, D0 ; D0=((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4
0041B6: 41F9 0004 C5E0 lea $4c5e0.l, A0 ; A0=[$4c5e0]
0041BC: 4A39 0010 FD83 tst.b $10fd83.l
0041C2: 6700 0008 beq $41cc ; if BIOS_COUNTRY_CODE is Japanese then goto skip next step
0041C6: 41F9 0004 CDF2 lea $4cdf2.l, A0 ; else A0=[$4cdf2]
0041CC: 2070 0000 movea.l (A0,D0.w), A0 ; A0=[$4c5e0+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] or A0=[$4cdf2+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value]
0041D0: 226D 8100 movea.l (-$7f00,A5), A1 ; A1=[$[A5-$7f00] value]
0041D4: 32D8 move.w (A0)+, (A1)+ ; [$[A5-$7f00] value+1] value=[$4c5e1+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] value or [$[A5-$7f00] value+1] value=[$4cdf3+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] value
0041D6: 6700 0016 beq $41ee ; if [$[A5-$7f00] value+1] value=0 then skip to $41ee
0041DA: 1018 move.b (A0)+, D0 ; else D0=[$4c5e2+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] value or D0=[$4cdf4+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] value
0041DC: E148 lsl.w #8, D0 ; D0=[$4c5e2+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] value<<8 or D0=[$4cdf4+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] value<<8
0041DE: 7200 moveq #$0, D1 ; D1=0
0041E0: 1218 move.b (A0)+, D1 ; D1=[$4c5e3+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] value or D1=[$4cdf5+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] value
0041E2: 32C1 move.w D1, (A1)+ ; [$[A5-$7f00] value+2] value=[$4c5e3+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] value or [$[A5-$7f00] value+2] value=[$4cdf5+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] value
0041E4: 3298 move.w (A0)+, (A1) ; [$[A5-$7f00] value+2] value=[$4c5e4+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] value or [$[A5-$7f00] value+2] value=[$4cdf6+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] value
0041E6: 8159 or.w D0, (A1)+ ; [$[A5-$7f00] value+3] value=old [$[A5-$7f00] value+3] value|([$4c5e2+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] value<<8) or [$[A5-$7f00] value+3] value=old [$[A5-$7f00] value+3] value|([$4cdf4+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<4) value] value<<8)
0041E8: 51C9 FFFA dbra D1, $41e4 ; D1-1, if D1 <> 0 jump 1 step back
0041EC: 60E6 bra $41d4
0041EE: 5549 subq.w #2, A1
0041F0: 2B49 8100 move.l A1, (-$7f00,A5) ; [A5-$7f00] value=(old A1 address)-2
0041F4: 532D 8A79 subq.b #1, (-$7587,A5) ; [A5-$7587] value-1
0041F8: 4E75 rts
0041FA: 522D 8A79 addq.b #1, (-$7587,A5) ; [A5-$7587] value+1
0041FE: E548 lsl.w #2, D0 ; D0=((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<2
004200: 41F9 0004 C5E0 lea $4c5e0.l, A0 ; A0=[$4c5e0]
004206: 2070 0000 movea.l (A0,D0.w), A0 ; A0=[$4c5e0+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<2)]
00420A: 226D 8100 movea.l (-$7f00,A5), A1 ; A1=[A5-$7f00]
00420E: 32D8 move.w (A0)+, (A1)+ ; [A5-$7eff] value=[$4c5e1+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<2)] value
004210: 6700 0016 beq $4228 ; if [A5-$7eff] value=0 then skip to $4228
004214: 3218 move.w (A0)+, D1 ; else D1=[$4c5e2+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<2)] value
004216: 0241 00FF andi.w #$ff, D1 ; D1=[$4c5e2+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<2)] value&#$ff
00421A: 32C1 move.w D1, (A1)+ ; [A5-$7efe] value=[$4c5e2+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<2)] value&#$ff
00421C: 32FC 0320 move.w #$320, (A1)+ ; [A5-$7efd] value=#$320
004220: 5448 addq.w #2, A0 ; A0=[$4c5e4+(((#$2a+[A5-$7600] value)&(#$2a+[A5-$7600] value))<<2)]
004222: 51C9 FFF8 dbra D1, $421c ; D1-1, if D1 <> 0 jump 1 step back
004226: 60E6 bra $420e
004228: 5549 subq.w #2, A1
00422A: 2B49 8100 move.l A1, (-$7f00,A5) ; [A5-$7f00] value=[old A1 address]-2
00422E: 532D 8A79 subq.b #1, (-$7587,A5) ; [A5-$7587] value-1
004232: 4E75 rts
02D552: 522D 8A79 addq.b #1, (-$7587,A5) ; [A5-$7587] value+1
02D556: 7C02 moveq #$2, D6 ; D6=2
02D558: 43EE 0016 lea ($16,A6), A1 ; A1=[A6+$16]
02D55C: 2479 0010 0100 movea.l $100100.l, A2 ; A2=[$100100]
02D562: 7200 moveq #$0, D1 ; D1=0
02D564: 1231 6000 move.b (A1,D6.w), D1 ; D1=[A6+$18] value
02D568: 41F9 0002 D604 lea $2d604.l, A0 ; A0=[$2d604]
02D56E: 1030 1000 move.b (A0,D1.w), D0 ; D0=[$2d604+([A6+$18] value)] value
02D572: 41FA 0084 lea ($84,PC) ; ($2d5f8), A0
02D576: 4A2D 8A00 tst.b (-$7600,A5)
02D57A: 6700 0006 beq $2d582 ; if [A5-$7600] value=0 then skip next step
02D57E: D0FC 0006 adda.w #$6, A0 ; A0=[$2d5fe]
02D582: 3206 move.w D6, D1 ; D1=2
02D584: D241 add.w D1, D1 ; D1=4
02D586: D0C1 adda.w D1, A0 ; A0=[$2d602]
02D588: 3210 move.w (A0), D1 ; D1=[$2d602] value=#$73e3
02D58A: 34C1 move.w D1, (A2)+ ; [$100101] value=#$73e3
02D58C: 34FC 0000 move.w #$0, (A2)+ ; [$100102] value=0
02D590: 34C0 move.w D0, (A2)+ ; [$100103] value=[$2d604+([A6+$18] value)] value
02D592: 51CE FFCE dbra D6, $2d562 ; D6-1, if D1 <> 0 jump back to $2d562
02D596: 23CA 0010 0100 move.l A2, $100100.l ; [$100100] value=#$100109
02D59C: 4252 clr.w (A2) ; [#$100109] value=0
02D59E: 532D 8A79 subq.b #1, (-$7587,A5) ; [A5-$7587] value-1
02D5A2: 4E75 rts
02D5A4: 522D 8A79 addq.b #1, (-$7587,A5) ; [A5-$7587] value+1
02D5A8: C040 and.w D0, D0 ; D0=0&0=0 or #$1300&#$1300=#$1300
02D5AA: 6600 000A bne $2d5b6 ; if D0=#$1300 then skip next 2 steps
02D5AE: 303C 1320 move.w #$1320, D0 ; else D0=#$1320
02D5B2: 4EFA 000C jmp ($c,PC) ; ($2d5c0)
02D5B6: 7200 moveq #$0, D1 ; D1=0
02D5B8: 122E 001B move.b ($1b,A6), D1 ; D1=[A6+$1b] value
02D5BC: 103B 1046 move.b ($46,PC,D1.w), D0 ; lowest byte of D0=[$2d604+[A6+$1b] value] value
02D5C0: 41FA 0036 lea ($36,PC) ; ($2d5f8), A0 ; A0=[$2d5f8]
02D5C4: 4A2D 8A00 tst.b (-$7600,A5)
02D5C8: 6700 0006 beq $2d5d0 ; if [A5-$7600] value=0 then skip next step
02D5CC: D0FC 0006 adda.w #$6, A0 ; else A0=[$2d5fe]
02D5D0: 7200 moveq #$0, D1 ; D1=0
02D5D2: 122E 001A move.b ($1a,A6), D1 ; D1=[A6+$1a] value
02D5D6: D241 add.w D1, D1 ; D1=[A6+$1a] value*2
02D5D8: D0C1 adda.w D1, A0 ; A0=[$2d5f8+([A6+$1a] value*2)] or [$2d5fe+([A6+$1a] value*2)]
02D5DA: 3210 move.w (A0), D1 ; D1=[$2d5f8+([A6+$1a] value*2)] value or [$2d5fe+([A6+$1a] value*2)] value
02D5DC: 2079 0010 0100 movea.l $100100.l, A0 ; A0=[$100100]
02D5E2: 30C1 move.w D1, (A0)+ ; [$100101] value=[$2d5f8+([A6+$1a] value*2)] value or [$100101] value=[$2d5fe+([A6+$1a] value*2)] value
02D5E4: 30FC 0000 move.w #$0, (A0)+ ; [$100102] value=0
02D5E8: 30C0 move.w D0, (A0)+ ; [$100103] value=#$1300+[$2d604+[A6+$1b] value] value or [$100103] value=#$1320
02D5EA: 23C8 0010 0100 move.l A0, $100100.l ; [$100100] value=#$100103
02D5F0: 4250 clr.w (A0) ; [$100103] value=0
02D5F2: 532D 8A79 subq.b #1, (-$7587,A5) ; [A5-$7587] value-1
02D5F6: 4E75 rts
01F83C: 1039 0010 FD98 move.b $10fd98.l, D0 ; D0=P1_REPEAT value
01F842: 8039 0010 FD9E or.b $10fd9e.l, D0 ; D0=P1_REPEAT value|P2_REPEAT value
01F848: 0240 000F andi.w #$f, D0 ; D0=(P1_REPEAT value|P2_REPEAT value)&#$f
01F84C: 6700 002C beq $1f87a ; if (P1_REPEAT value|P2_REPEAT value)&#$f=0 => neither P1 stick nor P2 stick is active then end the subroutine
01F850: D040 add.w D0, D0 ; else D0=((P1_REPEAT value|P2_REPEAT value)&#$f)*2
01F852: D430 0000 add.b (A0,D0.w), D2 ; D2+[A0+$(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value
01F856: 6B00 0022 bmi $1f87a ; if old D2 value+[A0+$(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value is negative then end the subroutine
01F85A: 0C02 0011 cmpi.b #$11, D2
01F85E: 6700 001A beq $1f87a ; else if old D2 value+[A0+$(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value=#$11 then end the subroutine
01F862: D630 0001 add.b ($1,A0,D0.w), D3 ; else D3+[(A0+1)+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value
01F866: 6B00 0012 bmi $1f87a ; if old D3 value+[(A0+1)+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value is negative then end the subroutine
01F86A: 0C03 000A cmpi.b #$a, D3
01F86E: 6700 000A beq $1f87a ; else if old D3 value+[(A0+1)+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value=#$a then end the subroutine
01F872: 1B42 8D10 move.b D2, (-$72f0,A5) ; else D2=[A5-$72f0] value
01F876: 1B43 8D11 move.b D3, (-$72ef,A5) ; else D3=[A5-$72ef] value
01F87A: 4E75 rts
01F884: 1039 0010 FD98 move.b $10fd98.l, D0 ; D0=P1_REPEAT value
01F88A: 8039 0010 FD9E or.b $10fd9e.l, D0 ; D0=P1_REPEAT value|P2_REPEAT value
01F890: 0240 00F0 andi.w #$f0, D0 ; D0=(P1_REPEAT value|P2_REPEAT value)&#$f0
01F894: 6700 003C beq $1f8d2 ; if (P1_REPEAT value|P2_REPEAT value)&#$f0=0 => neither P1 A/B/C/D buttons nor P2 A/B/C/D buttons is pressed then end the subroutine
01F898: 4A03 tst.b D3
01F89A: 6600 000C bne $1f8a8 ; if D3!=0 then skip next 2 steps
01F89E: 4EB9 0001 F8D4 jsr $1f8d4.l
01F8A4: 6000 002C bra $1f8d2
01F8A8: 0C03 0001 cmpi.b #$1, D3
01F8AC: 6600 000C bne $1f8ba ; if D3!=1 then skip next 2 steps
01F8B0: 4EB9 0001 F8F6 jsr $1f8f6.l
01F8B6: 6000 001A bra $1f8d2
01F8BA: 0C02 0010 cmpi.b #$10, D2
01F8BE: 6600 000C bne $1f8cc ; if D2!=#$10 then skip next 2 steps
01F8C2: 4EB9 0001 F92C jsr $1f92c.l
01F8C8: 6000 0008 bra $1f8d2
01F8CC: 4EB9 0001 F982 jsr $1f982.l
01F8D2: 4E75 rts
01F8D4: 0800 0004 btst #$4, D0
01F8D8: 6700 001A beq $1f8f4 ; if 5th bit of ((P1_REPEAT value|P2_REPEAT value)&#$f0) value=0 then end the subroutine
01F8DC: 422D 8D12 clr.b (-$72ee,A5) ; else [A5-$72ee] value=0
01F8E0: 062D 0001 8D13 addi.b #$1, (-$72ed,A5) ; [A5-$72ed] value+1
01F8E6: 0C2D 000D 8D13 cmpi.b #$d, (-$72ed,A5)
01F8EC: 6600 0006 bne $1f8f4 ; if old [A5-$72ed] value+1!=#$d then end the subroutine
01F8F0: 422D 8D13 clr.b (-$72ed,A5) ; else [A5-$72ed]=0
01F8F4: 4E75 rts
01F8F6: 0800 0004 btst #$4, D0
01F8FA: 6700 0008 beq $1f904 ; if 5th bit of ((P1_REPEAT value|P2_REPEAT value)&#$f0) value=0 then skip next step
01F8FE: 062D 0001 8D12 addi.b #$1, (-$72ee,A5) ; else [A5-$72ee]+1
01F904: 7000 moveq #$0, D0 ; D0=0
01F906: 102D 8D13 move.b (-$72ed,A5), D0 ; D0=[A5-$72ed] value
01F90A: 41F9 0002 427C lea $2427c.l, A0 ; A0=[$2427c]
01F910: E548 lsl.w #2, D0 ; D0=[A5-$72ed] value<<2
01F912: 2070 0000 movea.l (A0,D0.w), A0 ; A0=[$2427c+([A5-$72ed] value<<2)]
01F916: 7000 moveq #$0, D0 ; D0=0
01F918: 102D 8D12 move.b (-$72ee,A5), D0 ; D0=[A5-$72ee] value
01F91C: E548 lsl.w #2, D0 ; D0=[A5-$72ee] value<<2
01F91E: 2030 0000 move.l (A0,D0.w), D0 ; D0=[($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value
01F922: 6600 0006 bne $1f92a ; if [($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value!=0 then skip next step
01F926: 422D 8D12 clr.b (-$72ee,A5) ; else [A5-$72ee] value=0
01F92A: 4E75 rts
01F92C: 7200 moveq #$0, D1 ; D1=0
01F92E: 122D 8D13 move.b (-$72ed,A5), D1 ; D1=[A5-$72ed] value
01F932: 41F9 0002 427C lea $2427c.l, A0 ; A0=[$2427c]
01F938: E549 lsl.w #2, D1 ; D1=[A5-$72ed] value<<2
01F93A: 2070 1000 movea.l (A0,D1.w), A0 ; A0=[$2427c+([A5-$72ed] value<<2)]
01F93E: 7200 moveq #$0, D1 ; D1=0
01F940: 122D 8D12 move.b (-$72ee,A5), D1 ; D1=[A5-$72ee] value
01F944: E549 lsl.w #2, D1 ; D1=[A5-$72ee] value<<2
01F946: 2230 1000 move.l (A0,D1.w), D1 ; D1=[($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value
01F94A: 0281 7FFF FFFF andi.l #$7fffffff, D1 ; D1=[($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff
01F950: 2041 movea.l D1, A0 ; A0=[[($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff]
01F952: 7200 moveq #$0, D1 ; D1=0
01F954: 122D 8D11 move.b (-$72ef,A5), D1 ; D1=[A5-$72ef] value
01F958: 0401 0002 subi.b #$2, D1 ; D1=[A5-$72ef] value-2
01F95C: E549 lsl.w #2, D1 ; D1=([A5-$72ef] value-2)<<2
01F95E: D0C1 adda.w D1, A0 ; A0=[([($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff)+(([A5-$72ef] value-2)<<2)]
01F960: 5448 addq.w #2, A0 ; A0=[([($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff)+(([A5-$72ef] value-2)<<2)+2]
01F962: D1FC 0000 0000 adda.l #$0, A0 ; A0=[([($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff)+(([A5-$72ef] value-2)<<2)+2]
01F968: 0800 0004 btst #$4, D0
01F96C: 6700 0006 beq $1f974 ; if 5th bit of ((P1_REPEAT value|P2_REPEAT value)&#$f0) value=0 then skip next step
01F970: 0410 0001 subi.b #$1, (A0) ; else [([($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff)+(([A5-$72ef] value-2)<<2)+2] value-1
01F974: 0800 0005 btst #$5, D0
01F978: 6700 0006 beq $1f980 ; if 6th bit of ((P1_REPEAT value|P2_REPEAT value)&#$f0) value=0 then end the subroutine
01F97C: 0610 0001 addi.b #$1, (A0) ; else [([($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff)+(([A5-$72ef] value-2)<<2)+2] value+1
01F980: 4E75 rts
01F982: 0800 0004 btst #$4, D0
01F986: 6700 0052 beq $1f9da ; if 5th bit of ((P1_REPEAT value|P2_REPEAT value)&#$f0) value=0 then end the subroutine
01F98A: 206D 8A0A movea.l (-$75f6,A5), A0 ; else A0=[[A5-$75f6] value]
01F98E: 7200 moveq #$0, D1 ; D1=0
01F990: 122D 8D13 move.b (-$72ed,A5), D1 ; D1=[A5-$72ed] value
01F994: 41F9 0002 427C lea $2427c.l, A0 ; A0=[$2427c]
01F99A: E549 lsl.w #2, D1 ; D1=[A5-$72ed] value<<2
01F99C: 2070 1000 movea.l (A0,D1.w), A0 ; A0=[$2427c+([A5-$72ed] value<<2)]
01F9A0: 7200 moveq #$0, D1 ; D1=0
01F9A2: 122D 8D12 move.b (-$72ee,A5), D1 ; D1=[A5-$72ee] value
01F9A6: E549 lsl.w #2, D1 ; D1=[A5-$72ee] value<<2
01F9A8: 2230 1000 move.l (A0,D1.w), D1 ; D1=[($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value
01F9AC: 0281 7FFF FFFF andi.l #$7fffffff, D1 ; D1=[($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff
01F9B2: 2041 movea.l D1, A0 ; A0=[[($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff]
01F9B4: 7200 moveq #$0, D1 ; D1=0
01F9B6: 122D 8D11 move.b (-$72ef,A5), D1 ; D1=[A5-$72ef] value
01F9BA: 0401 0002 subi.b #$2, D1 ; D1=[A5-$72ef] value-2
01F9BE: E549 lsl.w #2, D1 ; D1=([A5-$72ef] value-2)<<2
01F9C0: D0C1 adda.w D1, A0 ; A0=[([($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff)+(([A5-$72ef] value-2)<<2)]
01F9C2: 3210 move.w (A0), D1 ; D1=[([($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff)+(([A5-$72ef] value-2)<<2)] value
01F9C4: D1FC 0000 0000 adda.l #$0, A0 ; A0=[([($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff)+(([A5-$72ef] value-2)<<2)]
01F9CA: 363C 8000 move.w #$8000, D3 ; D3=#$8000
01F9CE: 7400 moveq #$0, D2 ; D2=0
01F9D0: 142D 8D10 move.b (-$72f0,A5), D2 ; D2=[A5-$72f0] value
01F9D4: E46B lsr.w D2, D3 ; D3=#$8000>>[A5-$72f0] value
01F9D6: B741 eor.w D3, D1 ; D1=[([($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff)+(([A5-$72ef] value-2)<<2)] value^(#$8000>>[A5-$72f0] value)
01F9D8: 3081 move.w D1, (A0) ; [([($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff)+(([A5-$72ef] value-2)<<2)] value=[([($2427c+([A5-$72ed] value<<2))+([A5-$72ee] value<<2)] value&#$7fffffff)+(([A5-$72ef] value-2)<<2)] value^(#$8000>>[A5-$72f0] value)
01F9DA: 4E75 rts
01FE98: 43F9 0002 00D8 lea $200d8.l, A1 ; A1=[$200d8]
01FE9E: 1039 0010 FD98 move.b $10fd98.l, D0 ; D0=P1_REPEAT value
01FEA4: 8039 0010 FD9E or.b $10fd9e.l, D0 ; D0=P1_REPEAT value|P2_REPEAT value
01FEAA: 0240 000F andi.w #$f, D0 ; D0=(P1_REPEAT value|P2_REPEAT value)&#$f
01FEAE: 6700 005A beq $1ff0a ; if (P1_REPEAT value|P2_REPEAT value)&#$f=0 => neither P1 stick nor P2 stick is active then end the subroutine
01FEB2: 322D 8D00 move.w (-$7300,A5), D1 ; D1=[A5-$7300] value
01FEB6: 342D 8D02 move.w (-$72fe,A5), D2 ; D2=[A5-$72fe] value
01FEBA: 41ED 8D02 lea (-$72fe,A5), A0 ; A0=[A5-$72fe]
01FEBE: 3A2D 8D0A move.w (-$72f6,A5), D5 ; D5=[A5-$72f6] value
01FEC2: 0C6D 0001 8D00 cmpi.w #$1, (-$7300,A5)
01FEC8: 6300 000E bls $1fed8 ; if [A5-$7300] value<=1 then skip next 3 steps
01FECC: 342D 8D04 move.w (-$72fc,A5), D2 ; D2=[A5-$72fc] value
01FED0: 41ED 8D04 lea (-$72fc,A5), A0 ; A0=[A5-$72fc]
01FED4: 3A2D 8D0C move.w (-$72f4,A5), D5 ; D5=[A5-$72f4] value
01FED8: 7800 moveq #$0, D4 ; D4=0
01FEDA: D040 add.w D0, D0 ; D0=((P1_REPEAT value|P2_REPEAT value)&#$f)*2
01FEDC: 1631 0000 move.b (A1,D0.w), D3 ; D3=[$200d8+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value
01FEE0: 1831 0001 move.b ($1,A1,D0.w), D4 ; D4=[$200d9+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value
01FEE4: 4883 ext.w D3
01FEE6: 4884 ext.w D4
01FEE8: D641 add.w D1, D3 ; D3=[$200d8+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value+[A5-$7300] value
01FEEA: 0243 0003 andi.w #$3, D3 ; D3=([$200d8+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value+[A5-$7300] value)&3
01FEEE: D842 add.w D2, D4 ; D4=[$200d9+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value+[A5-$72fe] value or D4=[$200d9+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value+[A5-$72fc] value
01FEF0: 6A00 000A bpl $1fefc ; if ([$200d9+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value+[A5-$72fe] value) or ([$200d9+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value+[A5-$72fc] value) is positive then skip next 2 steps
01FEF4: 383C 0000 move.w #$0, D4 ; else D4=0
01FEF8: 6000 000A bra $1ff04
01FEFC: B845 cmp.w D5, D4
01FEFE: 6500 0004 bcs $1ff04 ; if C flag=1 as a result of ([$200d9+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value+[A5-$72fe] value)-[A5-$72f6] value, or ([$200d9+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value+[A5-$72fc] value)-[A5-$72f6] value, or ([$200d9+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value+[A5-$72fe] value)-[A5-$72f4] value, or ([$200d9+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value+[A5-$72fc] value)-[A5-$72f4] value then skip next step
01FF02: 3810 move.w (A0), D4 ; else D4=[A5-$72fe] value or [A5-$72fc] value
01FF04: 3B43 8D00 move.w D3, (-$7300,A5) ; [A5-$7300] value=([$200d8+(((P1_REPEAT value|P2_REPEAT value)&#$f)*2)] value+old [A5-$7300] value)&3
01FF08: 3084 move.w D4, (A0)
01FF0A: 4E75 rts
HPMAN (./55):
What's going on it this thread... ?
02015C: 1039 0010 FD98 move.b $10fd98.l, D0 ; D0=P1_REPEAT value
020162: 7200 moveq #$0, D1 ; D1=0
020164: 122D 900B move.b (-$6ff5,A5), D1 ; D1=[A5-$6ff5] value
020168: 6100 003A bsr $201a4
02016C: 1B41 900B move.b D1, (-$6ff5,A5) ; [A5-$6ff5] value=0, or #$c, or old [A5-$6ff5] value, or some other D1 value
020170: 303C 0331 move.w #$331, D0 ; D0=#$331
020174: 383C 734C move.w #$734c, D4 ; D4=#$734c
020178: 4EB9 0002 0208 jsr $20208.l
02017E: 4E75 rts
0201A4: 0240 0003 andi.w #$3, D0
0201A8: 6700 002A beq $201d4 ; if neither UP nor DOWN joypad position is active then end the subroutine
0201AC: 0800 0000 btst #$0, D0
0201B0: 6700 000E beq $201c0 ; else if UP is not active then skip next 4 steps
0201B4: 5301 subq.b #1, D1
0201B6: 6A00 0008 bpl $201c0 ; else if [A5-$6ff5] value-1 is positive then skip next 2 steps
0201BA: 720C moveq #$c, D1 ; else D1=#$c
0201BC: 6000 0016 bra $201d4 ; end the subroutine
0201C0: 0800 0001 btst #$1, D0
0201C4: 6700 000E beq $201d4 ; if DOWN is not active then end the subroutine
0201C8: 5201 addq.b #1, D1 ; else D1=old [A5-$6ff5] value
0201CA: 0C01 000C cmpi.b #$c, D1
0201CE: 6300 0004 bls $201d4 ; if [A5-$6ff5] value<=#$c then end the subroutine
0201D2: 7200 moveq #$0, D1 ; else D1=0
0201D4: 4E75 rts
020208: D841 add.w D1, D4 ; D4=D1+#$734c
02020A: 3944 FFFE move.w D4, (-$2,A4) ; [A4-$2] value=D1+#$734c
02020E: 397C 0020 0002 move.w #$20, ($2,A4) ; [A4+$2] value=#$20
020214: 342D 89F8 move.w (-$7608,A5), D2 ; D2=[A5-$7608] value
020218: 0242 000F andi.w #$f, D2 ; D2=[A5-$7608] value&#$f
02021C: E85A ror.w #4, D2 ; D2=([A5-$7608] value&#$f)ROR4
02021E: 8042 or.w D2, D0 ; D0=([A5-$7608] value&#$f)ROR4|#$331
020220: 3400 move.w D0, D2 ; D2=([A5-$7608] value&#$f)ROR4|#$331
020222: 143C 003C move.b #$3c, D2 ; lowest byte of D2=#$3c
020226: 3942 0000 move.w D2, ($0,A4) ; [A4] value=upper byte of (([A5-$7608] value&#$f)ROR4|#$331)+#$3c
02022A: 3940 0000 move.w D0, ($0,A4) ; Now the value of absolutely same address are fully replaced with ([A5-$7608] value&#$f)ROR4|#$331 . Why is it need? What was a sense of previous operation then?
02022E: 143C 0050 move.b #$50, D2 ; D2=#$50
020232: 3942 0000 move.w D2, ($0,A4) ; Now [A4] value is equal to #$50.
020236: 4E75 rts
020E90: 082D 0002 8000 btst #$2, (-$8000,A5)
020E96: 6600 0014 bne $20eac ; if 3rd bit of [A5-$8000] value!=0 then skip next 4 steps
020E9A: 082D 0000 89F9 btst #$0, (-$7607,A5)
020EA0: 6700 0074 beq $20f16 ; else if 1st bit of [A5-$7607] value=0 then end the subroutine
020EA4: 522D 8A86 addq.b #1, (-$757a,A5) ; else [A5-$757a] value+1
020EA8: 6000 006C bra $20f16 ; end the subroutine
020EAC: 6100 FF38 bsr $20de6
020EB0: 1039 0010 FD98 move.b $10fd98.l, D0 ; D0=P1_REPEAT value
020EB6: 8039 0010 FD9E or.b $10fd9e.l, D0 ; D0=P1_REPEAT value|P2_REPEAT value
020EBC: 1200 move.b D0, D1 ; D1=P1_REPEAT value|P2_REPEAT value
020EBE: 0240 0030 andi.w #$30, D0 ; D0=(P1_REPEAT value|P2_REPEAT value)&#$30
020EC2: 6700 003E beq $20f02 ; if neither P1 nor P2 A/B buttons is pressed then skip to $20f02
020EC6: 0241 0080 andi.w #$80, D1 ; else D1=(P1_REPEAT value|P2_REPEAT value)&#$80
020ECA: 6700 0036 beq $20f02 ; if neither P1 nor P2 D button is pressed then skip to $20f02
020ECE: 122D 8A7B move.b (-$7585,A5), D1 ; else D1=[A5-$7585] value
020ED2: 822D 8A7D or.b (-$7583,A5), D1 ; D1=[A5-$7585] value|[A5-$7583] value
020ED6: 0C01 00D0 cmpi.b #-$30, D1
020EDA: 6600 0006 bne $20ee2 ; if [A5-$7585] value|[A5-$7583] value!=#-$30 then skip next step
020EDE: 422E 00D3 clr.b ($d3,A6) ; else [A6+$d3] value=0
020EE2: 0800 0005 btst #$5, D0
020EE6: 6700 0006 beq $20eee ; if P1 or P2 B button is pressed then skip next step
020EEA: 522E 00D3 addq.b #1, ($d3,A6) ; else [A6+$d3] value+1
020EEE: 0800 0004 btst #$4, D0
020EF2: 6700 000E beq $20f02 ; if P1 or P2 A button is pressed then skip next 3 steps
020EF6: 532E 00D3 subq.b #1, ($d3,A6) ; else [A6+$d3] value-1
020EFA: 6A00 0006 bpl $20f02 ; if [A6+$d3] value-1 is positive then skip next step
020EFE: 422E 00D3 clr.b ($d3,A6) ; else [A6+$d3] value=0
020F02: 532E 00D2 subq.b #1, ($d2,A6) ; [A6+$d2] value-1
020F06: 6A00 000E bpl $20f16 ; if [A6+$d2] value-1 is positive then end the subroutine
020F0A: 1D6E 00D3 00D2 move.b ($d3,A6), ($d2,A6) ; else [A6+$d2] value=[A6+$d3] value
020F10: 1B6E 00D3 8A86 move.b ($d3,A6), (-$757a,A5) ; else [A5-$757a] value=[A6+$d3] value
020F16: 4E75 rts
020DE6: 41F9 0002 0E4A lea $20e4a.l, A0 ; A0=[$20e4a]
020DEC: 397C 70A9 FFFE move.w #$70a9, (-$2,A4) ; [A4-$2] value=#$70a9
020DF2: 397C 0020 0002 move.w #$20, ($2,A4) ; [A4+$2] value=#$20
020DF8: 7E1C moveq #$1c, D7 ; D7=#$1c
020DFA: 303C 4330 move.w #$4330, D0 ; D0=#$4330
020DFE: 1018 move.b (A0)+, D0 ; lowest byte of D0=[$20e4b] value
020E00: 3940 0000 move.w D0, ($0,A4) ; [A4] value=[$20e4b] value
020E04: 51CF FFF8 dbra D7, $20dfe ; D7-1, if D7 <> 0 jump 1 step back
020E08: 43F9 0002 0E68 lea $20e68.l, A1 ; A1=[$20e68]
020E0E: 7E02 moveq #$2, D7 ; D7=2
020E10: 303C 1320 move.w #$1320, D0 ; D0=#$1320
020E14: 7200 moveq #$0, D1 ; D1=0
020E16: 122E 00D3 move.b ($d3,A6), D1 ; D1=[A6+$d3] value
020E1A: 397C 73C9 FFFE move.w #$73c9, (-$2,A4) ; [A4-$2] value=#$73c9
020E20: 3419 move.w (A1)+, D2 ; D2=[$20e69] value
020E22: 7600 moveq #$0, D3 ; D3=0
020E24: 4A07 tst.b D7
020E26: 6600 0006 bne $20e2e ; if D7!=0 then skip next step
020E2A: 303C 4330 move.w #$4330, D0 ; else D0=#$4330
020E2E: 9242 sub.w D2, D1 ; D1=[A6+$d3] value-[$20e69] value
020E30: 6B00 000A bmi $20e3c ; if [A6+$d3] value-[$20e69] value is negative then skip next 3 steps
020E34: 303C 4330 move.w #$4330, D0 ; else D0=#$4330
020E38: 5243 addq.w #1, D3 ; D3=1
020E3A: 60F2 bra $20e2e
020E3C: D242 add.w D2, D1
020E3E: D640 add.w D0, D3
020E40: 3943 0000 move.w D3, ($0,A4)
020E44: 51CF FFDA dbra D7, $20e20 ; D7-1, if D7 <> 0 jump back to $20e20
020E48: 4E75 rts
02D416: 536E 0014 subq.w #1, ($14,A6)
02D41A: 6700 00BA beq $2d4d6 ; if [A6+$14] value-1=0 then skip to $2d4d6 (see by some posts above)
02D41E: 1039 0010 FD98 move.b $10fd98.l, D0 ; else D0=P1_REPEAT value
02D424: 4A2D 8A00 tst.b (-$7600,A5)
02D428: 6700 0008 beq $2d432 ; if [A5-$7600] value=0 then skip next step
02D42C: 1039 0010 FD9E move.b $10fd9e.l, D0 ; else D0=P2_REPEAT value
02D432: 0240 000C andi.w #$c, D0 ; D0=P1\2_REPEAT value&#$c
02D436: 6700 002E beq $2d466 ; if neither P1 nor P2 LEFT/RIGHT joypad position is active then skip to $2d466
02D43A: E448 lsr.w #2, D0 ; D0=(P1\2_REPEAT value&#$c)>>2
02D43C: 0240 0002 andi.w #$2, D0 ; D0=((P1\2_REPEAT value&#$c)>>2)&2
02D440: 0640 FFFF addi.w #-$1, D0 ; D0=(((P1\2_REPEAT value&#$c)>>2)&2)-1
02D444: D02E 001B add.b ($1b,A6), D0 ; D0=((((P1\2_REPEAT value&#$c)>>2)&2)-1)+[A6+$1b] value
02D448: 6A00 0004 bpl $2d44e ; if (((((P1\2_REPEAT value&#$c)>>2)&2)-1)+[A6+$1b] value) value is positive then skip next step
02D44C: 7025 moveq #$25, D0 ; else D0=#$25
02D44E: 0C00 0026 cmpi.b #$26, D0
02D452: 6B00 0004 bmi $2d458 ; if (((((P1\2_REPEAT value&#$c)>>2)&2)-1)+[A6+$1b] value)-#$26 is negative then skip next step
02D456: 7000 moveq #$0, D0 ; else D0=0
02D458: 1D40 001B move.b D0, ($1b,A6) ; [A6+$1b] value=0 or ((((P1\2_REPEAT value&#$c)>>2)&2)-1)+[A6+$1b] value
02D45C: 303C 01F5 move.w #$1f5, D0 ; D0=#$1f5
02D460: 4EB9 0002 B7F4 jsr $2b7f4.l
02D466: 303C 0000 move.w #$0, D0 ; D0=0
<See the code starting from 02D46A further.>