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
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) ;
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
04C338: 082D 0000 39F5 btst #$0, ($39f5,A5)
04C33E: 6600 006E bne $4c3ae ; if 1st bit of
04C2FE: 082D 0003 39F5 btst #$3, ($39f5,A5)
04C304: 6700 0030 beq $4c336 ; if 4th bit of
04C316: 4228 00C9 clr.b ($c9,A0) ;
04BE28: 2070 1000 movea.l (A0,D1.w), A0 ; A0=[$4be40] value+(([$4be30]+(([A5+$39cd] value)&#$f))*4)
04BE2C: 4E90 jsr (A0) ; goto
04C3AE: 082D 0001 39F6 btst #$1, ($39f6,A5)
04C3B4: 6700 0026 beq $4c3dc ; if 2nd bit of
04C35C: 082D 0005 39CD btst #$5, ($39cd,A5)
04C362: 6700 0012 beq $4c376 ; if 6th bit of
04C3DC: 082D 0003 39F6 btst #$3, ($39f6,A5)
04C3E2: 6700 0020 beq $4c404 ; if 4th bit of
04C45A: 4E75 rts
04C376: 082D 0006 39CD btst #$6, ($39cd,A5)
04C37C: 6700 0014 beq $4c392 ; if 7th bit of
04C404: 082D 0004 39CD btst #$4, ($39cd,A5)
04C40A: 6700 0008 beq $4c414 ; if 5th bit of
04C392: 082D 0007 39CD btst #$7, ($39cd,A5)
04C398: 6700 0012 beq $4c3ac ; if 8th bit of
04C414: 082D 0005 39CD btst #$5, ($39cd,A5)
04C41A: 6700 0016 beq $4c432 ; if 6th bit of
04C432: 082D 0006 39CD btst #$6, ($39cd,A5)
04C438: 6700 0016 beq $4c450 ; if 7th bit of
04C450: 082D 0007 39CD btst #$7, ($39cd,A5)
04C456: 6700 0004 beq $4c45c ; if 8th bit of
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)+ ;
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) ;
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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) ;
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) ;
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
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
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
04CFE6: 082D 0000 39F5 btst #$0, ($39f5,A5)
04CFEC: 6600 006E bne $4d05c ; if 1st bit of
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
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
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
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
04D088: 4E75 rts
04D08A: 082D 0003 39F6 btst #$3, ($39f6,A5)
04D090: 6700 0020 beq $4d0b2 ; if 4th bit of
04D0B0: 4E75 rts
04D0B2: 082D 0004 39CD btst #$4, ($39cd,A5)
04D0B8: 6700 0004 beq $4d0be ; if 5th bit of
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
04CFAC: 082D 0003 39F5 btst #$3, ($39f5,A5)
04CFB2: 6700 0030 beq $4cfe4 ; if 4th bit of
04CFC4: 4228 00C9 clr.b ($c9,A0) ;
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
04D2FC: 4E90 jsr (A0)
04D2FE: 4E75 rts
04D4EC: 082D 0000 39F5 btst #$0, ($39f5,A5)
04D4F2: 6600 0082 bne $4d576 ; if 1st bit of
04D508: 5210 addq.b #1, (A0) ;
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
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
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
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
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
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
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) ;
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) ;
04D4B2: 082D 0003 39F5 btst #$3, ($39f5,A5)
04D4B8: 6700 0030 beq $4d4ea ; if 4th bit of
04D4CA: 4228 00C9 clr.b ($c9,A0) ;
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
04D588: 0610 0010 addi.b #$10, (A0) ;
04D5A0: 0410 0010 subi.b #$10, (A0) ;
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
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) ;
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
04D51E: 5310 subq.b #1, (A0) ;
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
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
04DB96: 4E71 nop
04DB98: 082D 0002 39F5 btst #$2, ($39f5,A5)
04DB9E: 6700 0008 beq $4dba8; if 3rd bit of
04DBA6: 4E71 nop
04DBA8: 2070 1000 movea.l (A0,D1.w), A0 ; A0=[$4dbd0+([$4dbb0] value*4)]
04DBAC: 4E90 jsr (A0) ; goto
04DCBA: 396C 00CC 00D4 move.w ($cc,A4), ($d4,A4) ;
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) ;
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) ;
04DC80: 082D 0003 39F5 btst #$3, ($39f5,A5)
04DC86: 6700 0030 beq $4dcb8 ; if 4th bit of
04DC98: 4228 00C9 clr.b ($c9,A0) ;
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
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
04E24C: FF02 dc.w $ff02; opcode 1111
04E33C: 082D 0004 39CD btst #$4, ($39cd,A5)
04E342: 6700 000E beq $4e352 ; if 5th bit of
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) ;
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
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
04E49A: 4A28 0130 tst.b ($130,A0)
04E49E: 6A00 0006 bpl $4e4a6 ; if
04E4A6: 1228 0168 move.b ($168,A0), D1 ; D1=[A5+$268] value or
04E3A2: 082D 0003 39F5 btst #$3, ($39f5,A5)
04E3A8: 6700 0030 beq $4e3da ; if 4th bit of
04E3BA: 4228 00C9 clr.b ($c9,A0) ;
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
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
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)+ ;
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) ;
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) ;
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) ;
000FFC: 203C 0010 2000 move.l #$102000, D0 ; D0=#$102000
001002: 3140 0002 move.w D0, ($2,A0) ;
00100A: 203C 0010 1040 move.l #$101040, D0 ; D0=#$101040
001010: 3140 0000 move.w D0, ($0,A0) ;
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) ;
001032: 4A6E 002E tst.w ($2e,A6)
001036: 6700 0006 beq $103e ; if
001040: 206E 0000 movea.l ($0,A6), A0 ; A0=[A5-$5ebe]
001044: 4E90 jsr (A0) ; goto
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
00105A: 4E90 jsr (A0) ; goto
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
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) ;
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) ;
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
0026F6: 2271 0000 movea.l (A1,D0.w), A1 ; A1=[$4c000+([A5-$1ea3] value<<2)]
0026FA: 422E 001B clr.b ($1b,A6) ;
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) ;
002762: 2271 0000 movea.l (A1,D0.w), A1 ; A1=[$4c000+([A5-$1e63] value<<2)]
002766: 422E 001B clr.b ($1b,A6) ;
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) ;
004510: 522D 8A83 addq.b #1, (-$757d,A5) ;
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
004DAC: 122E 0055 move.b ($55,A6), D1 ; D1=old
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
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) ;
001B26: 102D 8A85 move.b (-$757b,A5), D0 ; D0=[A5-$757b] value
001B2A: 6700 0004 beq $1b30 ; if
001B52: 082D 0000 8A80 btst #$0, (-$7580,A5)
001B58: 6700 000E beq $1b68 ; if (old
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 ;
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) ;
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) ;
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
001C46: 4E91 jsr (A1)
001C48: 4845 swap D5
001C4A: 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
02D49C: 11BC 0025 1000 move.b #$25, (A0,D1.w) ;
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) ;
02D4E8: 45ED 803E lea (-$7fc2,A5), A2 ; A2=[A5-$7fc2]
02D4EC: 236A 0000 0000 move.l ($0,A2), ($0,A1) ;
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) ;
02B7F4: D040 add.w D0, D0 ; D0=#$1f4*2=#$3e8
02B7F6: 3B7B 001E 7102 move.w ($1e,PC,D0.w), ($7102,A5) ;
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) ;
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
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) ;
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)+ ;
0041FA: 522D 8A79 addq.b #1, (-$7587,A5) ;
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)+ ;
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) ;
02D552: 522D 8A79 addq.b #1, (-$7587,A5) ;
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
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)+ ;
02D5A4: 522D 8A79 addq.b #1, (-$7587,A5) ;
02D5C4: 4A2D 8A00 tst.b (-$7600,A5)
02D5C8: 6700 0006 beq $2d5d0 ; if
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
02D5DA: 3210 move.w (A0), D1 ; D1=[$2d5f8+([A6+$1a] value*2)] value or
02D5E2: 30C1 move.w D1, (A0)+ ;
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
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
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
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
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) ;
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
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
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) ;
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
020208: D841 add.w D1, D4 ; D4=D1+#$734c
02020A: 3944 FFFE move.w D4, (-$2,A4) ;
020E90: 082D 0002 8000 btst #$2, (-$8000,A5)
020E96: 6600 0014 bne $20eac ; if 3rd bit of
020DE6: 41F9 0002 0E4A lea $20e4a.l, A0 ; A0=[$20e4a]
020DEC: 397C 70A9 FFFE move.w #$70a9, (-$2,A4) ;
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) ;