Difference between revisions of "Yu-Gi-Oh! Worldwide Edition: Stairway to the Destined Duel:ROM map"

From Data Crystal
Jump to navigation Jump to search
(→‎Display card ATK: Understood, this array stores other stats than ATK as well. Still, pretty sure there was a better way to do it)
 
(79 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{rommap|game=Yu-Gi-Oh! Reshef of Destruction}}
+
{{rommap|game=Yu-Gi-Oh! Worldwide Edition: Stairway to the Destined Duel}}
 +
 
 +
==0x884 (prepare duel data ?)==
 +
08000884 0105    lsl    r5,r0,4h                                ;2  4659
 +
08000886 0000    lsl    r0,r0,0h                                ;2  4661
 +
08000888 0307    lsl    r7,r0,0Ch                              ;2  4663
 +
0800088A 0000    lsl    r0,r0,0h                                ;2  4665
 +
0800088C B5F0    push    r4-r7,r14                              ;26 4691
 +
0800088E 4657    mov    r7,r10                                  ;2  4693
 +
08000890 464E    mov    r6,r9                                  ;2  4695
 +
08000892 4645    mov    r5,r8                                  ;2  4697
 +
08000894 B4E0    push    r5-r7                                  ;18 4715
 +
08000896 4849    ldr    r0,=5000200h                            ;9  4724
 +
08000898 4949    ldr    r1,=8385104h                            ;9  4733
 +
0800089A 468A    mov    r10,r1                                  ;2  4735
 +
0800089C 2220    mov    r2,20h                                  ;2  4737
 +
0800089E F088F9F7 bl      8088C90h                                ;10 4747
 +
080008A2 2020    mov    r0,20h                                  ;2  4749
 +
080008A4 2110    mov    r1,10h                                  ;2  4751
 +
080008A6 F087FD0F bl      80882C8h                                ;10 4761
 +
080008AA 4846    ldr    r0,=0C0Fh                              ;9  4770
 +
080008AC 4681    mov    r9,r0                                  ;2  4772
 +
080008AE 4C46    ldr    r4,=8372FBAh                            ;r4 = pointer_to_in_game_text
 +
080008B0 2009    mov    r0,9h                                  ;2  4783
 +
080008B2 2109    mov    r1,9h                                  ;2  4785
 +
080008B4 464A    mov    r2,r9                                  ;2  4787
 +
080008B6 1C23    mov    r3,r4                                  ;2  4789
 +
080008B8 F087FFA4 bl      8088804h                                ;10 4799
 +
080008BC 4943    ldr    r1,=0C07h                              ;9  4808
 +
080008BE 4688    mov    r8,r1                                  ;2  4810
 +
080008C0 2008    mov    r0,8h                                  ;2  4812
 +
080008C2 2108    mov    r1,8h                                  ;2  4814
 +
080008C4 4642    mov    r2,r8                                  ;2  4816
 +
080008C6 1C23    mov    r3,r4                                  ;2  4818
 +
080008C8 F087FF9C bl      8088804h                                ;10 4828
 +
080008CC 4E40    ldr    r6,=0C01h                              ;9  4837
 +
080008CE 2073    mov    r0,73h                                  ;2  4839
 +
080008D0 210B    mov    r1,0Bh                                  ;2  4841
 +
080008D2 1C32    mov    r2,r6                                  ;2  4843
 +
080008D4 1C23    mov    r3,r4                                  ;2  4845
 +
080008D6 F087FF95 bl      8088804h                                ;10 4855
 +
080008DA 4D3E    ldr    r5,=0C0Dh                              ;9  4864
 +
080008DC 2072    mov    r0,72h                                  ;2  4866
 +
080008DE 210A    mov    r1,0Ah                                  ;2  4868
 +
080008E0 1C2A    mov    r2,r5                                  ;2  4870
 +
080008E2 1C23    mov    r3,r4                                  ;2  4872
 +
080008E4 F087FF8E bl      8088804h                                ;10 4882
 +
080008E8 340A    add    r4,0Ah                                  ;2  4884
 +
080008EA 2001    mov    r0,1h                                  ;2  4886
 +
080008EC 2129    mov    r1,29h                                  ;2  4888
 +
080008EE 464A    mov    r2,r9                                  ;2  4890
 +
080008F0 1C23    mov    r3,r4                                  ;2  4892
 +
080008F2 F087FF87 bl      8088804h                                ;10 4902
 +
080008F6 2000    mov    r0,0h                                  ;2  4904
 +
080008F8 2128    mov    r1,28h                                  ;2  4906
 +
080008FA 4642    mov    r2,r8                                  ;2  4908
 +
080008FC 1C23    mov    r3,r4                                  ;2  4910
 +
080008FE F087FF81 bl      8088804h                                ;10 4920
 +
08000902 2069    mov    r0,69h                                  ;2  4922
 +
08000904 212B    mov    r1,2Bh                                  ;2  4924
 +
08000906 1C32    mov    r2,r6                                  ;2  4926
 +
08000908 1C23    mov    r3,r4                                  ;2  4928
 +
0800090A F087FF7B bl      8088804h                                ;10 4938
 +
0800090E 2068    mov    r0,68h                                  ;2  4940
 +
08000910 212A    mov    r1,2Ah                                  ;2  4942
 +
08000912 1C2A    mov    r2,r5                                  ;2  4944
 +
08000914 1C23    mov    r3,r4                                  ;2  4946
 +
08000916 F087FF75 bl      8088804h                                ;10 4956
 +
0800091A 482F    ldr    r0,=6014000h                            ;9  4965
 +
0800091C 2100    mov    r1,0h                                  ;2  4967
 +
0800091E F088F89B bl      8088A58h                                ;10 4977
 +
08000922 24A0    mov    r4,0A0h                                ;2  4979
 +
08000924 04E4    lsl    r4,r4,13h                              ;2  4981
 +
08000926 1C20    mov    r0,r4                                  ;2  4983
 +
08000928 4651    mov    r1,r10                                  ;2  4985
 +
0800092A 2220    mov    r2,20h                                  ;2  4987
 +
0800092C F088F9A2 bl      8088C74h                                ;10 4997
 +
08000930 2000    mov    r0,0h                                  ;2  4999
 +
08000932 8020    strh    r0,[r4]                                ;5  5004
 +
08000934 4B29    ldr    r3,=8A9E708h                            ;9  5013
 +
08000936 2000    mov    r0,0h                                  ;2  5015
 +
08000938 2110    mov    r1,10h                                  ;2  5017
 +
0800093A 2220    mov    r2,20h                                  ;2  5019
 +
0800093C F085FBF2 bl      8086124h                                ;10 5029
 +
08000940 2080    mov    r0,80h                                  ;2  5031
 +
08000942 00C0    lsl    r0,r0,3h                                ;2  5033
 +
08000944 4B26    ldr    r3,=8A9F8DCh                            ;9  5042
 +
08000946 2120    mov    r1,20h                                  ;2  5044
 +
08000948 22A0    mov    r2,0A0h                                ;2  5046
 +
0800094A F085FBEB bl      8086124h                                ;10 5056
 +
0800094E 2480    mov    r4,80h                                  ;2  5058
 +
08000950 0124    lsl    r4,r4,4h                                ;2  5060
 +
08000952 2294    mov    r2,94h                                  ;2  5062
 +
08000954 0052    lsl    r2,r2,1h                                ;2  5064
 +
08000956 4B23    ldr    r3,=8AA0BECh                            ;9  5073
 +
08000958 1C20    mov    r0,r4                                  ;2  5075
 +
0800095A 2130    mov    r1,30h                                  ;2  5077
 +
0800095C F085FBE2 bl      8086124h                                ;10 5087
 +
08000960 22AE    mov    r2,0AEh                                ;2  5089
 +
08000962 0052    lsl    r2,r2,1h                                ;2  5091
 +
08000964 4B20    ldr    r3,=8AA1214h                            ;9  5100
 +
08000966 1C20    mov    r0,r4                                  ;2  5102
 +
08000968 2140    mov    r1,40h                                  ;2  5104
 +
0800096A F085FBDB bl      8086124h                                ;10 5114
 +
0800096E 2400    mov    r4,0h                                  ;2  5116
 +
08000970 271F    mov    r7,1Fh                                  ;2  5118
 +
08000972 26F8    mov    r6,0F8h                                ;2  5120
 +
08000974 00B6    lsl    r6,r6,2h                                ;2  5122
 +
08000976 25F8    mov    r5,0F8h                                ;2  5124
 +
08000978 01ED    lsl    r5,r5,7h                                ;2  5126
 +
0800097A 0063    lsl    r3,r4,1h                                ;2  5128
 +
0800097C 481B    ldr    r0,=5000180h                            ;9  5137
 +
0800097E 181B    add    r3,r3,r0                                ;2  5139
 +
08000980 8819    ldrh    r1,[r3]                                ;4  5143
 +
08000982 221F    mov    r2,1Fh                                  ;2  5145
 +
08000984 400A    and    r2,r1                                  ;2  5147
 +
08000986 1C08    mov    r0,r1                                  ;2  5149
 +
08000988 4030    and    r0,r6                                  ;2  5151
 +
0800098A 4029    and    r1,r5                                  ;2  5153
 +
0800098C 0852    lsr    r2,r2,1h                                ;2  5155
 +
0800098E 403A    and    r2,r7                                  ;2  5157
 +
08000990 0840    lsr    r0,r0,1h                                ;2  5159
 +
08000992 4030    and    r0,r6                                  ;2  5161
 +
08000994 0849    lsr    r1,r1,1h                                ;2  5163
 +
08000996 4029    and    r1,r5                                  ;2  5165
 +
08000998 4302    orr    r2,r0                                  ;2  5167
 +
0800099A 4311    orr    r1,r2                                  ;2  5169
 +
0800099C 8019    strh    r1,[r3]                                ;5  5174
 +
0800099E 3401    add    r4,1h                                  ;2  5176
 +
080009A0 2C0F    cmp    r4,0Fh                                  ;2  5178
 +
080009A2 DDEA    ble    800097Ah                                ;8  5186
 +
080009A4 4812    ldr    r0,=3004876h                            ;9  5195
 +
080009A6 4913    ldr    r1,=8228570h                            ;9  5204
 +
080009A8 2220    mov    r2,20h                                  ;2  5206
 +
080009AA F088F963 bl      8088C74h                                ;10 5216
 +
080009AE BC38    pop    r3-r5                                  ;17 5233
 +
080009B0 4698    mov    r8,r3                                  ;2  5235
 +
080009B2 46A1    mov    r9,r4                                  ;2  5237
 +
080009B4 46AA    mov    r10,r5                                  ;2  5239
 +
080009B6 BCF0    pop    r4-r7                                  ;21 5260
 +
080009B8 BC01    pop    r0                                      ;9  5269
 +
080009BA 4700    bx      r0                                      ;8  5277
  
 
==Cards stats==
 
==Cards stats==
Line 12: Line 153:
 
  0800FC5E F7FFFFED bl      800FC3Ch                        ;
 
  0800FC5E F7FFFFED bl      800FC3Ch                        ;
 
  0800FC62 4809    ldr    r0,=2013E00h                    ;
 
  0800FC62 4809    ldr    r0,=2013E00h                    ;
  0800FC64 8044    strh    r4,[r0,2h]                      ;
+
  0800FC64 8044    strh    r4,[r0,2h]                      ;r4 = card_id
 
  0800FC66 4809    ldr    r0,=7FFh                        ;
 
  0800FC66 4809    ldr    r0,=7FFh                        ;
 
  0800FC68 4020    and    r0,r4                          ;
 
  0800FC68 4020    and    r0,r4                          ;
  0800FC6A 0080    lsl    r0,r0,2h                        ;
+
  0800FC6A 0080    lsl    r0,r0,2h                        ;Ensures card_id < 2048
 
  0800FC6C 4908    ldr    r1,=8832B84h                    ;
 
  0800FC6C 4908    ldr    r1,=8832B84h                    ;
  0800FC6E 1840    add    r0,r0,r1                        ;
+
  0800FC6E 1840    add    r0,r0,r1                        ;r0 = 0x8832B84 + ((card_ID & 0x7FF) << 2)
  0800FC70 6800    ldr    r0,[r0]                        ;
+
  0800FC70 6800    ldr    r0,[r0]                        ;r0 = [compressed_card_data_array]
 
  0800FC72 21F8    mov    r1,0F8h                        ;
 
  0800FC72 21F8    mov    r1,0F8h                        ;
 
  0800FC74 0449    lsl    r1,r1,11h                      ;
 
  0800FC74 0449    lsl    r1,r1,11h                      ;
  0800FC76 4008    and    r0,r1                          ;
+
  0800FC76 4008    and    r0,r1                          ;r0 &= 0x1F00000
  0800FC78 0D00    lsr    r0,r0,14h                      ;
+
  0800FC78 0D00    lsr    r0,r0,14h                      ;r0 >> 20
 
  0800FC7A 2815    cmp    r0,15h                          ;
 
  0800FC7A 2815    cmp    r0,15h                          ;
  0800FC7C DB0F    blt    800FC9Eh                        ;
+
  0800FC7C DB0F    blt    800FC9Eh                        ;if (card_type < 0x15 [is a monster card]), branch to 0x800FC9E
 
  0800FC7E 2817    cmp    r0,17h                          ;
 
  0800FC7E 2817    cmp    r0,17h                          ;
  0800FC80 DD08    ble    800FC94h                        ;
+
  0800FC80 DD08    ble    800FC94h                        ;if (card_type ≤ 0x17 [is not a monster card]), branch to 0x800FC94
 
  0800FC82 2818    cmp    r0,18h                          ;
 
  0800FC82 2818    cmp    r0,18h                          ;
  0800FC84 D008    beq    800FC98h                        ;
+
  0800FC84 D008    beq    800FC98h                        ;if (card_type == DIVINE_BEAST), branch to 0x800FC98
  0800FC86 E00A    b      800FC9Eh                        ;
+
  0800FC86 E00A    b      800FC9Eh                        ;else branch to 0x800FC9E (default for Monster cards)
 
  0800FC88 3E00    sub    r6,0h                          ;
 
  0800FC88 3E00    sub    r6,0h                          ;
 
  0800FC8A 0201    lsl    r1,r0,8h                        ;
 
  0800FC8A 0201    lsl    r1,r0,8h                        ;
Line 36: Line 177:
 
  0800FC90 2B84    cmp    r3,84h                          ;
 
  0800FC90 2B84    cmp    r3,84h                          ;
 
  0800FC92 0883    lsr    r3,r0,2h                        ;
 
  0800FC92 0883    lsr    r3,r0,2h                        ;
  0800FC94 2000    mov    r0,0h                          ;
+
  0800FC94 2000    mov    r0,0h                          ;if (card_type ≤ 0x17 [is not a monster card]), ATK = 0
  0800FC96 E00D    b      800FCB4h                        ;
+
  0800FC96 E00D    b      800FCB4h                        ;branch to 0x800FCB4 (store 0 into [0x02013E2C])
  0800FC98 20FA    mov    r0,0FAh                        ;
+
  0800FC98 20FA    mov    r0,0FAh                        ;if (card_type == DIVINE_BEAST) ...
  0800FC9A 0100    lsl    r0,r0,4h                        ;
+
  0800FC9A 0100    lsl    r0,r0,4h                        ;ATK = 4000
  0800FC9C E00A    b      800FCB4h                        ;
+
  0800FC9C E00A    b      800FCB4h                        ;branch to 0x800FCB4 (store 4000 into [0x02013E2C])
  0800FC9E 480F    ldr    r0,=7FFh                        ;
+
  0800FC9E 480F    ldr    r0,=7FFh                        ;if (card_type < 0x15 [is a monster card])
  0800FCA0 4020    and    r0,r4                          ;
+
  0800FCA0 4020    and    r0,r4                          ;Ensures card_id < 2048
  0800FCA2 0080    lsl    r0,r0,2h                        ;
+
  0800FCA2 0080    lsl    r0,r0,2h                        ;r0 = (card_id & 0x7FF) << 2
 
  0800FCA4 4B0E    ldr    r3,=8832B84h                    ;
 
  0800FCA4 4B0E    ldr    r3,=8832B84h                    ;
 
  0800FCA6 18C0    add    r0,r0,r3                        ;r0 = 0x8832B84 + ((0x7FF & card_ID) << 2)
 
  0800FCA6 18C0    add    r0,r0,r3                        ;r0 = 0x8832B84 + ((0x7FF & card_ID) << 2)
Line 51: Line 192:
 
  0800FCAE 0088    lsl    r0,r1,2h                        ;
 
  0800FCAE 0088    lsl    r0,r1,2h                        ;
 
  0800FCB0 1840    add    r0,r0,r1                        ;
 
  0800FCB0 1840    add    r0,r0,r1                        ;
  0800FCB2 0040    lsl    r0,r0,1h                        ;r0 = ((r1 << 14 >> 21 << 2) + (r1 << 14 >> 21)) << 1
+
  0800FCB2 0040    lsl    r0,r0,1h                        ;r0 = DWORD(((r1 << 14 >> 23 << 2) + (r1 << 14 >> 23)) << 1)
 
  0800FCB4 4A0B    ldr    r2,=2013E00h                    ;
 
  0800FCB4 4A0B    ldr    r2,=2013E00h                    ;
  0800FCB6 62D0    str    r0,[r2,2Ch]                    ;Store card ATK into [02013E2C]
+
  0800FCB6 62D0    str    r0,[r2,2Ch]                    ;Store card ATK into [0x02013E2C]
 
  0800FCB8 4808    ldr    r0,=7FFh                        ;
 
  0800FCB8 4808    ldr    r0,=7FFh                        ;
 
  0800FCBA 4020    and    r0,r4                          ;
 
  0800FCBA 4020    and    r0,r4                          ;
Line 65: Line 206:
 
  0800FCCA 0D00    lsr    r0,r0,14h                      ;r0 >>= 20
 
  0800FCCA 0D00    lsr    r0,r0,14h                      ;r0 >>= 20
 
  0800FCCC 2815    cmp    r0,15h                          ;
 
  0800FCCC 2815    cmp    r0,15h                          ;
  0800FCCE DB10    blt    800FCF2h                        ;if (r0 < 21), branch to 0x800FCF2
+
  0800FCCE DB10    blt    800FCF2h                        ;if (card_type < 0x15), branch to 0x800FCF2
 
  0800FCD0 2817    cmp    r0,17h                          ;
 
  0800FCD0 2817    cmp    r0,17h                          ;
  0800FCD2 DD09    ble    800FCE8h                        ;if (r0 <= 23), branch to 0x800FCE8
+
  0800FCD2 DD09    ble    800FCE8h                        ;if (card_type ≤ 0x17), branch to 0x800FCE8
 
  0800FCD4 2818    cmp    r0,18h                          ;
 
  0800FCD4 2818    cmp    r0,18h                          ;
  0800FCD6 D009    beq    800FCECh                        ;if (r0 == 24), branch to 0x800FCEC
+
  0800FCD6 D009    beq    800FCECh                        ;if (card_type == DIVINE_BEAST), branch to 0x800FCEC
  0800FCD8 E00B    b      800FCF2h                        ;else branch to 0x800FCF2
+
  0800FCD8 E00B    b      800FCF2h                        ;else branch to 0x800FCF2 (default for Monster cards)
 
  0800FCDA 0000    lsl    r0,r0,0h                        ;
 
  0800FCDA 0000    lsl    r0,r0,0h                        ;
  
==Cards names==
+
==? (CPU deck ?)==
0x83663C - Card Names in 6 languages : Japanese, English, German, French, Italian, Spanish
+
===? (calls the super long routine)===
 +
08067BFE 2000    mov    r0,0h                                  ;r0 = 0
 +
08067C00 4680    mov    r8,r0                                  ;r8 = 0
 +
08067C02 4919    ldr    r1,=2018FE4h                            ;
 +
08067C04 2001    mov    r0,1h                                  ;r0 = 1
 +
08067C06 464A    mov    r2,r9                                  ;r2 = r9
 +
08067C08 4010    and    r0,r2                                  ;r0 & r2
 +
08067C0A 4A18    ldr    r2,=0D64h                              ;r2 = 0xD64
 +
08067C0C 4350    mul    r0,r2                                  ;r0 ×= r2
 +
08067C0E 1840    add    r0,r0,r1                                ;r0 += r1
 +
08067C10 78C0    ldrb    r0,[r0,3h]                              ;r0 = [r0 + 3]
 +
08067C12 4580    cmp    r8,r0                                  ;
 +
08067C14 DB01    blt    8067C1Ah                                ;if (r8 < [r0 + 3]), branch to the Super-long routine checking a lot of card IDs in the deck
 +
08067C16 F000FD46 bl      80686A6h                                ;
 +
 
 +
===Super-long routine checking cards in the deck===
 +
08067C1A 4C15    ldr    r4,=7FFh                                ;
 +
08067C1C 1C27    mov    r7,r4                                  ;r7 = 0x7FF
 +
08067C1E 23F8    mov    r3,0F8h                                ;
 +
08067C20 045B    lsl    r3,r3,11h                              ;
 +
08067C22 2001    mov    r0,1h                                  ;
 +
08067C24 4649    mov    r1,r9                                  ;
 +
08067C26 4008    and    r0,r1                                  ;
 +
08067C28 4644    mov    r4,r8                                  ;
 +
08067C2A 00A1    lsl    r1,r4,2h                                ;
 +
08067C2C 4350    mul    r0,r2                                  ;
 +
08067C2E 1809    add    r1,r1,r0                                ;
 +
08067C30 4810    ldr    r0,=20197A8h                            ;r0 = pointer_to_player_deck_during_duel
 +
08067C32 1809    add    r1,r1,r0                                ;r1 = pointer_to_player_deck_during_duel + pointer_position_in_player_deck
 +
08067C34 6808    ldr    r0,[r1]                                ;r0 = card_id
 +
08067C36 0500    lsl    r0,r0,14h                              ;
 +
08067C38 0D06    lsr    r6,r0,14h                              ;
 +
08067C3A 1C31    mov    r1,r6                                  ;r1 = card_id
 +
08067C3C 4039    and    r1,r7                                  ;r1 & 0x7FF (ensures card_id < 2048)
 +
08067C3E 0088    lsl    r0,r1,2h                                ;r0 = card_id << 2
 +
08067C40 4C0D    ldr    r4,=8832B84h                            ;r4 = pointer_to_card_stats_array
 +
08067C42 1902    add    r2,r0,r4                                ;
 +
08067C44 6810    ldr    r0,[r2]                                ;r0 = card_stats
 +
08067C46 4018    and    r0,r3                                  ;
 +
08067C48 0D00    lsr    r0,r0,14h                              ;r0 = card_type
 +
08067C4A 2815    cmp    r0,15h                                  ;
 +
08067C4C D01A    beq    8067C84h                                ;if (card_type == TRAP), branch to 08067C84
 +
08067C4E 2816    cmp    r0,16h                                  ;
 +
08067C50 D100    bne    8067C54h                                ;if (card_type ≠ MAGIC), branch to 08067C54
 +
08067C52 E128    b      8067EA6h                                ;else if (card_type == MAGIC), branch to 08067EA6
 +
08067C54 0048    lsl    r0,r1,1h                                ;...if (card_type ≠ TRAP && card_type ≠ MAGIC), r0 = current_card_id << 1
 +
08067C56 4909    ldr    r1,=8833C80h                            ;r1 = pointer_to_internal_cards_ids_array
 +
08067C58 1840    add    r0,r0,r1                                ;r0 = pointer_to_internal_cards_ids_array + (current_card_id << 1)
 +
08067C5A 8801    ldrh    r1,[r0]                                ;r1 = internal_card_id
 +
08067C5C 4808    ldr    r0,=776h                                ;
 +
08067C5E 4281    cmp    r1,r0                                  ;
 +
08067C60 D000    beq    8067C64h                                ;if (r1 == 0d1910 [Obelisk the Tormentor in DM6, unused]), branch to 08067C64
 +
08067C62 E20D    b      8068080h                                ;else branch to 08068080
 +
08067C64 2003    mov    r0,3h                                  ;r0 = 3
 +
08067C66 E238    b      80680DAh                                ;branch to 080680DA
 +
08067C68 8FE4    ldrh    r4,[r4,3Eh]                            ;
 +
08067C6A 0201    lsl    r1,r0,8h                                ;
 +
08067C6C 0D64    lsr    r4,r4,15h                              ;
 +
08067C6E 0000    lsl    r0,r0,0h                                ;
 +
08067C70 07FF    lsl    r7,r7,1Fh                              ;
 +
08067C72 0000    lsl    r0,r0,0h                                ;
 +
08067C74 97A8    str    r7,[sp,2A0h]                            ;
 +
08067C76 0201    lsl    r1,r0,8h                                ;
 +
08067C78 2B84    cmp    r3,84h                                  ;
 +
08067C7A 0883    lsr    r3,r0,2h                                ;
 +
08067C7C 3C80    sub    r4,80h                                  ;
 +
08067C7E 0883    lsr    r3,r0,2h                                ;
 +
08067C80 0776    lsl    r6,r6,1Dh                              ;
 +
08067C82 0000    lsl    r0,r0,0h                                ;
 +
08067C84 6968    ldr    r0,[r5,14h]                            ;...if (card_type == TRAP)
 +
08067C86 3001    add    r0,1h                                  ;
 +
08067C88 6168    str    r0,[r5,14h]                            ;increment number of Trap cards in the deck stored in IWRAM
 +
08067C8A 6811    ldr    r1,[r2]                                ;r1 = [r2]
 +
08067C8C 1C08    mov    r0,r1                                  ;r0 = r1
 +
08067C8E 4018    and    r0,r3                                  ;
 +
08067C90 0D00    lsr    r0,r0,14h                              ;
 +
08067C92 2816    cmp    r0,16h                                  ;
 +
08067C94 DC06    bgt    8067CA4h                                ;
 +
08067C96 2815    cmp    r0,15h                                  ;
 +
08067C98 DB04    blt    8067CA4h                                ;
 +
08067C9A 20E0    mov    r0,0E0h                                ;
 +
08067C9C 0300    lsl    r0,r0,0Ch                              ;r0 = 0x1C00000
 +
08067C9E 4001    and    r1,r0                                  ;r1 &= r0
 +
08067CA0 0C48    lsr    r0,r1,11h                              ;r0 = r1 >> 17
 +
08067CA2 E000    b      8067CA6h                                ;branch to 08067CA6
 +
08067CA4 2000    mov    r0,0h                                  ;
 +
08067CA6 2803    cmp    r0,3h                                  ;
 +
08067CA8 D009    beq    8067CBEh                                ;if (r0 == 3), branch to 08067CBE
 +
08067CAA 2803    cmp    r0,3h                                  ;
 +
08067CAC DC02    bgt    8067CB4h                                ;if (r0 > 3), branch to 08067CB4
 +
08067CAE 2802    cmp    r0,2h                                  ;
 +
08067CB0 D00D    beq    8067CCEh                                ;if (r0 == 2), branch to 08067CCE
 +
08067CB2 E013    b      8067CDCh                                ;else branch to 08067CDC
 +
08067CB4 2804    cmp    r0,4h                                  ;
 +
08067CB6 D006    beq    8067CC6h                                ;if (r0 == 4), branch to 08067CC6
 +
08067CB8 2805    cmp    r0,5h                                  ;
 +
08067CBA D00C    beq    8067CD6h                                ;if (r0 == 5), branch to 08067CD6
 +
08067CBC E00E    b      8067CDCh                                ;else branch to 08067CDC
 +
08067CBE 6A28    ldr    r0,[r5,20h]                            ;
 +
08067CC0 3001    add    r0,1h                                  ;
 +
08067CC2 6228    str    r0,[r5,20h]                            ;[r5 + 0x20]++
 +
08067CC4 E00A    b      8067CDCh                                ;branch to 08067CDC
 +
08067CC6 69E8    ldr    r0,[r5,1Ch]                            ;
 +
08067CC8 3001    add    r0,1h                                  ;
 +
08067CCA 61E8    str    r0,[r5,1Ch]                            ;[r5 + 0x1C]++
 +
08067CCC E006    b      8067CDCh                                ;branch to 08067CDC
 +
08067CCE 6A68    ldr    r0,[r5,24h]                            ;
 +
08067CD0 3001    add    r0,1h                                  ;
 +
08067CD2 6268    str    r0,[r5,24h]                            ;[r5 + 0x24]++
 +
08067CD4 E002    b      8067CDCh                                ;branch to 08067CDC
 +
08067CD6 6AA8    ldr    r0,[r5,28h]                            ;
 +
08067CD8 3001    add    r0,1h                                  ;
 +
08067CDA 62A8    str    r0,[r5,28h]                            ;[r5 + 0x28]++
 +
08067CDC 403E    and    r6,r7                                  ;current_card_id &= 0x7FF
 +
08067CDE 0070    lsl    r0,r6,1h                                ;r0 = current_card_id << 1
 +
08067CE0 4A0F    ldr    r2,=8833C80h                            ;r2 = pointer_to_internal_cards_ids_array
 +
08067CE2 1880    add    r0,r0,r2                                ;r0 = pointer_to_internal_cards_ids_array + (current_card_id << 1)
 +
08067CE4 8801    ldrh    r1,[r0]                                ;r1 = internal_card_id
 +
08067CE6 480F    ldr    r0,=40Eh                                ;r0 = 0x40E [0d1038]
 +
08067CE8 4281    cmp    r1,r0                                  ;
 +
08067CEA D101    bne    8067CF0h                                ;if (internal_card_id ≠ 0d1038 [Magic Thorns]), branch to 08067CF0
 +
08067CEC F000FCB2 bl      8068654h                                ;else call 0x8068654
 +
08067CF0 4281    cmp    r1,r0                                  ;
 +
08067CF2 DC5F    bgt    8067DB4h                                ;if (internal_card_id > 0d1038), branch to 08067DB4
 +
08067CF4 3845    sub    r0,45h                                  ;r0 = 0x3C9 [0d969]
 +
08067CF6 4281    cmp    r1,r0                                  ;
 +
08067CF8 D100    bne    8067CFCh                                ;if (internal_card_id ≠ 0d969 [Chain Destruction]), branch to 08067CFC
 +
08067CFA E1B9    b      8068070h                                ;else branch to 08068070
 +
08067CFC 4281    cmp    r1,r0                                  ;
 +
08067CFE DC2D    bgt    8067D5Ch                                ;if (internal_card_id > 0d969), branch to 08067D5C
 +
08067D00 4809    ldr    r0,=2ADh                                ;r0 = 0x2AD [0d685]
 +
08067D02 4281    cmp    r1,r0                                  ;
 +
08067D04 D100    bne    8067D08h                                ;if (internal_card_id ≠ 0d685 [Widespread Ruin]), branch to 08067D08
 +
08067D06 E1B3    b      8068070h                                ;else branch to 08068070
 +
08067D08 4281    cmp    r1,r0                                  ;
 +
08067D0A DC13    bgt    8067D34h                                ;if (internal_card_id > 0d685), branch to 08067D34
 +
08067D0C 381C    sub    r0,1Ch                                  ;
 +
08067D0E 4281    cmp    r1,r0                                  ;
 +
08067D10 D101    bne    8067D16h                                ;if (internal_card_id ≠ 0d657 [Metalmorph]), branch to 08067D16
 +
08067D12 F000FC94 bl      806863Eh                                ;else branch to 0806863E
 +
08067D16 4281    cmp    r1,r0                                  ;
 +
08067D18 DC08    bgt    8067D2Ch                                ;if (internal_card_id > 0d657), branch to 08067D2C
 +
08067D1A 20AE    mov    r0,0AEh                                ;else r0 = 0xAE
 +
08067D1C 0040    lsl    r0,r0,1h                                ;r0 << 1 [0x15C ; 0d348 ; Spellbinding Circle]
 +
08067D1E E083    b      8067E28h                                ;branch to 08067E28
 +
08067D20 3C80    sub    r4,80h                                  ;-
 +
08067D22 0883    lsr    r3,r0,2h                                ;-
 +
08067D24 040E    lsl    r6,r1,10h                              ;-
 +
08067D26 0000    lsl    r0,r0,0h                                ;-
 +
08067D28 02AD    lsl    r5,r5,0Ah                              ;-
 +
08067D2A 0000    lsl    r0,r0,0h                                ;-
 +
08067D2C 4800    ldr    r0,=2A9h                                ;... if (internal_card_id > 0d657), r0 = 0x2A9 [0d681 ; Eatgaboon]
 +
08067D2E E031    b      8067D94h                                ;branch to 08067D94
 +
08067D30 02A9    lsl    r1,r5,0Ah                              ;-
 +
08067D32 0000    lsl    r0,r0,0h                                ;-
 +
08067D34 4804    ldr    r0,=3ABh                                ;... if (internal_card_id > 0d685), r0 = 0x3AB [0d939 ; Bell of Destruction]
 +
08067D36 4281    cmp    r1,r0                                  ;
 +
08067D38 D101    bne    8067D3Eh                                ;if (internal_card_id ≠ 0d939 [Bell of Destruction]), branch to 08067D3E
 +
08067D3A F000FC8B bl      8068654h                                ;else call 08068654
 +
08067D3E 4281    cmp    r1,r0                                  ;
 +
08067D40 DC04    bgt    8067D4Ch                                ;if (internal_card_id > 0d939), branch to 08067D4C
 +
08067D42 38FA    sub    r0,0FAh                                ;r0 = 0d689 [Fake Trap in DM6, unused]
 +
08067D44 E070    b      8067E28h                                ;branch to 08067E28
 +
08067D46 0000    lsl    r0,r0,0h                                ;-
 +
08067D48 03AB    lsl    r3,r5,0Eh                              ;-
 +
08067D4A 0000    lsl    r0,r0,0h                                ;-
 +
08067D4C 4802    ldr    r0,=3B1h                                ;... if (internal_card_id > 0d939), r0 = 0x3B1 [0d945, Magical Hats]
 +
08067D4E 4281    cmp    r1,r0                                  ;
 +
08067D50 D100    bne    8067D54h                                ;if (internal_card_id ≠ 0d945 [Magical Hats]), branch to 08067D54
 +
08067D52 E18D    b      8068070h                                ;else branch to 08068070
 +
08067D54 300F    add    r0,0Fh                                  ;r0 = 0x3C0 [0d960, Negate Attack]
 +
08067D56 E067    b      8067E28h                                ;branch to 08067E28
 +
08067D58 03B1    lsl    r1,r6,0Eh                              ;
 +
08067D5A 0000    lsl    r0,r0,0h                                ;
 +
08067D5C 4806    ldr    r0,=3FBh                                ;... if (internal_card_id > 0d969), r0 = 0x3FB [0d1019, White Hole]
 +
08067D5E 4281    cmp    r1,r0                                  ;
 +
08067D60 D100    bne    8067D64h                                ;
 +
08067D62 E185    b      8068070h                                ;
 +
08067D64 4281    cmp    r1,r0                                  ;
 +
08067D66 DC0D    bgt    8067D84h                                ;
 +
08067D68 3811    sub    r0,11h                                  ;
 +
08067D6A 4281    cmp    r1,r0                                  ;
 +
08067D6C D100    bne    8067D70h                                ;
 +
08067D6E E17F    b      8068070h                                ;
 +
08067D70 4281    cmp    r1,r0                                  ;
 +
08067D72 DC03    bgt    8067D7Ch                                ;
 +
08067D74 380C    sub    r0,0Ch                                  ;
 +
08067D76 E057    b      8067E28h                                ;
 +
08067D78 03FB    lsl    r3,r7,0Fh                              ;
 +
08067D7A 0000    lsl    r0,r0,0h                                ;
 +
08067D7C 20FE    mov    r0,0FEh                                ;
 +
08067D7E 0080    lsl    r0,r0,2h                                ;
 +
08067D80 F000FBCF bl      8068522h                                ;call 08068522
 +
08067D84 4808    ldr    r0,=407h                                ;[0d1031, Horn of Heaven]
 +
08067D86 4281    cmp    r1,r0                                  ;
 +
08067D88 DC10    bgt    8067DACh                                ;
 +
08067D8A 3803    sub    r0,3h                                  ;
 +
08067D8C 4281    cmp    r1,r0                                  ;
 +
08067D8E DB00    blt    8067D92h                                ;
 +
08067D90 E16E    b      8068070h                                ;branch to 08068070
 +
08067D92 3806    sub    r0,6h                                  ;
 +
08067D94 4281    cmp    r1,r0                                  ;
 +
08067D96 DD01    ble    8067D9Ch                                ;
 +
08067D98 F000FC77 bl      806868Ah                                ;call 0806868A
 +
08067D9C 3801    sub    r0,1h                                  ;
 +
08067D9E 4281    cmp    r1,r0                                  ;
 +
08067DA0 DA01    bge    8067DA6h                                ;
 +
08067DA2 F000FC72 bl      806868Ah                                ;call 0806868A
 +
08067DA6 E163    b      8068070h                                ;
 +
08067DA8 0407    lsl    r7,r0,10h                              ;
 +
08067DAA 0000    lsl    r0,r0,0h                                ;
 +
08067DAC 4800    ldr    r0,=409h                                ;[0d1033, Royal Decree]
 +
08067DAE E03B    b      8067E28h                                ;branch to 08067E28
 +
08067DB0 0409    lsl    r1,r1,10h                              ;
 +
08067DB2 0000    lsl    r0,r0,0h                                ;
 +
08067DB4 480A    ldr    r0,=49Ah                                ;[0d1178, Aqua Chorus]
 +
08067DB6 4281    cmp    r1,r0                                  ;
 +
08067DB8 D101    bne    8067DBEh                                ;
 +
08067DBA F000FC40 bl      806863Eh                                ;
 +
08067DBE 4281    cmp    r1,r0                                  ;
 +
08067DC0 DC3A    bgt    8067E38h                                ;
 +
08067DC2 3853    sub    r0,53h                                  ;
 +
08067DC4 4281    cmp    r1,r0                                  ;
 +
08067DC6 D101    bne    8067DCCh                                ;
 +
08067DC8 F000FC50 bl      806866Ch                                ;
 +
08067DCC 4281    cmp    r1,r0                                  ;
 +
08067DCE DC13    bgt    8067DF8h                                ;
 +
08067DD0 3821    sub    r0,21h                                  ;
 +
08067DD2 4281    cmp    r1,r0                                  ;
 +
08067DD4 D100    bne    8067DD8h                                ;
 +
08067DD6 E14B    b      8068070h                                ;
 +
08067DD8 4281    cmp    r1,r0                                  ;
 +
08067DDA DC03    bgt    8067DE4h                                ;
 +
08067DDC 3806    sub    r0,6h                                  ;
 +
08067DDE E023    b      8067E28h                                ;
 +
08067DE0 049A    lsl    r2,r3,12h                              ;
 +
08067DE2 0000    lsl    r0,r0,0h                                ;
 +
08067DE4 4803    ldr    r0,=43Ah                                ;[0d1082, Snake Fang]
 +
08067DE6 4281    cmp    r1,r0                                  ;
 +
08067DE8 D101    bne    8067DEEh                                ;
 +
08067DEA F000FC28 bl      806863Eh                                ;
 +
08067DEE 300A    add    r0,0Ah                                  ;
 +
08067DF0 F000FC06 bl      8068600h                                ;
 +
08067DF4 043A    lsl    r2,r7,10h                              ;
 +
08067DF6 0000    lsl    r0,r0,0h                                ;
 +
08067DF8 4807    ldr    r0,=475h                                ;[0d1141, Appropriate]
 +
08067DFA 4281    cmp    r1,r0                                  ;
 +
08067DFC D101    bne    8067E02h                                ;
 +
08067DFE F000FC39 bl      8068674h                                ;
 +
08067E02 4281    cmp    r1,r0                                  ;
 +
08067E04 DC0A    bgt    8067E1Ch                                ;
 +
08067E06 382B    sub    r0,2Bh                                  ;
 +
08067E08 4281    cmp    r1,r0                                  ;
 +
08067E0A D101    bne    8067E10h                                ;
 +
08067E0C F000FC1E bl      806864Ch                                ;
 +
08067E10 302A    add    r0,2Ah                                  ;
 +
08067E12 F000FBF5 bl      8068600h                                ;
 +
08067E16 0000    lsl    r0,r0,0h                                ;
 +
08067E18 0475    lsl    r5,r6,11h                              ;
 +
08067E1A 0000    lsl    r0,r0,0h                                ;
 +
08067E1C 4805    ldr    r0,=47Bh                                ;[0d1147, Backup Soldier]
 +
08067E1E 4281    cmp    r1,r0                                  ;
 +
08067E20 D101    bne    8067E26h                                ;
 +
08067E22 F000FC23 bl      806866Ch                                ;
 +
08067E26 3007    add    r0,7h                                  ;
 +
08067E28 4281    cmp    r1,r0                                  ;
 +
08067E2A D100    bne    8067E2Eh                                ;
 +
08067E2C E120    b      8068070h                                ;
 +
08067E2E F000FC2C bl      806868Ah                                ;call 0806868A
 +
08067E32 0000    lsl    r0,r0,0h                                ;
 +
08067E34 047B    lsl    r3,r7,11h                              ;
 +
08067E36 0000    lsl    r0,r0,0h                                ;
 +
08067E38 4807    ldr    r0,=519h                                ;[0d1305, Solemn Wishes]
 +
08067E3A 4281    cmp    r1,r0                                  ;
 +
08067E3C D101    bne    8067E42h                                ;
 +
08067E3E F000FC05 bl      806864Ch                                ;
 +
08067E42 4281    cmp    r1,r0                                  ;
 +
08067E44 DC14    bgt    8067E70h                                ;
 +
08067E46 3804    sub    r0,4h                                  ;
 +
08067E48 4281    cmp    r1,r0                                  ;
 +
08067E4A D100    bne    8067E4Eh                                ;
 +
08067E4C E110    b      8068070h                                ;
 +
08067E4E 4281    cmp    r1,r0                                  ;
 +
08067E50 DC04    bgt    8067E5Ch                                ;
 +
08067E52 3857    sub    r0,57h                                  ;
 +
08067E54 F000FBCB bl      80685EEh                                ;
 +
08067E58 0519    lsl    r1,r3,14h                              ;
 +
08067E5A 0000    lsl    r0,r0,0h                                ;
 +
08067E5C 4803    ldr    r0,=516h                                ;[0d1302, Minor Goblin Official]
 +
08067E5E 4281    cmp    r1,r0                                  ;
 +
08067E60 D101    bne    8067E66h                                ;
 +
08067E62 F000FBF7 bl      8068654h                                ;
 +
08067E66 3002    add    r0,2h                                  ;
 +
08067E68 E3C1    b      80685EEh                                ;
 +
08067E6A 0000    lsl    r0,r0,0h                                ;
 +
08067E6C 0516    lsl    r6,r2,14h                              ;
 +
08067E6E 0000    lsl    r0,r0,0h                                ;
 +
08067E70 4806    ldr    r0,=5A7h                                ;[0d1447, Jar of Greed]
 +
08067E72 4281    cmp    r1,r0                                  ;
 +
08067E74 D101    bne    8067E7Ah                                ;
 +
08067E76 F000FBFD bl      8068674h                                ;
 +
08067E7A 4281    cmp    r1,r0                                  ;
 +
08067E7C DC08    bgt    8067E90h                                ;
 +
08067E7E 388D    sub    r0,8Dh                                  ;
 +
08067E80 4281    cmp    r1,r0                                  ;
 +
08067E82 D101    bne    8067E88h                                ;
 +
08067E84 F000FBE6 bl      8068654h                                ;
 +
08067E88 3012    add    r0,12h                                  ;
 +
08067E8A E3B0    b      80685EEh                                ;
 +
08067E8C 05A7    lsl    r7,r4,16h                              ;
 +
08067E8E 0000    lsl    r0,r0,0h                                ;
 +
08067E90 20BF    mov    r0,0BFh                                ;
 +
08067E92 00C0    lsl    r0,r0,3h                                ;
 +
08067E94 4281    cmp    r1,r0                                  ;
 +
08067E96 D100    bne    8067E9Ah                                ;
 +
08067E98 E0EE    b      8068078h                                ;
 +
08067E9A 3003    add    r0,3h                                  ;
 +
08067E9C 4281    cmp    r1,r0                                  ;
 +
08067E9E D001    beq    8067EA4h                                ;
 +
08067EA0 F000FBF3 bl      806868Ah                                ;call 0806868A
 +
08067EA4 E0E4    b      8068070h                                ;branch to 08068070
 +
08067EA6 6928    ldr    r0,[r5,10h]                            ;...if (card_type == MAGIC)
 +
08067EA8 3001    add    r0,1h                                  ;
 +
08067EAA 6128    str    r0,[r5,10h]                            ;increment number of Magic cards in the deck stored in IWRAM
 +
08067EAC 6811    ldr    r1,[r2]                                ;
 +
08067EAE 1C08    mov    r0,r1                                  ;
 +
08067EB0 4018    and    r0,r3                                  ;
 +
08067EB2 0D00    lsr    r0,r0,14h                              ;
 +
08067EB4 2816    cmp    r0,16h                                  ;
 +
08067EB6 DC06    bgt    8067EC6h                                ;
 +
08067EB8 2815    cmp    r0,15h                                  ;
 +
08067EBA DB04    blt    8067EC6h                                ;
 +
08067EBC 20E0    mov    r0,0E0h                                ;
 +
08067EBE 0300    lsl    r0,r0,0Ch                              ;
 +
08067EC0 4001    and    r1,r0                                  ;
 +
08067EC2 0C48    lsr    r0,r1,11h                              ;
 +
08067EC4 E000    b      8067EC8h                                ;
 +
08067EC6 2000    mov    r0,0h                                  ;
 +
08067EC8 2803    cmp    r0,3h                                  ;
 +
08067ECA D009    beq    8067EE0h                                ;
 +
08067ECC 2803    cmp    r0,3h                                  ;
 +
08067ECE DC02    bgt    8067ED6h                                ;
 +
08067ED0 2802    cmp    r0,2h                                  ;
 +
08067ED2 D00D    beq    8067EF0h                                ;
 +
08067ED4 E013    b      8067EFEh                                ;
 +
08067ED6 2804    cmp    r0,4h                                  ;
 +
08067ED8 D006    beq    8067EE8h                                ;
 +
08067EDA 2805    cmp    r0,5h                                  ;
 +
08067EDC D00C    beq    8067EF8h                                ;
 +
08067EDE E00E    b      8067EFEh                                ;
 +
08067EE0 6A28    ldr    r0,[r5,20h]                            ;
 +
08067EE2 3001    add    r0,1h                                  ;
 +
08067EE4 6228    str    r0,[r5,20h]                            ;
 +
08067EE6 E00A    b      8067EFEh                                ;
 +
08067EE8 69E8    ldr    r0,[r5,1Ch]                            ;
 +
08067EEA 3001    add    r0,1h                                  ;
 +
08067EEC 61E8    str    r0,[r5,1Ch]                            ;
 +
08067EEE E006    b      8067EFEh                                ;
 +
08067EF0 6A68    ldr    r0,[r5,24h]                            ;
 +
08067EF2 3001    add    r0,1h                                  ;
 +
08067EF4 6268    str    r0,[r5,24h]                            ;
 +
08067EF6 E002    b      8067EFEh                                ;
 +
08067EF8 6AA8    ldr    r0,[r5,28h]                            ;
 +
08067EFA 3001    add    r0,1h                                  ;
 +
08067EFC 62A8    str    r0,[r5,28h]                            ;
 +
08067EFE 403E    and    r6,r7                                  ;
 +
08067F00 0070    lsl    r0,r6,1h                                ;
 +
08067F02 4C11    ldr    r4,=8833C80h                            ;r4 = pointer_to_internal_cards_ids_array
 +
08067F04 1900    add    r0,r0,r4                                ;
 +
08067F06 8801    ldrh    r1,[r0]                                ;
 +
08067F08 4810    ldr    r0,=40Dh                                ;[0d1037, Exile of the Wicked]
 +
08067F0A 4281    cmp    r1,r0                                  ;
 +
08067F0C DC5F    bgt    8067FCEh                                ;
 +
08067F0E 3801    sub    r0,1h                                  ;
 +
08067F10 4281    cmp    r1,r0                                  ;
 +
08067F12 DB00    blt    8067F16h                                ;
 +
08067F14 E3A2    b      806865Ch                                ;
 +
08067F16 480E    ldr    r0,=297h                                ;[0d663, Eternal Draught]
 +
08067F18 4281    cmp    r1,r0                                  ;
 +
08067F1A DC29    bgt    8067F70h                                ;
 +
08067F1C 3802    sub    r0,2h                                  ;
 +
08067F1E 4281    cmp    r1,r0                                  ;
 +
08067F20 DB00    blt    8067F24h                                ;
 +
08067F22 E39B    b      806865Ch                                ;
 +
08067F24 20AD    mov    r0,0ADh                                ;
 +
08067F26 0040    lsl    r0,r0,1h                                ;
 +
08067F28 4281    cmp    r1,r0                                  ;
 +
08067F2A DC13    bgt    8067F54h                                ;
 +
08067F2C 3804    sub    r0,4h                                  ;
 +
08067F2E 4281    cmp    r1,r0                                  ;
 +
08067F30 DB00    blt    8067F34h                                ;
 +
08067F32 E38F    b      8068654h                                ;
 +
08067F34 3807    sub    r0,7h                                  ;
 +
08067F36 4281    cmp    r1,r0                                  ;
 +
08067F38 DA00    bge    8067F3Ch                                ;
 +
08067F3A E3A6    b      806868Ah                                ;branch to 0806868A
 +
08067F3C 3001    add    r0,1h                                  ;
 +
08067F3E 4281    cmp    r1,r0                                  ;
 +
08067F40 DC00    bgt    8067F44h                                ;
 +
08067F42 E38B    b      806865Ch                                ;
 +
08067F44 E382    b      806864Ch                                ;
 +
08067F46 0000    lsl    r0,r0,0h                                ;
 +
08067F48 3C80    sub    r4,80h                                  ;
 +
08067F4A 0883    lsr    r3,r0,2h                                ;
 +
08067F4C 040D    lsl    r5,r1,10h                              ;
 +
08067F4E 0000    lsl    r0,r0,0h                                ;
 +
08067F50 0297    lsl    r7,r2,0Ah                              ;
 +
08067F52 0000    lsl    r0,r0,0h                                ;
 +
08067F54 4803    ldr    r0,=28Fh                                ;[0d655, Eternal Rest]
 +
08067F56 4281    cmp    r1,r0                                  ;
 +
08067F58 D100    bne    8067F5Ch                                ;
 +
08067F5A E37F    b      806865Ch                                ;
 +
08067F5C 4281    cmp    r1,r0                                  ;
 +
08067F5E DC03    bgt    8067F68h                                ;
 +
08067F60 3803    sub    r0,3h                                  ;[0d652, Warrior Elimination]
 +
08067F62 E32A    b      80685BAh                                ;
 +
08067F64 028F    lsl    r7,r1,0Ah                              ;
 +
08067F66 0000    lsl    r0,r0,0h                                ;
 +
08067F68 4800    ldr    r0,=293h                                ;[0d659, Stain Storm]
 +
08067F6A E326    b      80685BAh                                ;
 +
08067F6C 0293    lsl    r3,r2,0Ah                              ;
 +
08067F6E 0000    lsl    r0,r0,0h                                ;
 +
08067F70 4806    ldr    r0,=3EEh                                ;[0d1006, Blue Medicine]
 +
08067F72 4281    cmp    r1,r0                                  ;
 +
08067F74 D100    bne    8067F78h                                ;
 +
08067F76 E369    b      806864Ch                                ;
 +
08067F78 4281    cmp    r1,r0                                  ;
 +
08067F7A DC17    bgt    8067FACh                                ;
 +
08067F7C 3826    sub    r0,26h                                  ;[0d968, Graceful Charity]
 +
08067F7E 4281    cmp    r1,r0                                  ;
 +
08067F80 D100    bne    8067F84h                                ;
 +
08067F82 E377    b      8068674h                                ;
 +
08067F84 4281    cmp    r1,r0                                  ;
 +
08067F86 DC05    bgt    8067F94h                                ;
 +
08067F88 4801    ldr    r0,=29Fh                                ;[0d671, Harpie's Feather Duster]
 +
08067F8A E008    b      8067F9Eh                                ;
 +
08067F8C 03EE    lsl    r6,r5,0Fh                              ;
 +
08067F8E 0000    lsl    r0,r0,0h                                ;
 +
08067F90 029F    lsl    r7,r3,0Ah                              ;
 +
08067F92 0000    lsl    r0,r0,0h                                ;
 +
08067F94 4804    ldr    r0,=3E9h                                ;[0d1001, Fissure]
 +
08067F96 4281    cmp    r1,r0                                  ;
 +
08067F98 D100    bne    8067F9Ch                                ;
 +
08067F9A E35F    b      806865Ch                                ;
 +
08067F9C 3003    add    r0,3h                                  ;
 +
08067F9E 4281    cmp    r1,r0                                  ;
 +
08067FA0 D100    bne    8067FA4h                                ;
 +
08067FA2 E35F    b      8068664h                                ;
 +
08067FA4 E371    b      806868Ah                                ;branch to 0806868A
 +
08067FA6 0000    lsl    r0,r0,0h                                ;
 +
08067FA8 03E9    lsl    r1,r5,0Fh                              ;
 +
08067FAA 0000    lsl    r0,r0,0h                                ;
 +
08067FAC 20FC    mov    r0,0FCh                                ;
 +
08067FAE 0080    lsl    r0,r0,2h                                ;
 +
08067FB0 4281    cmp    r1,r0                                  ;
 +
08067FB2 D100    bne    8067FB6h                                ;
 +
08067FB4 E35A    b      806866Ch                                ;
 +
08067FB6 4281    cmp    r1,r0                                  ;
 +
08067FB8 DA00    bge    8067FBCh                                ;
 +
08067FBA E34B    b      8068654h                                ;
 +
08067FBC 3001    add    r0,1h                                  ;
 +
08067FBE 4281    cmp    r1,r0                                  ;
 +
08067FC0 D100    bne    8067FC4h                                ;
 +
08067FC2 E34F    b      8068664h                                ;
 +
08067FC4 3001    add    r0,1h                                  ;
 +
08067FC6 4281    cmp    r1,r0                                  ;
 +
08067FC8 D100    bne    8067FCCh                                ;
 +
08067FCA E353    b      8068674h                                ;
 +
08067FCC E35D    b      806868Ah                                ;branch to 0806868A
 +
08067FCE 2091    mov    r0,91h                                  ;
 +
08067FD0 00C0    lsl    r0,r0,3h                                ;
 +
08067FD2 4281    cmp    r1,r0                                  ;
 +
08067FD4 DC28    bgt    8068028h                                ;
 +
08067FD6 3801    sub    r0,1h                                  ;
 +
08067FD8 4281    cmp    r1,r0                                  ;
 +
08067FDA DB00    blt    8067FDEh                                ;
 +
08067FDC E346    b      806866Ch                                ;
 +
08067FDE 3855    sub    r0,55h                                  ;
 +
08067FE0 4281    cmp    r1,r0                                  ;
 +
08067FE2 D045    beq    8068070h                                ;
 +
08067FE4 4281    cmp    r1,r0                                  ;
 +
08067FE6 DC0F    bgt    8068008h                                ;
 +
08067FE8 380D    sub    r0,0Dh                                  ;
 +
08067FEA 4281    cmp    r1,r0                                  ;
 +
08067FEC D100    bne    8067FF0h                                ;
 +
08067FEE E339    b      8068664h                                ;
 +
08067FF0 4281    cmp    r1,r0                                  ;
 +
08067FF2 DC01    bgt    8067FF8h                                ;
 +
08067FF4 3816    sub    r0,16h                                  ;
 +
08067FF6 E2FA    b      80685EEh                                ;
 +
08067FF8 4802    ldr    r0,=42Bh                                ;[0d1067, Final Destiny]
 +
08067FFA 4281    cmp    r1,r0                                  ;
 +
08067FFC D100    bne    8068000h                                ;
 +
08067FFE E32D    b      806865Ch                                ;
 +
08068000 3002    add    r0,2h                                  ;
 +
08068002 E2E0    b      80685C6h                                ;
 +
08068004 042B    lsl    r3,r5,10h                              ;
 +
08068006 0000    lsl    r0,r0,0h                                ;
 +
08068008 4806    ldr    r0,=434h                                ;[0d1076, The Reliable Guardian]
 +
0806800A 4281    cmp    r1,r0                                  ;
 +
0806800C DC00    bgt    8068010h                                ;
 +
0806800E E316    b      806863Eh                                ;
 +
08068010 3004    add    r0,4h                                  ;
 +
08068012 4281    cmp    r1,r0                                  ;
 +
08068014 DD00    ble    8068018h                                ;
 +
08068016 E338    b      806868Ah                                ;branch to 0806868A
 +
08068018 3801    sub    r0,1h                                  ;
 +
0806801A 4281    cmp    r1,r0                                  ;
 +
0806801C DA00    bge    8068020h                                ;
 +
0806801E E334    b      806868Ah                                ;branch to 0806868A
 +
08068020 E320    b      8068664h                                ;
 +
08068022 0000    lsl    r0,r0,0h                                ;
 +
08068024 0434    lsl    r4,r6,10h                              ;
 +
08068026 0000    lsl    r0,r0,0h                                ;
 +
08068028 4806    ldr    r0,=522h                                ;[0d1314, Limiter Removal]
 +
0806802A 4281    cmp    r1,r0                                  ;
 +
0806802C D100    bne    8068030h                                ;
 +
0806802E E306    b      806863Eh                                ;
 +
08068030 4281    cmp    r1,r0                                  ;
 +
08068032 DC0D    bgt    8068050h                                ;
 +
08068034 386F    sub    r0,6Fh                                  ;
 +
08068036 4281    cmp    r1,r0                                  ;
 +
08068038 D100    bne    806803Ch                                ;
 +
0806803A E300    b      806863Eh                                ;
 +
0806803C 4281    cmp    r1,r0                                  ;
 +
0806803E DC03    bgt    8068048h                                ;
 +
08068040 3818    sub    r0,18h                                  ;
 +
08068042 E2DD    b      8068600h                                ;
 +
08068044 0522    lsl    r2,r4,14h                              ;
 +
08068046 0000    lsl    r0,r0,0h                                ;
 +
08068048 4800    ldr    r0,=4BBh                                ;[0d1211, Thousand Knives]
 +
0806804A E2B6    b      80685BAh                                ;branch to 080685BA
 +
0806804C 04BB    lsl    r3,r7,12h                              ;
 +
0806804E 0000    lsl    r0,r0,0h                                ;
 +
08068050 20C1    mov    r0,0C1h                                ;
 +
08068052 00C0    lsl    r0,r0,3h                                ;
 +
08068054 4281    cmp    r1,r0                                  ;
 +
08068056 DC04    bgt    8068062h                                ;
 +
08068058 3803    sub    r0,3h                                  ;
 +
0806805A 4281    cmp    r1,r0                                  ;
 +
0806805C DA0C    bge    8068078h                                ;
 +
0806805E 385A    sub    r0,5Ah                                  ;
 +
08068060 E2AB    b      80685BAh                                ;
 +
08068062 4802    ldr    r0,=60Ah                                ;[0d1546, De-Fusion]
 +
08068064 4281    cmp    r1,r0                                  ;
 +
08068066 D100    bne    806806Ah                                ;if (internal_card_id ≠ DE_FUSION), branch to 0806806A (branch to 0806868A)
 +
08068068 E300    b      806866Ch                                ;else, branch to 0806866C
 +
0806806A E30E    b      806868Ah                                ;branch to 0806868A
 +
0806806C 060A    lsl    r2,r1,18h                              ;
 +
0806806E 0000    lsl    r0,r0,0h                                ;
 +
08068070 6AE8    ldr    r0,[r5,2Ch]                            ;
 +
08068072 3001    add    r0,1h                                  ;
 +
08068074 62E8    str    r0,[r5,2Ch]                            ;increment [r5 + 0x2C]
 +
08068076 E308    b      806868Ah                                ;branch to 0806868A
 +
08068078 6E28    ldr    r0,[r5,60h]                            ;
 +
0806807A 3001    add    r0,1h                                  ;
 +
0806807C 6628    str    r0,[r5,60h]                            ;increment [r5 + 0x60]
 +
0806807E E304    b      806868Ah                                ;branch to 0806868A
 +
08068080 4281    cmp    r1,r0                                  ;
 +
08068082 DB05    blt    8068090h                                ;
 +
08068084 20EF    mov    r0,0EFh                                ;
 +
08068086 00C0    lsl    r0,r0,3h                                ;r0 = [0d1912, The Winged Dragon of Ra in DM6, unused]
 +
08068088 4281    cmp    r1,r0                                  ;
 +
0806808A DC01    bgt    8068090h                                ;if (r1 > 0d1912 [The Winged Dragon of Ra in DM6, unused]), branch to 08068090
 +
0806808C 2001    mov    r0,1h                                  ;r0 = 1
 +
0806808E E024    b      80680DAh                                ;branch to 080680DA
 +
08068090 1C30    mov    r0,r6                                  ;... That's Token monsters, they shouldn't be in the deck
 +
08068092 4038    and    r0,r7                                  ;
 +
08068094 0080    lsl    r0,r0,2h                                ;
 +
08068096 4906    ldr    r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
 +
08068098 1840    add    r0,r0,r1                                ;
 +
0806809A 6800    ldr    r0,[r0]                                ;r0 = current_card_stats
 +
0806809C 4018    and    r0,r3                                  ;
 +
0806809E 0D00    lsr    r0,r0,14h                              ;
 +
080680A0 2816    cmp    r0,16h                                  ;
 +
080680A2 D00A    beq    80680BAh                                ;if (card_type == MAGIC), branch to 080680BA
 +
080680A4 2816    cmp    r0,16h                                  ;
 +
080680A6 DC05    bgt    80680B4h                                ;if (card_type == TICKET  || card_type == DIVINE_BEAST), branch to 080680B4
 +
080680A8 2815    cmp    r0,15h                                  ;
 +
080680AA D008    beq    80680BEh                                ;if (card_type == TRAP), branch to 080680BE
 +
080680AC E00B    b      80680C6h                                ;else branch to 080680C6
 +
080680AE 0000    lsl    r0,r0,0h                                ;
 +
080680B0 2B84    cmp    r3,84h                                  ;
 +
080680B2 0883    lsr    r3,r0,2h                                ;
 +
080680B4 2817    cmp    r0,17h                                  ;
 +
080680B6 D004    beq    80680C2h                                ;if (card_type == TICKET), branch to 080680C2
 +
080680B8 E005    b      80680C6h                                ;else branch to 080680C6
 +
080680BA 2007    mov    r0,7h                                  ;...if (card_type == MAGIC), r0 = 7
 +
080680BC E00D    b      80680DAh                                ;branch to 080680DA
 +
080680BE 2008    mov    r0,8h                                  ;...if (card_type == TRAP), r0 = 8
 +
080680C0 E00B    b      80680DAh                                ;branch to 080680DA
 +
080680C2 2009    mov    r0,9h                                  ;...if (card_type == TICKET), r0 = 9
 +
080680C4 E009    b      80680DAh                                ;branch to 080680DA
 +
080680C6 1C30    mov    r0,r6                                  ;...if it is a Monster card
 +
080680C8 4038    and    r0,r7                                  ;
 +
080680CA 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
080680CC 4A06    ldr    r2,=8832B84h                            ;
 +
080680CE 1880    add    r0,r0,r2                                ;r0 = pointer_to_card_stats_array + ((r6 & r7) << 2)
 +
080680D0 6800    ldr    r0,[r0]                                ;r0 = current_card_stats
 +
080680D2 21C0    mov    r1,0C0h                                ;
 +
080680D4 0309    lsl    r1,r1,0Ch                              ;
 +
080680D6 4008    and    r0,r1                                  ;r0 & 0xC0000
 +
080680D8 0C80    lsr    r0,r0,12h                              ;r0 >> 18
 +
080680DA 2801    cmp    r0,1h                                  ;
 +
080680DC D011    beq    8068102h                                ;if (monster_category == EFFECT_MONSTER), branch to 08068102
 +
080680DE 2801    cmp    r0,1h                                  ;
 +
080680E0 DC04    bgt    80680ECh                                ;if (monster_category > 1), branch to 080680EC
 +
080680E2 2800    cmp    r0,0h                                  ;
 +
080680E4 D005    beq    80680F2h                                ;if (monster_category == NORMAL_MONSTER), branch to 080680F2
 +
080680E6 E00F    b      8068108h                                ;else branch to 8068108
 +
080680E8 2B84    cmp    r3,84h                                  ;-
 +
080680EA 0883    lsr    r3,r0,2h                                ;-
 +
080680EC 2803    cmp    r0,3h                                  ;
 +
080680EE D004    beq    80680FAh                                ;if (monster_category == RITUAL_MONSTER), branch to 080680FA
 +
080680F0 E00A    b      8068108h                                ;else if (monster_category == FUSION_MONSTER), branch to 8068108
 +
080680F2 6828    ldr    r0,[r5]                                ;...if (monster_category == NORMAL_MONSTER)
 +
080680F4 3001    add    r0,1h                                  ;
 +
080680F6 6028    str    r0,[r5]                                ;increment number of Normal Monster cards in the deck stored in IWRAM
 +
080680F8 E006    b      8068108h                                ;branch to 08068108
 +
080680FA 68A8    ldr    r0,[r5,8h]                              ;if (monster_category == RITUAL_MONSTER)
 +
080680FC 3001    add    r0,1h                                  ;
 +
080680FE 60A8    str    r0,[r5,8h]                              ;increments number of Ritual Monster cards in the deck stored in IWRAM
 +
08068100 E002    b      8068108h                                ;branch to 08068108
 +
08068102 6868    ldr    r0,[r5,4h]                              ;...if (monster_category == EFFECT_MONSTER)
 +
08068104 3001    add    r0,1h                                  ;
 +
08068106 6068    str    r0,[r5,4h]                              ;increments number of Effect Monster cards in the deck stored in IWRAM
 +
08068108 1C30    mov    r0,r6                                  ;
 +
0806810A 4038    and    r0,r7                                  ;
 +
0806810C 0040    lsl    r0,r0,1h                                ;r0 = (current_card_id & 0x7FF) << 1
 +
0806810E 4C04    ldr    r4,=8833C80h                            ;r4 = pointer_to_internal_cards_ids_array
 +
08068110 1900    add    r0,r0,r4                                ;r0 = pointer_to_internal_cards_ids_array + ((current_card_id & 0x7FF) << 1)
 +
08068112 8801    ldrh    r1,[r0]                                ;r1 = internal_card_id
 +
08068114 4803    ldr    r0,=776h                                ;
 +
08068116 4281    cmp    r1,r0                                  ;
 +
08068118 D106    bne    8068128h                                ;if (internal_card_id ≠ OBELISK_THE_TOURMENTOR), branch to 08068128
 +
0806811A 2003    mov    r0,3h                                  ;r0 = 3
 +
0806811C E031    b      8068182h                                ;branch to 08068182
 +
0806811E 0000    lsl    r0,r0,0h                                ;-
 +
08068120 3C80    sub    r4,80h                                  ;-
 +
08068122 0883    lsr    r3,r0,2h                                ;-
 +
08068124 0776    lsl    r6,r6,1Dh                              ;-
 +
08068126 0000    lsl    r0,r0,0h                                ;-
 +
08068128 4281    cmp    r1,r0                                  ;...if (internal_card_id ≠ OBELISK_THE_TOURMENTOR)
 +
0806812A DB05    blt    8068138h                                ;if (internal_card_id < 1910) [not a God card, not a Token, not an alternate illustration card], branch to 08068138
 +
0806812C 20EF    mov    r0,0EFh                                ;
 +
0806812E 00C0    lsl    r0,r0,3h                                ;
 +
08068130 4281    cmp    r1,r0                                  ;
 +
08068132 DC01    bgt    8068138h                                ;if (internal_card_id > 1912) [not a God card], branch to 08068138
 +
08068134 2001    mov    r0,1h                                  ;r0 = 1
 +
08068136 E024    b      8068182h                                ;branch to 08068182
 +
08068138 1C30    mov    r0,r6                                  ;...if (internal_card_id < 1910 || internal_card_id > 1912) [not a God card]
 +
0806813A 4038    and    r0,r7                                  ;
 +
0806813C 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
0806813E 4906    ldr    r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
 +
08068140 1840    add    r0,r0,r1                                ;
 +
08068142 6800    ldr    r0,[r0]                                ;r0 = card_stats
 +
08068144 4018    and    r0,r3                                  ;
 +
08068146 0D00    lsr    r0,r0,14h                              ;
 +
08068148 2816    cmp    r0,16h                                  ;
 +
0806814A D00A    beq    8068162h                                ;if (card_type == MAGIC), branch to 08068162
 +
0806814C 2816    cmp    r0,16h                                  ;
 +
0806814E DC05    bgt    806815Ch                                ;if (card_type == TICKET  || card_type == DIVINE_BEAST), branch to 0806815C
 +
08068150 2815    cmp    r0,15h                                  ;
 +
08068152 D008    beq    8068166h                                ;if (card_type == TRAP), branch to 08068166
 +
08068154 E00B    b      806816Eh                                ;else branch to 0806816E
 +
08068156 0000    lsl    r0,r0,0h                                ;
 +
08068158 2B84    cmp    r3,84h                                  ;
 +
0806815A 0883    lsr    r3,r0,2h                                ;
 +
0806815C 2817    cmp    r0,17h                                  ;
 +
0806815E D004    beq    806816Ah                                ;if (card_type == TICKET), branch to 0806816A
 +
08068160 E005    b      806816Eh                                ;if (card_type == DIVINE_BEAST), branch to 0806816E
 +
08068162 2007    mov    r0,7h                                  ;...if (card_type == MAGIC), r0 = 7
 +
08068164 E00D    b      8068182h                                ;branch to 08068182
 +
08068166 2008    mov    r0,8h                                  ;...if (card_type == TRAP), r0 = 8
 +
08068168 E00B    b      8068182h                                ;branch to 08068182
 +
0806816A 2009    mov    r0,9h                                  ;...if (card_type == TICKET), r0 = 9
 +
0806816C E009    b      8068182h                                ;branch to 08068182
 +
0806816E 1C30    mov    r0,r6                                  ;...if (card_type == DIVINE_BEAST)
 +
08068170 4038    and    r0,r7                                  ;
 +
08068172 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
08068174 4A0C    ldr    r2,=8832B84h                            ;r1 = pointer_to_card_stats_array
 +
08068176 1880    add    r0,r0,r2                                ;
 +
08068178 6800    ldr    r0,[r0]                                ;r0 = card_stats
 +
0806817A 21C0    mov    r1,0C0h                                ;
 +
0806817C 0309    lsl    r1,r1,0Ch                              ;
 +
0806817E 4008    and    r0,r1                                  ;
 +
08068180 0C80    lsr    r0,r0,12h                              ;r0 = monster_category
 +
08068182 2803    cmp    r0,3h                                  ;
 +
08068184 D100    bne    8068188h                                ;if (monster_category ≠ RITUAL_MONSTER) [not Obelisk the Tourmentor], branch to 08068188
 +
08068186 E0C8    b      806831Ah                                ;else branch to 0806831A
 +
08068188 1C30    mov    r0,r6                                  ;...if (monster_category ≠ RITUAL_MONSTER) [not Obelisk the Tourmentor]
 +
0806818A 4038    and    r0,r7                                  ;
 +
0806818C 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
0806818E 4C06    ldr    r4,=8832B84h                            ;r1 = pointer_to_card_stats_array
 +
08068190 1900    add    r0,r0,r4                                ;
 +
08068192 6800    ldr    r0,[r0]                                ;r0 = card_stats
 +
08068194 4018    and    r0,r3                                  ;
 +
08068196 0D00    lsr    r0,r0,14h                              ;r0 = card_type
 +
08068198 2815    cmp    r0,15h                                  ;
 +
0806819A DB0B    blt    80681B4h                                ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 080681B4
 +
0806819C 2817    cmp    r0,17h                                  ;
 +
0806819E DD05    ble    80681ACh                                ;if (card_type ≤ 0x17) [is a Trap, Magic, or Ticket card], branch to 080681AC
 +
080681A0 2818    cmp    r0,18h                                  ;
 +
080681A2 D005    beq    80681B0h                                ;if (card_type == DIVINE_BEAST), branch to 080681B0
 +
080681A4 E006    b      80681B4h                                ;else branch to 080681B4
 +
080681A6 0000    lsl    r0,r0,0h                                ;
 +
080681A8 2B84    cmp    r3,84h                                  ;
 +
080681AA 0883    lsr    r3,r0,2h                                ;
 +
080681AC 2000    mov    r0,0h                                  ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), r0 = 0
 +
080681AE E00B    b      80681C8h                                ;branch to 080681C8
 +
080681B0 200A    mov    r0,0Ah                                  ;...if (card_type == DIVINE_BEAST), r0 = 0xA
 +
080681B2 E009    b      80681C8h                                ;branch to 080681C8
 +
080681B4 1C30    mov    r0,r6                                  ;...if (card_type < 0x15 || card_type > 0x18) [is a non-Divine-Beast Monster card, or is a glitch card]
 +
080681B6 4038    and    r0,r7                                  ;
 +
080681B8 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
080681BA 4909    ldr    r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
 +
080681BC 1840    add    r0,r0,r1                                ;
 +
080681BE 6800    ldr    r0,[r0]                                ;r0 = card_stats
 +
080681C0 21F0    mov    r1,0F0h                                ;
 +
080681C2 0549    lsl    r1,r1,15h                              ;
 +
080681C4 4008    and    r0,r1                                  ;
 +
080681C6 0E40    lsr    r0,r0,19h                              ;r0 = monster_level
 +
080681C8 2800    cmp    r0,0h                                  ;
 +
080681CA DA00    bge    80681CEh                                ;if (monster_level > 0), branch to 080681CE
 +
080681CC E0A2    b      8068314h                                ;else branch to 08068314
 +
080681CE 2804    cmp    r0,4h                                  ;...if (monster_level > 0)
 +
080681D0 DD08    ble    80681E4h                                ;if (monster_level ≤ 4), branch to 080681E4
 +
080681D2 2806    cmp    r0,6h                                  ;
 +
080681D4 DD00    ble    80681D8h                                ;else if (monster_level ≤ 6), branch to 080681D8
 +
080681D6 E09D    b      8068314h                                ;else branch to 08068314
 +
080681D8 6D68    ldr    r0,[r5,54h]                            ;...if (monster_level == 5 || monster_level == 6)
 +
080681DA 3001    add    r0,1h                                  ;
 +
080681DC 6568    str    r0,[r5,54h]                            ;increment number of Level 5 and 6 Monster cards in the deck stored in IWRAM
 +
080681DE E09C    b      806831Ah                                ;branch to 0806831A
 +
080681E0 2B84    cmp    r3,84h                                  ;-
 +
080681E2 0883    lsr    r3,r0,2h                                ;-
 +
080681E4 1C30    mov    r0,r6                                  ;...if (monster_level ≤ 4)
 +
080681E6 4038    and    r0,r7                                  ;
 +
080681E8 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
080681EA 4A06    ldr    r2,=8832B84h                            ;r1 = pointer_to_card_stats_array
 +
080681EC 1880    add    r0,r0,r2                                ;
 +
080681EE 6800    ldr    r0,[r0]                                ;r0 = card_stats
 +
080681F0 4018    and    r0,r3                                  ;
 +
080681F2 0D00    lsr    r0,r0,14h                              ;
 +
080681F4 2815    cmp    r0,15h                                  ;
 +
080681F6 DB0C    blt    8068212h                                ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 08068212
 +
080681F8 2817    cmp    r0,17h                                  ;
 +
080681FA DD05    ble    8068208h                                ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 08068208
 +
080681FC 2818    cmp    r0,18h                                  ;
 +
080681FE D005    beq    806820Ch                                ;if (card_type == DIVINE_BEAST), branch to 0806820C
 +
08068200 E007    b      8068212h                                ;else branch to 08068212
 +
08068202 0000    lsl    r0,r0,0h                                ;-
 +
08068204 2B84    cmp    r3,84h                                  ;-
 +
08068206 0883    lsr    r3,r0,2h                                ;-
 +
08068208 2100    mov    r1,0h                                  ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), r1 = 0
 +
0806820A E00D    b      8068228h                                ;branch to 08068228
 +
0806820C 21FA    mov    r1,0FAh                                ;...if (card_type == DIVINE_BEAST)
 +
0806820E 0109    lsl    r1,r1,4h                                ;card_ATK = 4000
 +
08068210 E00A    b      8068228h                                ;branch to 08068228
 +
08068212 1C30    mov    r0,r6                                  ;...if (card_type < 0x15) [is a non-Divine-Beast Monster card]
 +
08068214 4038    and    r0,r7                                  ;
 +
08068216 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
08068218 4C0C    ldr    r4,=8832B84h                            ;r1 = pointer_to_card_stats_array
 +
0806821A 1900    add    r0,r0,r4                                ;
 +
0806821C 6801    ldr    r1,[r0]                                ;r0 = card_stats
 +
0806821E 0389    lsl    r1,r1,0Eh                              ;
 +
08068220 0DC9    lsr    r1,r1,17h                              ;
 +
08068222 0088    lsl    r0,r1,2h                                ;
 +
08068224 1840    add    r0,r0,r1                                ;
 +
08068226 0041    lsl    r1,r0,1h                                ;r1 = DWORD(((r1 << 14 >> 23 << 2) + (r1 << 14 >> 23)) << 1) [card_ATK]
 +
08068228 6E68    ldr    r0,[r5,64h]                            ;r0 = [r5 + 0x64]
 +
0806822A 4288    cmp    r0,r1                                  ;
 +
0806822C DA21    bge    8068272h                                ;if ([r5 + 0x64] ≥ card_ATK), branch to 08068272
 +
0806822E 1C30    mov    r0,r6                                  ;
 +
08068230 4038    and    r0,r7                                  ;
 +
08068232 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
08068234 4905    ldr    r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
 +
08068236 1840    add    r0,r0,r1                                ;
 +
08068238 6800    ldr    r0,[r0]                                ;r0 = card_stats
 +
0806823A 4018    and    r0,r3                                  ;
 +
0806823C 0D00    lsr    r0,r0,14h                              ;r0 = card_type
 +
0806823E 2815    cmp    r0,15h                                  ;
 +
08068240 DB0B    blt    806825Ah                                ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 0806825A
 +
08068242 2817    cmp    r0,17h                                  ;
 +
08068244 DD04    ble    8068250h                                ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 08068250
 +
08068246 2818    cmp    r0,18h                                  ;
 +
08068248 D004    beq    8068254h                                ;if (card_type == DIVINE_BEAST), branch to 08068254
 +
0806824A E006    b      806825Ah                                ;else branch to 0806825A
 +
0806824C 2B84    cmp    r3,84h                                  ;
 +
0806824E 0883    lsr    r3,r0,2h                                ;
 +
08068250 2000    mov    r0,0h                                  ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), r0 = 0
 +
08068252 E00D    b      8068270h                                ;branch to 08068270
 +
08068254 20FA    mov    r0,0FAh                                ;
 +
08068256 0100    lsl    r0,r0,4h                                ;card_ATK = 4000
 +
08068258 E00A    b      8068270h                                ;branch to 08068270
 +
0806825A 1C30    mov    r0,r6                                  ;
 +
0806825C 4038    and    r0,r7                                  ;
 +
0806825E 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
08068260 4A0B    ldr    r2,=8832B84h                            ;r1 = pointer_to_card_stats_array
 +
08068262 1880    add    r0,r0,r2                                ;
 +
08068264 6801    ldr    r1,[r0]                                ;r0 = card_stats
 +
08068266 0389    lsl    r1,r1,0Eh                              ;
 +
08068268 0DC9    lsr    r1,r1,17h                              ;
 +
0806826A 0088    lsl    r0,r1,2h                                ;
 +
0806826C 1840    add    r0,r0,r1                                ;
 +
0806826E 0040    lsl    r0,r0,1h                                ;r0 = DWORD(((r1 << 14 >> 23 << 2) + (r1 << 14 >> 23)) << 1) [card_ATK]
 +
08068270 6668    str    r0,[r5,64h]                            ;store card_ATK into [r5 + 0x64]
 +
08068272 1C30    mov    r0,r6                                  ;
 +
08068274 4038    and    r0,r7                                  ;
 +
08068276 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
08068278 4C05    ldr    r4,=8832B84h                            ;r4 = pointer_to_card_stats_array
 +
0806827A 1900    add    r0,r0,r4                                ;
 +
0806827C 6800    ldr    r0,[r0]                                ;r0 = card_stats
 +
0806827E 4018    and    r0,r3                                  ;
 +
08068280 0D00    lsr    r0,r0,14h                              ;
 +
08068282 2815    cmp    r0,15h                                  ;
 +
08068284 DB0B    blt    806829Eh                                ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 0806829E
 +
08068286 2817    cmp    r0,17h                                  ;
 +
08068288 DD04    ble    8068294h                                ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 08068294
 +
0806828A 2818    cmp    r0,18h                                  ;
 +
0806828C D004    beq    8068298h                                ;if (card_type == DIVINE_BEAST), branch to 08068298
 +
0806828E E006    b      806829Eh                                ;else branch to 0806829E
 +
08068290 2B84    cmp    r3,84h                                  ;
 +
08068292 0883    lsr    r3,r0,2h                                ;
 +
08068294 2100    mov    r1,0h                                  ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), card_DEF = 0
 +
08068296 E00E    b      80682B6h                                ;branch to 080682B6
 +
08068298 21FA    mov    r1,0FAh                                ;...if (card_type == DIVINE_BEAST)
 +
0806829A 0109    lsl    r1,r1,4h                                ;card_DEF = 4000
 +
0806829C E00B    b      80682B6h                                ;branch to 080682B6
 +
0806829E 1C30    mov    r0,r6                                  ;...if (card_type < 0x15) [is a non-Divine-Beast Monster card]
 +
080682A0 4038    and    r0,r7                                  ;
 +
080682A2 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
080682A4 490D    ldr    r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
 +
080682A6 1840    add    r0,r0,r1                                ;
 +
080682A8 6801    ldr    r1,[r0]                                ;r1 = card_stats
 +
080682AA 4A0D    ldr    r2,=1FFh                                ;
 +
080682AC 1C10    mov    r0,r2                                  ;
 +
080682AE 4001    and    r1,r0                                  ;
 +
080682B0 0088    lsl    r0,r1,2h                                ;
 +
080682B2 1840    add    r0,r0,r1                                ;
 +
080682B4 0041    lsl    r1,r0,1h                                ;r1 = (card_stats & 511 × 10) [card_DEF]
 +
080682B6 6EA8    ldr    r0,[r5,68h]                            ;
 +
080682B8 4288    cmp    r0,r1                                  ;
 +
080682BA DA2E    bge    806831Ah                                ;if ([r5 + 0x68] > card_DEF), branch to 0806831A
 +
080682BC 1C30    mov    r0,r6                                  ;
 +
080682BE 4038    and    r0,r7                                  ;
 +
080682C0 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
080682C2 4C06    ldr    r4,=8832B84h                            ;r4 = pointer_to_card_stats_array
 +
080682C4 1900    add    r0,r0,r4                                ;
 +
080682C6 6800    ldr    r0,[r0]                                ;r0 = card_stats
 +
080682C8 4018    and    r0,r3                                  ;
 +
080682CA 0D00    lsr    r0,r0,14h                              ;
 +
080682CC 2815    cmp    r0,15h                                  ;
 +
080682CE DB0E    blt    80682EEh                                ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 080682EE
 +
080682D0 2817    cmp    r0,17h                                  ;
 +
080682D2 DD07    ble    80682E4h                                ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 080682E4
 +
080682D4 2818    cmp    r0,18h                                  ;
 +
080682D6 D007    beq    80682E8h                                ;if (card_type == DIVINE_BEAST), branch to 080682E8
 +
080682D8 E009    b      80682EEh                                ;else branch to 080682EE
 +
080682DA 0000    lsl    r0,r0,0h                                ;-
 +
080682DC 2B84    cmp    r3,84h                                  ;-
 +
080682DE 0883    lsr    r3,r0,2h                                ;-
 +
080682E0 01FF    lsl    r7,r7,7h                                ;-
 +
080682E2 0000    lsl    r0,r0,0h                                ;-
 +
080682E4 2000    mov    r0,0h                                  ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), card_DEF = 0
 +
080682E6 E00E    b      8068306h                                ;branch to 08068306
 +
080682E8 20FA    mov    r0,0FAh                                ;...if (card_type == DIVINE_BEAST)
 +
080682EA 0100    lsl    r0,r0,4h                                ;card_DEF = 4000
 +
080682EC E00B    b      8068306h                                ;branch to 08068306
 +
080682EE 1C30    mov    r0,r6                                  ;...if (card_type < 0x15) [is a non-Divine-Beast Monster card]
 +
080682F0 4038    and    r0,r7                                  ;
 +
080682F2 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
080682F4 4905    ldr    r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
 +
080682F6 1840    add    r0,r0,r1                                ;
 +
080682F8 6801    ldr    r1,[r0]                                ;r1 = card_stats
 +
080682FA 4A05    ldr    r2,=1FFh                                ;
 +
080682FC 1C10    mov    r0,r2                                  ;
 +
080682FE 4001    and    r1,r0                                  ;
 +
08068300 0088    lsl    r0,r1,2h                                ;
 +
08068302 1840    add    r0,r0,r1                                ;
 +
08068304 0040    lsl    r0,r0,1h                                ;r1 = (card_stats & 511 × 10) [card_DEF]
 +
08068306 66A8    str    r0,[r5,68h]                            ;store card_DEF into [r5 + 0x68]
 +
08068308 E007    b      806831Ah                                ;branch to 0806831A
 +
0806830A 0000    lsl    r0,r0,0h                                ;-
 +
0806830C 2B84    cmp    r3,84h                                  ;-
 +
0806830E 0883    lsr    r3,r0,2h                                ;-
 +
08068310 01FF    lsl    r7,r7,7h                                ;-
 +
08068312 0000    lsl    r0,r0,0h                                ;-
 +
08068314 6DA8    ldr    r0,[r5,58h]                            ;
 +
08068316 3001    add    r0,1h                                  ;
 +
08068318 65A8    str    r0,[r5,58h]                            ;increment [r5 + 0x58]
 +
0806831A 1C30    mov    r0,r6                                  ;
 +
0806831C 4038    and    r0,r7                                  ;
 +
0806831E 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
08068320 4C05    ldr    r4,=8832B84h                            ;r4 = pointer_to_card_stats_array
 +
08068322 1900    add    r0,r0,r4                                ;
 +
08068324 6800    ldr    r0,[r0]                                ;r0 = card_stats
 +
08068326 4018    and    r0,r3                                  ;
 +
08068328 0D00    lsr    r0,r0,14h                              ;
 +
0806832A 2815    cmp    r0,15h                                  ;
 +
0806832C DB0B    blt    8068346h                                ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 08068346
 +
0806832E 2817    cmp    r0,17h                                  ;
 +
08068330 DD04    ble    806833Ch                                ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 0806833C
 +
08068332 2818    cmp    r0,18h                                  ;
 +
08068334 D004    beq    8068340h                                ;if (card_type == DIVINE_BEAST), branch to 08068340
 +
08068336 E006    b      8068346h                                ;else branch to 08068346
 +
08068338 2B84    cmp    r3,84h                                  ;
 +
0806833A 0883    lsr    r3,r0,2h                                ;
 +
0806833C 2100    mov    r1,0h                                  ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), card_DEF = 0
 +
0806833E E00D    b      806835Ch                                ;branch to 0806835C
 +
08068340 21FA    mov    r1,0FAh                                ;...if (card_type == DIVINE_BEAST)
 +
08068342 0109    lsl    r1,r1,4h                                ;card_DEF = 4000
 +
08068344 E00A    b      806835Ch                                ;branch to 0806835C
 +
08068346 1C30    mov    r0,r6                                  ;...if (card_type < 0x15) [is a non-Divine-Beast Monster card]
 +
08068348 4038    and    r0,r7                                  ;
 +
0806834A 0080    lsl    r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
 +
0806834C 490C    ldr    r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
 +
0806834E 1840    add    r0,r0,r1                                ;
 +
08068350 6801    ldr    r1,[r0]                                ;r1 = card_stats
 +
08068352 0389    lsl    r1,r1,0Eh                              ;
 +
08068354 0DC9    lsr    r1,r1,17h                              ;
 +
08068356 0088    lsl    r0,r1,2h                                ;
 +
08068358 1840    add    r0,r0,r1                                ;
 +
0806835A 0041    lsl    r1,r0,1h                                ;
 +
0806835C 6EE8    ldr    r0,[r5,6Ch]                            ;
 +
0806835E 4288    cmp    r0,r1                                  ;
 +
08068360 DA21    bge    80683A6h                                ;
 +
08068362 1C30    mov    r0,r6                                  ;
 +
08068364 4038    and    r0,r7                                  ;
 +
08068366 0080    lsl    r0,r0,2h                                ;
 +
08068368 4A05    ldr    r2,=8832B84h                            ;r2 = pointer_to_card_stats_array
 +
0806836A 1880    add    r0,r0,r2                                ;
 +
0806836C 6800    ldr    r0,[r0]                                ;
 +
0806836E 4018    and    r0,r3                                  ;
 +
08068370 0D00    lsr    r0,r0,14h                              ;
 +
08068372 2815    cmp    r0,15h                                  ;
 +
08068374 DB0B    blt    806838Eh                                ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 0806838E
 +
08068376 2817    cmp    r0,17h                                  ;
 +
08068378 DD04    ble    8068384h                                ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 08068384
 +
0806837A 2818    cmp    r0,18h                                  ;
 +
0806837C D004    beq    8068388h                                ;if (card_type == DIVINE_BEAST), branch to 08068388
 +
0806837E E006    b      806838Eh                                ;else branch to 0806838E
 +
08068380 2B84    cmp    r3,84h                                  ;
 +
08068382 0883    lsr    r3,r0,2h                                ;
 +
08068384 2000    mov    r0,0h                                  ;
 +
08068386 E00D    b      80683A4h                                ;
 +
08068388 20FA    mov    r0,0FAh                                ;
 +
0806838A 0100    lsl    r0,r0,4h                                ;
 +
0806838C E00A    b      80683A4h                                ;
 +
0806838E 1C30    mov    r0,r6                                  ;
 +
08068390 4038    and    r0,r7                                  ;
 +
08068392 0080    lsl    r0,r0,2h                                ;
 +
08068394 4C0B    ldr    r4,=8832B84h                            ;r4 = pointer_to_card_stats_array
 +
08068396 1900    add    r0,r0,r4                                ;
 +
08068398 6801    ldr    r1,[r0]                                ;
 +
0806839A 0389    lsl    r1,r1,0Eh                              ;
 +
0806839C 0DC9    lsr    r1,r1,17h                              ;
 +
0806839E 0088    lsl    r0,r1,2h                                ;
 +
080683A0 1840    add    r0,r0,r1                                ;
 +
080683A2 0040    lsl    r0,r0,1h                                ;
 +
080683A4 66E8    str    r0,[r5,6Ch]                            ;
 +
080683A6 1C30    mov    r0,r6                                  ;
 +
080683A8 4038    and    r0,r7                                  ;
 +
080683AA 0080    lsl    r0,r0,2h                                ;
 +
080683AC 4905    ldr    r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
 +
080683AE 1840    add    r0,r0,r1                                ;
 +
080683B0 6800    ldr    r0,[r0]                                ;
 +
080683B2 4018    and    r0,r3                                  ;
 +
080683B4 0D00    lsr    r0,r0,14h                              ;
 +
080683B6 2815    cmp    r0,15h                                  ;
 +
080683B8 DB0B    blt    80683D2h                                ;
 +
080683BA 2817    cmp    r0,17h                                  ;
 +
080683BC DD04    ble    80683C8h                                ;
 +
080683BE 2818    cmp    r0,18h                                  ;
 +
080683C0 D004    beq    80683CCh                                ;
 +
080683C2 E006    b      80683D2h                                ;
 +
080683C4 2B84    cmp    r3,84h                                  ;
 +
080683C6 0883    lsr    r3,r0,2h                                ;
 +
080683C8 2100    mov    r1,0h                                  ;
 +
080683CA E00E    b      80683EAh                                ;
 +
080683CC 21FA    mov    r1,0FAh                                ;
 +
080683CE 0109    lsl    r1,r1,4h                                ;
 +
080683D0 E00B    b      80683EAh                                ;
 +
080683D2 1C30    mov    r0,r6                                  ;
 +
080683D4 4038    and    r0,r7                                  ;
 +
080683D6 0080    lsl    r0,r0,2h                                ;
 +
080683D8 4A0D    ldr    r2,=8832B84h                            ;r2 = pointer_to_card_stats_array
 +
080683DA 1880    add    r0,r0,r2                                ;
 +
080683DC 6801    ldr    r1,[r0]                                ;
 +
080683DE 4C0D    ldr    r4,=1FFh                                ;
 +
080683E0 1C20    mov    r0,r4                                  ;
 +
080683E2 4001    and    r1,r0                                  ;
 +
080683E4 0088    lsl    r0,r1,2h                                ;
 +
080683E6 1840    add    r0,r0,r1                                ;
 +
080683E8 0041    lsl    r1,r0,1h                                ;r1 = card_DEF
 +
080683EA 6F28    ldr    r0,[r5,70h]                            ;
 +
080683EC 4288    cmp    r0,r1                                  ;
 +
080683EE DA25    bge    806843Ch                                ;if ([r5,70h] > card_DEF), branch to 006843C
 +
080683F0 1C30    mov    r0,r6                                  ;
 +
080683F2 4038    and    r0,r7                                  ;
 +
080683F4 0080    lsl    r0,r0,2h                                ;
 +
080683F6 4906    ldr    r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
 +
080683F8 1840    add    r0,r0,r1                                ;
 +
080683FA 6800    ldr    r0,[r0]                                ;
 +
080683FC 4018    and    r0,r3                                  ;
 +
080683FE 0D00    lsr    r0,r0,14h                              ;
 +
08068400 2815    cmp    r0,15h                                  ;
 +
08068402 DB0E    blt    8068422h                                ;
 +
08068404 2817    cmp    r0,17h                                  ;
 +
08068406 DD07    ble    8068418h                                ;
 +
08068408 2818    cmp    r0,18h                                  ;
 +
0806840A D007    beq    806841Ch                                ;
 +
0806840C E009    b      8068422h                                ;
 +
0806840E 0000    lsl    r0,r0,0h                                ;-
 +
08068410 2B84    cmp    r3,84h                                  ;-
 +
08068412 0883    lsr    r3,r0,2h                                ;-
 +
08068414 01FF    lsl    r7,r7,7h                                ;-
 +
08068416 0000    lsl    r0,r0,0h                                ;-
 +
08068418 2000    mov    r0,0h                                  ;
 +
0806841A E00E    b      806843Ah                                ;
 +
0806841C 20FA    mov    r0,0FAh                                ;
 +
0806841E 0100    lsl    r0,r0,4h                                ;
 +
08068420 E00B    b      806843Ah                                ;
 +
08068422 1C30    mov    r0,r6                                  ;
 +
08068424 4038    and    r0,r7                                  ;
 +
08068426 0080    lsl    r0,r0,2h                                ;
 +
08068428 4A21    ldr    r2,=8832B84h                            ;r2 = pointer_to_card_stats_array
 +
0806842A 1880    add    r0,r0,r2                                ;
 +
0806842C 6801    ldr    r1,[r0]                                ;
 +
0806842E 4C21    ldr    r4,=1FFh                                ;
 +
08068430 1C20    mov    r0,r4                                  ;
 +
08068432 4001    and    r1,r0                                  ;
 +
08068434 0088    lsl    r0,r1,2h                                ;
 +
08068436 1840    add    r0,r0,r1                                ;
 +
08068438 0040    lsl    r0,r0,1h                                ;r0 = card_DEF
 +
0806843A 6728    str    r0,[r5,70h]                            ;store card_DEF into [r5 + 0x70]
 +
0806843C 1C30    mov    r0,r6                                  ;
 +
0806843E 4038    and    r0,r7                                  ;
 +
08068440 0040    lsl    r0,r0,1h                                ;
 +
08068442 491D    ldr    r1,=8833C80h                            ;r1 = pointer_to_internal_cards_ids_array
 +
08068444 1844    add    r4,r0,r1                                ;
 +
08068446 8820    ldrh    r0,[r4]                                ;r0 = internal_card_id
 +
08068448 2101    mov    r1,1h                                  ;r1 = 1
 +
0806844A 9300    str    r3,[sp]                                ;
 +
0806844C F7A8FB38 bl      8010AC0h                                ;call 08010AC0
 +
08068450 9B00    ldr    r3,[sp]                                ;
 +
08068452 2800    cmp    r0,0h                                  ;
 +
08068454 D106    bne    8068464h                                ;
 +
08068456 8820    ldrh    r0,[r4]                                ;
 +
08068458 2100    mov    r1,0h                                  ;
 +
0806845A F7A8FB31 bl      8010AC0h                                ;call 08010AC0
 +
0806845E 9B00    ldr    r3,[sp]                                ;
 +
08068460 2800    cmp    r0,0h                                  ;
 +
08068462 D002    beq    806846Ah                                ;
 +
08068464 6D28    ldr    r0,[r5,50h]                            ;
 +
08068466 3001    add    r0,1h                                  ;
 +
08068468 6528    str    r0,[r5,50h]                            ;increment [r5 + 0x50]
 +
0806846A 403E    and    r6,r7                                  ;
 +
0806846C 0070    lsl    r0,r6,1h                                ;
 +
0806846E 4A12    ldr    r2,=8833C80h                            ;r2 = pointer_to_internal_cards_ids_array
 +
08068470 1880    add    r0,r0,r2                                ;
 +
08068472 8801    ldrh    r1,[r0]                                ;r1 = internal_card_id
 +
08068474 4811    ldr    r0,=229h                                ;r0 = 553 [Lava Battleguard]
 +
08068476 4281    cmp    r1,r0                                  ;
 +
08068478 D100    bne    806847Ch                                ;if (internal_card_id ≠ Lava Battleguard), branch to 0806847C
 +
0806847A E0E0    b      806863Eh                                ;else branch to 0806863E
 +
0806847C 4281    cmp    r1,r0                                  ;
 +
0806847E DC6F    bgt    8068560h                                ;if (internal_card_id > 553), branch to 08068560
 +
08068480 389C    sub    r0,9Ch                                  ;r0 = 397 [Ooguchi]
 +
08068482 4281    cmp    r1,r0                                  ;
 +
08068484 DC38    bgt    80684F8h                                ;
 +
08068486 3801    sub    r0,1h                                  ;r0 = 396 [Leghul]
 +
08068488 4281    cmp    r1,r0                                  ;
 +
0806848A DB00    blt    806848Eh                                ;
 +
0806848C E0E2    b      8068654h                                ;
 +
0806848E 2953    cmp    r1,53h                                  ;83 [Reaper of the Cards]
 +
08068490 D100    bne    8068494h                                ;
 +
08068492 E0E7    b      8068664h                                ;
 +
08068494 2953    cmp    r1,53h                                  ;
 +
08068496 DC17    bgt    80684C8h                                ;
 +
08068498 2914    cmp    r1,14h                                  ;20 [Exodia the Forbidden One]
 +
0806849A DC11    bgt    80684C0h                                ;
 +
0806849C 2910    cmp    r1,10h                                  ;16 [Right Leg of the Forbidden One]
 +
0806849E DB00    blt    80684A2h                                ;
 +
080684A0 E0F0    b      8068684h                                ;
 +
080684A2 290B    cmp    r1,0Bh                                  ;11 [Swamp Battleguard]
 +
080684A4 D100    bne    80684A8h                                ;
 +
080684A6 E0CA    b      806863Eh                                ;
 +
080684A8 290F    cmp    r1,0Fh                                  ;15 [Time Wizard]
 +
080684AA D100    bne    80684AEh                                ;
 +
080684AC E0D6    b      806865Ch                                ;
 +
080684AE E0EC    b      806868Ah                                ;branch to 0806868A
 +
080684B0 2B84    cmp    r3,84h                                  ;-
 +
080684B2 0883    lsr    r3,r0,2h                                ;-
 +
080684B4 01FF    lsl    r7,r7,7h                                ;-
 +
080684B6 0000    lsl    r0,r0,0h                                ;-
 +
080684B8 3C80    sub    r4,80h                                  ;
 +
080684BA 0883    lsr    r3,r0,2h                                ;
 +
080684BC 0229    lsl    r1,r5,8h                                ;
 +
080684BE 0000    lsl    r0,r0,0h                                ;
 +
080684C0 292F    cmp    r1,2Fh                                  ;47 [Sangan]
 +
080684C2 D100    bne    80684C6h                                ;
 +
080684C4 E0DA    b      806867Ch                                ;
 +
080684C6 E0E0    b      806868Ah                                ;branch to 0806868A
 +
080684C8 4806    ldr    r0,=16Fh                                ;r0 = 367 [Shadow Ghoul]
 +
080684CA 4281    cmp    r1,r0                                  ;
 +
080684CC D100    bne    80684D0h                                ;
 +
080684CE E0B6    b      806863Eh                                ;
 +
080684D0 4281    cmp    r1,r0                                  ;
 +
080684D2 DC09    bgt    80684E8h                                ;
 +
080684D4 29DF    cmp    r1,0DFh                                ;223 [Trap Master]
 +
080684D6 D100    bne    80684DAh                                ;
 +
080684D8 E0C4    b      8068664h                                ;
 +
080684DA 29EA    cmp    r1,0EAh                                ;234 [Wodan the Resident of the Forest]
 +
080684DC D100    bne    80684E0h                                ;
 +
080684DE E0AE    b      806863Eh                                ;
 +
080684E0 E0D3    b      806868Ah                                ;branch to 0806868A
 +
080684E2 0000    lsl    r0,r0,0h                                ;
 +
080684E4 016F    lsl    r7,r5,5h                                ;
 +
080684E6 0000    lsl    r0,r0,0h                                ;
 +
080684E8 4802    ldr    r0,=181h                                ;r0 = 385 [Harpie's Pet Dragon]
 +
080684EA 4281    cmp    r1,r0                                  ;
 +
080684EC D100    bne    80684F0h                                ;
 +
080684EE E0A6    b      806863Eh                                ;
 +
080684F0 3001    add    r0,1h                                  ;
 +
080684F2 E07C    b      80685EEh                                ;
 +
080684F4 0181    lsl    r1,r0,6h                                ;
 +
080684F6 0000    lsl    r0,r0,0h                                ;
 +
080684F8 20FA    mov    r0,0FAh                                ;
 +
080684FA 0040    lsl    r0,r0,1h                                ;r0 = 500 [Man-Eater Bug]
 +
080684FC 4281    cmp    r1,r0                                  ;
 +
080684FE D100    bne    8068502h                                ;
 +
08068500 E0AC    b      806865Ch                                ;
 +
08068502 4281    cmp    r1,r0                                  ;
 +
08068504 DC15    bgt    8068532h                                ;
 +
08068506 380D    sub    r0,0Dh                                  ;r0 = 487 [Rainbow Flower]
 +
08068508 4281    cmp    r1,r0                                  ;
 +
0806850A D100    bne    806850Eh                                ;
 +
0806850C E0A2    b      8068654h                                ;
 +
0806850E 4281    cmp    r1,r0                                  ;
 +
08068510 DC05    bgt    806851Eh                                ;
 +
08068512 3851    sub    r0,51h                                  ;r0 = 406 [Machine King]
 +
08068514 4281    cmp    r1,r0                                  ;
 +
08068516 D100    bne    806851Ah                                ;
 +
08068518 E091    b      806863Eh                                ;
 +
0806851A 300F    add    r0,0Fh                                  ;r0 = 421 [Jinzo #7]
 +
0806851C E067    b      80685EEh                                ;
 +
0806851E 20F6    mov    r0,0F6h                                ;
 +
08068520 0040    lsl    r0,r0,1h                                ;r0 = 492 [Maha Vailo]
 +
08068522 4281    cmp    r1,r0                                  ;
 +
08068524 DD00    ble    8068528h                                ;
 +
08068526 E0B0    b      806868Ah                                ;branch to 0806868A
 +
08068528 3801    sub    r0,1h                                  ;
 +
0806852A 4281    cmp    r1,r0                                  ;
 +
0806852C DA00    bge    8068530h                                ;
 +
0806852E E0AC    b      806868Ah                                ;branch to 0806868A
 +
08068530 E085    b      806863Eh                                ;
 +
08068532 4806    ldr    r0,=20Eh                                ;r0 = 526 [Milus Radiant]
 +
08068534 4281    cmp    r1,r0                                  ;
 +
08068536 D100    bne    806853Ah                                ;
 +
08068538 E081    b      806863Eh                                ;
 +
0806853A 4281    cmp    r1,r0                                  ;
 +
0806853C DC08    bgt    8068550h                                ;
 +
0806853E 380B    sub    r0,0Bh                                  ;r0 = 515 [Muka Muka]
 +
08068540 4281    cmp    r1,r0                                  ;
 +
08068542 D100    bne    8068546h                                ;
 +
08068544 E07B    b      806863Eh                                ;
 +
08068546 3008    add    r0,8h                                  ;r0 = 523 [Star Boy]
 +
08068548 E03D    b      80685C6h                                ;
 +
0806854A 0000    lsl    r0,r0,0h                                ;-
 +
0806854C 020E    lsl    r6,r1,8h                                ;-
 +
0806854E 0000    lsl    r0,r0,0h                                ;-
 +
08068550 4802    ldr    r0,=21Bh                                ;r0 = 539 [Skelengel]
 +
08068552 4281    cmp    r1,r0                                  ;
 +
08068554 D100    bne    8068558h                                ;
 +
08068556 E08D    b      8068674h                                ;
 +
08068558 3001    add    r0,1h                                  ;r0 = 540 [Hane-Hane]
 +
0806855A E02E    b      80685BAh                                ;
 +
0806855C 021B    lsl    r3,r3,8h                                ;
 +
0806855E 0000    lsl    r0,r0,0h                                ;
 +
08068560 480A    ldr    r0,=2FEh                                ;r0 = 766 [Blue-Eyes Toon Dragon]
 +
08068562 4281    cmp    r1,r0                                  ;
 +
08068564 D100    bne    8068568h                                ;
 +
08068566 E075    b      8068654h                                ;
 +
08068568 4281    cmp    r1,r0                                  ;
 +
0806856A DC31    bgt    80685D0h                                ;
 +
0806856C 388B    sub    r0,8Bh                                  ;
 +
0806856E 4281    cmp    r1,r0                                  ;
 +
08068570 D065    beq    806863Eh                                ;
 +
08068572 4281    cmp    r1,r0                                  ;
 +
08068574 DC12    bgt    806859Ch                                ;
 +
08068576 381A    sub    r0,1Ah                                  ;
 +
08068578 4281    cmp    r1,r0                                  ;
 +
0806857A D06F    beq    806865Ch                                ;
 +
0806857C 4281    cmp    r1,r0                                  ;
 +
0806857E DC07    bgt    8068590h                                ;
 +
08068580 381C    sub    r0,1Ch                                  ;
 +
08068582 4281    cmp    r1,r0                                  ;
 +
08068584 D100    bne    8068588h                                ;
 +
08068586 E079    b      806867Ch                                ;
 +
08068588 3018    add    r0,18h                                  ;
 +
0806858A E01C    b      80685C6h                                ;
 +
0806858C 02FE    lsl    r6,r7,0Bh                              ;
 +
0806858E 0000    lsl    r0,r0,0h                                ;
 +
08068590 2098    mov    r0,98h                                  ;
 +
08068592 0080    lsl    r0,r0,2h                                ;
 +
08068594 4281    cmp    r1,r0                                  ;
 +
08068596 D052    beq    806863Eh                                ;
 +
08068598 3007    add    r0,7h                                  ;
 +
0806859A E014    b      80685C6h                                ;
 +
0806859C 20B6    mov    r0,0B6h                                ;
 +
0806859E 0080    lsl    r0,r0,2h                                ;
 +
080685A0 4281    cmp    r1,r0                                  ;
 +
080685A2 DC04    bgt    80685AEh                                ;
 +
080685A4 3802    sub    r0,2h                                  ;
 +
080685A6 4281    cmp    r1,r0                                  ;
 +
080685A8 DA54    bge    8068654h                                ;
 +
080685AA 385C    sub    r0,5Ch                                  ;
 +
080685AC E01F    b      80685EEh                                ;
 +
080685AE 4804    ldr    r0,=2F7h                                ;r0 = 759 [Dark Magician Girl]
 +
080685B0 4281    cmp    r1,r0                                  ;
 +
080685B2 D044    beq    806863Eh                                ;
 +
080685B4 4281    cmp    r1,r0                                  ;
 +
080685B6 DC05    bgt    80685C4h                                ;
 +
080685B8 3811    sub    r0,11h                                  ;
 +
080685BA 4281    cmp    r1,r0                                  ;
 +
080685BC D04E    beq    806865Ch                                ;
 +
080685BE E064    b      806868Ah                                ;branch to 0806868A
 +
080685C0 02F7    lsl    r7,r6,0Bh                              ;
 +
080685C2 0000    lsl    r0,r0,0h                                ;
 +
080685C4 4801    ldr    r0,=2F9h                                ;r0 = 761 [Insect Queen]
 +
080685C6 4281    cmp    r1,r0                                  ;
 +
080685C8 D039    beq    806863Eh                                ;
 +
080685CA E05E    b      806868Ah                                ;branch to 0806868A
 +
080685CC 02F9    lsl    r1,r7,0Bh                              ;
 +
080685CE 0000    lsl    r0,r0,0h                                ;
 +
080685D0 4808    ldr    r0,=45Ch                                ;r0 = 1116 [Spear Cretin]
 +
080685D2 4281    cmp    r1,r0                                  ;
 +
080685D4 D04A    beq    806866Ch                                ;
 +
080685D6 4281    cmp    r1,r0                                  ;
 +
080685D8 DC18    bgt    806860Ch                                ;
 +
080685DA 3808    sub    r0,8h                                  ;
 +
080685DC 4281    cmp    r1,r0                                  ;
 +
080685DE D04D    beq    806867Ch                                ;
 +
080685E0 4281    cmp    r1,r0                                  ;
 +
080685E2 DC09    bgt    80685F8h                                ;
 +
080685E4 20CA    mov    r0,0CAh                                ;
 +
080685E6 0080    lsl    r0,r0,2h                                ;
 +
080685E8 4281    cmp    r1,r0                                  ;
 +
080685EA D028    beq    806863Eh                                ;
 +
080685EC 3004    add    r0,4h                                  ;
 +
080685EE 4281    cmp    r1,r0                                  ;
 +
080685F0 D030    beq    8068654h                                ;
 +
080685F2 E04A    b      806868Ah                                ;branch to 0806868A
 +
080685F4 045C    lsl    r4,r3,11h                              ;
 +
080685F6 0000    lsl    r0,r0,0h                                ;
 +
080685F8 4803    ldr    r0,=456h                                ;r0 = 1110 [UFO Turtle]
 +
080685FA 4281    cmp    r1,r0                                  ;
 +
080685FC D03E    beq    806867Ch                                ;
 +
080685FE 3005    add    r0,5h                                  ;
 +
08068600 4281    cmp    r1,r0                                  ;
 +
08068602 D023    beq    806864Ch                                ;
 +
08068604 E041    b      806868Ah                                ;branch to 0806868A
 +
08068606 0000    lsl    r0,r0,0h                                ;
 +
08068608 0456    lsl    r6,r2,11h                              ;
 +
0806860A 0000    lsl    r0,r0,0h                                ;
 +
0806860C 208C    mov    r0,8Ch                                  ;
 +
0806860E 00C0    lsl    r0,r0,3h                                ;
 +
08068610 4281    cmp    r1,r0                                  ;
 +
08068612 DC04    bgt    806861Eh                                ;
 +
08068614 3801    sub    r0,1h                                  ;
 +
08068616 4281    cmp    r1,r0                                  ;
 +
08068618 DA30    bge    806867Ch                                ;
 +
0806861A 3802    sub    r0,2h                                  ;
 +
0806861C E005    b      806862Ah                                ;
 +
0806861E 4804    ldr    r0,=5ECh                                ;r0 = 1516 [Spirit of Flames]
 +
08068620 4281    cmp    r1,r0                                  ;
 +
08068622 D00C    beq    806863Eh                                ;
 +
08068624 4281    cmp    r1,r0                                  ;
 +
08068626 DC07    bgt    8068638h                                ;
 +
08068628 4802    ldr    r0,=463h                                ;r0 = 1123 [Mystic Tomato]
 +
0806862A 4281    cmp    r1,r0                                  ;
 +
0806862C D026    beq    806867Ch                                ;
 +
0806862E E02C    b      806868Ah                                ;branch to 0806868A
 +
08068630 05EC    lsl    r4,r5,17h                              ;
 +
08068632 0000    lsl    r0,r0,0h                                ;
 +
08068634 0463    lsl    r3,r4,11h                              ;
 +
08068636 0000    lsl    r0,r0,0h                                ;
 +
08068638 4803    ldr    r0,=5EEh                                ;r0 = 1518 [The Rock Spirit]
 +
0806863A 4281    cmp    r1,r0                                  ;
 +
0806863C D125    bne    806868Ah                                ;if (internal_card_id ≠ The Rock Spirit), branch to 0806868A
 +
0806863E 6B28    ldr    r0,[r5,30h]                            ;
 +
08068640 3001    add    r0,1h                                  ;
 +
08068642 6328    str    r0,[r5,30h]                            ;increment [r5 + 0x30]
 +
08068644 E021    b      806868Ah                                ;branch to 0806868A
 +
08068646 0000    lsl    r0,r0,0h                                ;-
 +
08068648 05EE    lsl    r6,r5,17h                              ;-
 +
0806864A 0000    lsl    r0,r0,0h                                ;-
 +
0806864C 6B68    ldr    r0,[r5,34h]                            ;
 +
0806864E 3001    add    r0,1h                                  ;
 +
08068650 6368    str    r0,[r5,34h]                            ;increment [r5 + 0x34]
 +
08068652 E01A    b      806868Ah                                ;branch to 0806868A
 +
08068654 6BA8    ldr    r0,[r5,38h]                            ;
 +
08068656 3001    add    r0,1h                                  ;
 +
08068658 63A8    str    r0,[r5,38h]                            ;increment [r5 + 0x38]
 +
0806865A E016    b      806868Ah                                ;branch to 0806868A
 +
0806865C 6BE8    ldr    r0,[r5,3Ch]                            ;
 +
0806865E 3001    add    r0,1h                                  ;
 +
08068660 63E8    str    r0,[r5,3Ch]                            ;increment [r5 + 0x3C]
 +
08068662 E012    b      806868Ah                                ;branch to 0806868A
 +
08068664 6C28    ldr    r0,[r5,40h]                            ;
 +
08068666 3001    add    r0,1h                                  ;
 +
08068668 6428    str    r0,[r5,40h]                            ;increment [r5 + 0x40]
 +
0806866A E00E    b      806868Ah                                ;branch to 0806868A
 +
0806866C 6C68    ldr    r0,[r5,44h]                            ;
 +
0806866E 3001    add    r0,1h                                  ;
 +
08068670 6468    str    r0,[r5,44h]                            ;increment [r5 + 0x44]
 +
08068672 E00A    b      806868Ah                                ;branch to 0806868A
 +
08068674 6CA8    ldr    r0,[r5,48h]                            ;
 +
08068676 3001    add    r0,1h                                  ;
 +
08068678 64A8    str    r0,[r5,48h]                            ;increment [r5 + 0x48]
 +
0806867A E006    b      806868Ah                                ;branch to 0806868A
 +
0806867C 6CE8    ldr    r0,[r5,4Ch]                            ;
 +
0806867E 3001    add    r0,1h                                  ;
 +
08068680 64E8    str    r0,[r5,4Ch]                            ;increment [r5 + 0x4C]
 +
08068682 E002    b      806868Ah                                ;branch to 0806868A
 +
08068684 6DE8    ldr    r0,[r5,5Ch]                            ;
 +
08068686 3001    add    r0,1h                                  ;
 +
08068688 65E8    str    r0,[r5,5Ch]                            ;increment [r5 + 0x5C]
 +
0806868A 2401    mov    r4,1h                                  ;
 +
0806868C 44A0    add    r8,r4                                  ;r8++ /*(the most inefficient increment in the world)*/
 +
0806868E 4913    ldr    r1,=2018FE4h                            ;
 +
08068690 2001    mov    r0,1h                                  ;
 +
08068692 464A    mov    r2,r9                                  ;
 +
08068694 4010    and    r0,r2                                  ;
 +
08068696 4A12    ldr    r2,=0D64h                              ;
 +
08068698 4350    mul    r0,r2                                  ;
 +
0806869A 1840    add    r0,r0,r1                                ;
 +
0806869C 78C0    ldrb    r0,[r0,3h]                              ;
 +
0806869E 4580    cmp    r8,r0                                  ;
 +
080686A0 DA01    bge    80686A6h                                ;
 +
080686A2 F7FFFABE bl      8067C22h                                ;
 +
080686A6 4A0D    ldr    r2,=2018FE4h                            ;
 +
080686A8 2001    mov    r0,1h                                  ;
 +
080686AA 464C    mov    r4,r9                                  ;
 +
080686AC 4020    and    r0,r4                                  ;
 +
080686AE 490C    ldr    r1,=0D64h                              ;
 +
080686B0 4348    mul    r0,r1                                  ;
 +
080686B2 1880    add    r0,r0,r2                                ;
 +
080686B4 7940    ldrb    r0,[r0,5h]                              ;
 +
080686B6 60E8    str    r0,[r5,0Ch]                            ;
 +
080686B8 6828    ldr    r0,[r5]                                ;
 +
080686BA 6869    ldr    r1,[r5,4h]                              ;
 +
080686BC 1840    add    r0,r0,r1                                ;
 +
080686BE 68A9    ldr    r1,[r5,8h]                              ;
 +
080686C0 1840    add    r0,r0,r1                                ;
 +
080686C2 6929    ldr    r1,[r5,10h]                            ;
 +
080686C4 1840    add    r0,r0,r1                                ;
 +
080686C6 6969    ldr    r1,[r5,14h]                            ;
 +
080686C8 1840    add    r0,r0,r1                                ;
 +
080686CA 61A8    str    r0,[r5,18h]                            ;
 +
080686CC B001    add    sp,4h                                  ;
 +
080686CE BC18    pop    r3,r4                                  ;
 +
080686D0 4698    mov    r8,r3                                  ;
 +
080686D2 46A1    mov    r9,r4                                  ;
 +
080686D4 BCF0    pop    r4-r7                                  ;
 +
080686D6 BC01    pop    r0                                      ;
 +
080686D8 4700    bx      r0                                      ;
 +
 
 +
===CPU decks main cards===
 +
====Strings====
 +
* 0x6A0DC
 +
7A 05 00 00 AB 01 00 00 E6 04 00 00 45 03 00 00
 +
4F 01 00 00 CE 04 00 00 92 05 00 00 AB 03 00 00
 +
BE 04 00 00
 +
 
 +
====Umbra & Lumis====
 +
* 0x6A1EC
 +
82 05 00 00 AB 01 00 00 E6 04 00 00 45 03 00 00
 +
83 05 00 00 4F 01 00 00 8C 05 00 00 BE 04 00 00
 +
87 05 00 00
 +
Grand Tiki Elder
 +
Magician of Faith
 +
Slate Warrior
 +
Vorse Raider
 +
The Masked Beast
 +
Dark Hole
 +
Mask of Brutality
 +
Magic Cylinder
 +
Mask of Weakness
 +
 
 +
====Odion====
 +
* 0x6A380
 +
AB 01 00 00 4E 02 00 00 52 04 00 00 E6 04 00 00
 +
45 03 00 00 4F 01 00 00 AD 02 00 00 FB 03 00 00
 +
FD 03 00 00 FE 03 00 00 02 04 00 00 04 04 00 00
 +
26 04 00 00 BE 04 00 00
 +
 +
Magician of Faith
 +
Morphing Jar
 +
Cyber Jar
 +
Slate Warrior
 +
Vorse Raider
 +
Dark Hole
 +
Widespread Ruin
 +
White Hole
 +
Call of the Grave
 +
Anti Raigeki
 +
Call of the Dark
 +
Solemn Judgment
 +
Gryphon Wing
 +
Magic Cylinder
 +
 
 +
====Marik Ishtar====
 +
* 0x6A880
 +
45 03 00 00 AB 01 00 00 52 04 00 00 8B 04 00 00
 +
FF 03 00 00 E6 04 00 00 4F 01 00 00 03 04 00 00
 +
0F 04 00 00 2C 04 00 00 C5 04 00 00 AB 03 00 00
 +
BE 04 00 00
 +
 +
Vorse Raider
 +
Magician of Faith
 +
Cyber Jar
 +
Morphing Jar #2
 +
Tribute to the Doomed
 +
Slate Warrior
 +
Dark Hole
 +
Change of Heart
 +
Restructer Revolution
 +
Snatch Steal
 +
Card Destruction
 +
Bell of Destruction
 +
Magic Cylinder
 +
 
 +
==Trunk management==
 +
===Count quantity of cards in Player's Trunk, Deck and Sideboard===
 +
0x8AA94 - Loops through Player's inventory to count cards in Player's Trunk, Deck, and Sideboard
 +
0808AA94 21D4    mov    r1,0D4h                                ;
 +
0808AA96 0000    lsl    r0,r0,0h                                ;
 +
0808AA98 FBC1    bl      lr+782h                                ;
 +
0808AA9A 0000    lsl    r0,r0,0h                                ;
 +
0808AA9C 10ED    asr    r5,r5,3h                                ;
 +
0808AA9E 0000    lsl    r0,r0,0h                                ;
 +
0808AAA0 21DE    mov    r1,0DEh                                ;
 +
0808AAA2 0000    lsl    r0,r0,0h                                ;
 +
0808AAA4 2000    mov    r0,0h                                  ;
 +
0808AAA6 BC70    pop    r4-r6                                  ;
 +
0808AAA8 BC02    pop    r1                                      ;
 +
0808AAAA 4708    bx      r1                                      ;
 +
0808AAAC B570    push    r4-r6,r14                              ;
 +
0808AAAE 2300    mov    r3,0h                                  ;
 +
0808AAB0 490C    ldr    r1,=2011C20h                            ;r1 = pointer to Player's Trunk
 +
0808AAB2 2200    mov    r2,0h                                  ;r2 = 0
 +
0808AAB4 1C0D    mov    r5,r1                                  ;r5 = pointer to Player's Trunk
 +
0808AAB6 4C0C    ldr    r4,=10EDh                              ;r4 = 4333
 +
0808AAB8 880E    ldrh    r6,[r1]                                ;start of the loop, load card_quantity for current card pointed by r1 in r6
 +
0808AABA 18F0    add    r0,r6,r3                                ;r0 = card_quantity + r3
 +
0808AABC 0400    lsl    r0,r0,10h                              ;
 +
0808AABE 0C03    lsr    r3,r0,10h                              ;r3 = current_card_quantity & 0xFFFF
 +
0808AAC0 3102    add    r1,2h                                  ;pointer_to_card_trunk += 2
 +
0808AAC2 1C50    add    r0,r2,1                                ;r0 = current_card_id
 +
0808AAC4 0400    lsl    r0,r0,10h                              ;r0 << 16
 +
0808AAC6 0C02    lsr    r2,r0,10h                              ;r2 = r0 & 0xFFFF
 +
0808AAC8 42A2    cmp    r2,r4                                  ;
 +
0808AACA D9F5    bls    808AAB8h                                ;if (r2 ≤ 4333 [it's the 1082 valid cards + card_id #0 multiplied by 4 + 1]), loop to 0x808AAB8
 +
0808AACC 43D8    mvn    r0,r3                                  ;r0 = !r3
 +
0808AACE 3001    add    r0,1h                                  ;r0++
 +
0808AAD0 4A06    ldr    r2,=21DEh                              ;r2 = 8670 [it's the 1082 valid cards + card_id #0 multiplied by 8 + an offset of 6 for idk which reason yet]
 +
0808AAD2 18A9    add    r1,r5,r2                                ;r1 = pointer to Player's Trunk + 8670
 +
0808AAD4 8008    strh    r0,[r1]                                ;r0 = [r1]
 +
0808AAD6 4E06    ldr    r6,=21D4h                              ;
 +
0808AAD8 19A9    add    r1,r5,r6                                ;
 +
0808AADA 4806    ldr    r0,=0FBC1h                              ;
 +
0808AADC 8008    strh    r0,[r1]                                ;
 +
0808AADE BC70    pop    r4-r6                                  ;
 +
0808AAE0 BC01    pop    r0                                      ;
 +
0808AAE2 4700    bx      r0                                      ;
 +
 
 +
===Add card to Trunk===
 +
0808AF0C 3C80    sub    r4,80h                                  ;
 +
0808AF0E 0883    lsr    r3,r0,2h                                ;
 +
0808AF10 F893    bl      lr+126h                                ;
 +
0808AF12 FFFF    bl      lr+0FFEh                                ;
 +
0808AF14 6070    str    r0,[r6,4h]                              ;
 +
0808AF16 0817    lsr    r7,r2,20h                              ;
 +
0808AF18 B530    push    r4,r5,r14                              ;
 +
0808AF1A 1C04    mov    r4,r0                                  ;
 +
0808AF1C 0424    lsl    r4,r4,10h                              ;
 +
0808AF1E 0C24    lsr    r4,r4,10h                              ;
 +
0808AF20 1C20    mov    r0,r4                                  ;
 +
0808AF22 F7FFFFDF bl      808AEE4h                                ;
 +
0808AF26 4B0C    ldr    r3,=2011C20h                            ;
 +
0808AF28 00A4    lsl    r4,r4,2h                                ;
 +
0808AF2A 18E4    add    r4,r4,r3                                ;r4 = 0x2011C20 + (card_id << 2)
 +
0808AF2C 8922    ldrh    r2,[r4,8h]                              ;r2 = old card quantity
 +
0808AF2E 0591    lsl    r1,r2,16h                              ;
 +
0808AF30 480A    ldr    r0,=0FF800000h                          ;
 +
0808AF32 4281    cmp    r1,r0                                  ;
 +
0808AF34 D80D    bhi    808AF52h                                ;
 +
0808AF36 0D89    lsr    r1,r1,16h                              ;
 +
0808AF38 3101    add    r1,1h                                  ;
 +
0808AF3A 4D09    ldr    r5,=3FFh                                ;
 +
0808AF3C 1C28    mov    r0,r5                                  ;
 +
0808AF3E 4001    and    r1,r0                                  ;
 +
0808AF40 4808    ldr    r0,=0FFFFFC00h                          ;1024 is the maximum quantity for a given card
 +
0808AF42 4010    and    r0,r2                                  ;r2 is old card quantity
 +
0808AF44 4308    orr    r0,r1                                  ;r1 is new card quantity
 +
0808AF46 8120    strh    r0,[r4,8h]                              ;Store new card quantity in [r4 + 8]
 +
0808AF48 4807    ldr    r0,=20C6h                              ;
 +
0808AF4A 1819    add    r1,r3,r0                                ;
 +
0808AF4C 8808    ldrh    r0,[r1]                                ;
 +
0808AF4E 3001    add    r0,1h                                  ;
 +
0808AF50 8008    strh    r0,[r1]                                ;
 +
0808AF52 BC30    pop    r4,r5                                  ;
 +
0808AF54 BC01    pop    r0                                      ;
 +
0808AF56 4700    bx      r0                                      ;
 +
0808AF58 1C20    mov    r0,r4                                  ;
 +
 
 +
==0x6B20C==
 +
0806B20C 5BE8    ldrh    r0,[r5,r7]                              ;
 +
0806B20E 0201    lsl    r1,r0,8h                                ;
 +
0806B210 F01FFBD0 bl      808A9B4h                                ;
 +
0806B214 1C01    mov    r1,r0                                  ;
 +
0806B216 2900    cmp    r1,0h                                  ;
 +
0806B218 DA00    bge    806B21Ch                                ;
 +
0806B21A 1CC8    add    r0,r1,3                                ;
 +
0806B21C 1080    asr    r0,r0,2h                                ;
 +
0806B21E 0080    lsl    r0,r0,2h                                ;
 +
0806B220 1A08    sub    r0,r1,r0                                ;
 +
0806B222 2801    cmp    r0,1h                                  ;
 +
0806B224 D00D    beq    806B242h                                ;
 +
0806B226 2801    cmp    r0,1h                                  ;
 +
0806B228 DC02    bgt    806B230h                                ;
 +
0806B22A 2800    cmp    r0,0h                                  ;
 +
0806B22C D005    beq    806B23Ah                                ;
 +
0806B22E E013    b      806B258h                                ;
 +
0806B230 2802    cmp    r0,2h                                  ;
 +
0806B232 D00A    beq    806B24Ah                                ;
 +
0806B234 2803    cmp    r0,3h                                  ;
 +
0806B236 D00C    beq    806B252h                                ;
 +
0806B238 E00E    b      806B258h                                ;
 +
0806B23A 2016    mov    r0,16h                                  ;
 +
0806B23C F7FDFF2E bl      806909Ch                                ;
 +
0806B240 E00A    b      806B258h                                ;
 +
0806B242 2017    mov    r0,17h                                  ;
 +
0806B244 F7FDFF2A bl      806909Ch                                ;
 +
0806B248 E006    b      806B258h                                ;
 +
0806B24A 2014    mov    r0,14h                                  ;
 +
0806B24C F7FDFF26 bl      806909Ch                                ;
 +
0806B250 E002    b      806B258h                                ;
 +
0806B252 201A    mov    r0,1Ah                                  ;
 +
0806B254 F7FDFF22 bl      806909Ch                                ;
 +
0806B258 BC30    pop    r4,r5                                  ;
 +
0806B25A BC01    pop    r0                                      ;
 +
0806B25C 4700    bx      r0                                      ;
 +
 
 +
==0x6B25E==
 +
0806B25E 0000    lsl    r0,r0,0h                                ;
 +
0806B260 B530    push    r4,r5,r14                              ;
 +
0806B262 B09D    add    sp,-74h                                ;
 +
0806B264 2000    mov    r0,0h                                  ;
 +
0806B266 4669    mov    r1,r13                                  ;
 +
0806B268 F7FCFCBA bl      8067BE0h                                ;Check cards in Player's Deck
 +
0806B26C 4CBF    ldr    r4,=201A50Ch                            ;
 +
0806B26E 25A0    mov    r5,0A0h                                ;
 +
0806B270 006D    lsl    r5,r5,1h                                ;r5 = 0d320
 +
0806B272 1C20    mov    r0,r4                                  ;
 +
0806B274 1C29    mov    r1,r5                                  ;r1 = 0d320
 +
0806B276 F01DFCEF bl      8088C58h                                ;call 0x8088C58
 +
0806B27A 21A0    mov    r1,0A0h                                ;
 +
0806B27C 0089    lsl    r1,r1,2h                                ;r1 = 0d640
 +
0806B27E 1860    add    r0,r4,r1                                ;r0 = 0d640 + r4
 +
0806B280 1C29    mov    r1,r5                                  ;
 +
0806B282 F01DFCE9 bl      8088C58h                                ;call 0x8088C58
 +
0806B286 48BA    ldr    r0,=0FFFFF83Fh                          ;
 +
0806B288 1825    add    r5,r4,r0                                ;
 +
0806B28A 2000    mov    r0,0h                                  ;
 +
0806B28C 7028    strb    r0,[r5]                                ;
 +
0806B28E 49B9    ldr    r1,=0FFFFF841h                          ;
 +
0806B290 1864    add    r4,r4,r1                                ;
 +
0806B292 7020    strb    r0,[r4]                                ;
 +
0806B294 48B8    ldr    r0,=3000040h                            ;
 +
0806B296 49B9    ldr    r1,=4870h                              ;
 +
0806B298 1840    add    r0,r0,r1                                ;
 +
0806B29A 7800    ldrb    r0,[r0]                                ;
 +
0806B29C 0680    lsl    r0,r0,1Ah                              ;
 +
0806B29E 0EC0    lsr    r0,r0,1Bh                              ;
 +
0806B2A0 F7FDFEFC bl      806909Ch                                ;
 +
0806B2A4 782D    ldrb    r5,[r5]                                ;
 +
0806B2A6 2D27    cmp    r5,27h                                  ;
 +
0806B2A8 D900    bls    806B2ACh                                ;
 +
0806B2AA E0C2    b      806B432h                                ;
 +
 
 +
==0x088C58==
 +
08088C58 1C02    mov    r2,r0                                  ;
 +
08088C5A 1C48    add    r0,r1,1                                ;r0 = r1 + 1
 +
08088C5C 0FC1    lsr    r1,r0,1Fh                              ;
 +
08088C5E 1840    add    r0,r0,r1                                ;
 +
08088C60 1041    asr    r1,r0,1h                                ;
 +
08088C62 2900    cmp    r1,0h                                  ;
 +
08088C64 D005    beq    8088C72h                                ;if (r1 == 0), branch to 08088C72 (exit the function)
 +
08088C66 2000    mov    r0,0h                                  ;r0 = 0
 +
08088C68 8010    strh    r0,[r2]                                ;store r0 into [r2]
 +
08088C6A 3202    add    r2,2h                                  ;r2 += 2
 +
08088C6C 3901    sub    r1,1h                                  ;r1--
 +
08088C6E 2900    cmp    r1,0h                                  ;
 +
08088C70 D1FA    bne    8088C68h                                ;if (r1 == 0), loop to 08088C68
 +
08088C72 4770    bx      r14                                    ;
 +
 
 +
==Cards data==
 +
===Cards stats array===
 +
0x832B84 to 0x833C7F - Cards stats array, containing Attribute, Type, ATK and DEF
 +
bitmap:
 +
AAAB BBBC CCCC DDEE EEEE EEEF FFFF FFFF
 +
A - Attribute
 +
    If card_type ≤ 0x14
 +
      0 - No Attribute
 +
      1 - LIGHT
 +
      2 - DARK
 +
      3 - WATER
 +
      4 - FIRE
 +
      5 - EARTH
 +
      6 - WIND
 +
      7 - ---
 +
    If card_type ≥ 0x15
 +
      0 - MAGIC
 +
      1 - TRAP
 +
B - Level
 +
C - Card Type
 +
    0 - [] (Monster)
 +
    1 - Dragon
 +
    2 - Zombie
 +
    3 - Fiend
 +
    4 - Pyro
 +
    5 - Sea Serpent
 +
    6 - Rock
 +
    7 - Machine
 +
    8 - Fish
 +
    9 - Dinosaur
 +
    A - Insect
 +
    B - Beast
 +
    C - Beast-Warrior
 +
    D - Plant
 +
    E - Aqua
 +
    F - Warrior
 +
    10 - Winged-Beast
 +
    11 - Fairy
 +
    12 - Spellcaster
 +
    13 - Thunder
 +
    14 - Reptile
 +
    15 - Trap
 +
    16 - Magic
 +
    17 - Ticket ("Cannot be used in duel")
 +
    18 - Divine-Beast ("Cannot be used in duel", displays the unused Divine Attribute, sets the card Level to 10, and displays blank values as the ATK/DEF stats - there's a workaround to display the 4000/4000 stats from the [[#Display_card_ATK|Display ATK and DEF subroutines]])
 +
D - Monster category
 +
    If card_type ≤ 0x14
 +
    0 - Normal Monster
 +
    1 - Effect Monster
 +
    2 - Fusion Monster
 +
    3 - Ritual Monster
 +
    If card_type = 0x15, a 3rd bit is used
 +
    0 - Normal
 +
    1 - Counter
 +
    2 - Field
 +
    3 - Equip
 +
    4 - Continuous
 +
    5 - Quick
 +
    6 - Ritual
 +
    7 - [Unknown]
 +
E - ATK ÷ 10
 +
F - DEF ÷ 10
 +
 
 +
Take this example with Earthbound Spirit (ID #0001).
 +
C8 64 30 A8 => 0xA83064C8
 +
Card ATK :
 +
=> DWORD(((0xA83064C8 << 14 >> 23 << 2) + (0xA83064C8 << 14 >> 23)) << 1) = 0d500
 +
Or :
 +
xxxx xxxx xxxx xxCC CCCC CCCx xxxx xxxx
 +
0b000110010 = 0d50
 +
50 × 10 = 500
 +
 
 +
===Cards internal IDs===
 +
* 0x833C80 to 0x8344FD - List of cards internal IDs, used for example for the CPU deck loading subroutine at 0x67CE0 (to be documented).
  
 +
===Cards names===
 +
* 0x83663C - Card names in 6 languages : Japanese, English, German, French, Italian, Spanish
  
{{Internal Data|game=Yu-Gi-Oh! Reshef of Destruction}}
+
{{Internal Data|game=Yu-Gi-Oh! Worldwide Edition: Stairway to the Destined Duel}}

Latest revision as of 04:15, 12 September 2022

0x884 (prepare duel data ?)

08000884 0105     lsl     r5,r0,4h                                ;2  4659
08000886 0000     lsl     r0,r0,0h                                ;2  4661
08000888 0307     lsl     r7,r0,0Ch                               ;2  4663
0800088A 0000     lsl     r0,r0,0h                                ;2  4665
0800088C B5F0     push    r4-r7,r14                               ;26 4691
0800088E 4657     mov     r7,r10                                  ;2  4693
08000890 464E     mov     r6,r9                                   ;2  4695
08000892 4645     mov     r5,r8                                   ;2  4697
08000894 B4E0     push    r5-r7                                   ;18 4715
08000896 4849     ldr     r0,=5000200h                            ;9  4724
08000898 4949     ldr     r1,=8385104h                            ;9  4733
0800089A 468A     mov     r10,r1                                  ;2  4735
0800089C 2220     mov     r2,20h                                  ;2  4737
0800089E F088F9F7 bl      8088C90h                                ;10 4747
080008A2 2020     mov     r0,20h                                  ;2  4749
080008A4 2110     mov     r1,10h                                  ;2  4751
080008A6 F087FD0F bl      80882C8h                                ;10 4761
080008AA 4846     ldr     r0,=0C0Fh                               ;9  4770
080008AC 4681     mov     r9,r0                                   ;2  4772
080008AE 4C46     ldr     r4,=8372FBAh                            ;r4 = pointer_to_in_game_text
080008B0 2009     mov     r0,9h                                   ;2  4783
080008B2 2109     mov     r1,9h                                   ;2  4785
080008B4 464A     mov     r2,r9                                   ;2  4787
080008B6 1C23     mov     r3,r4                                   ;2  4789
080008B8 F087FFA4 bl      8088804h                                ;10 4799
080008BC 4943     ldr     r1,=0C07h                               ;9  4808
080008BE 4688     mov     r8,r1                                   ;2  4810
080008C0 2008     mov     r0,8h                                   ;2  4812
080008C2 2108     mov     r1,8h                                   ;2  4814
080008C4 4642     mov     r2,r8                                   ;2  4816
080008C6 1C23     mov     r3,r4                                   ;2  4818
080008C8 F087FF9C bl      8088804h                                ;10 4828
080008CC 4E40     ldr     r6,=0C01h                               ;9  4837
080008CE 2073     mov     r0,73h                                  ;2  4839
080008D0 210B     mov     r1,0Bh                                  ;2  4841
080008D2 1C32     mov     r2,r6                                   ;2  4843
080008D4 1C23     mov     r3,r4                                   ;2  4845
080008D6 F087FF95 bl      8088804h                                ;10 4855
080008DA 4D3E     ldr     r5,=0C0Dh                               ;9  4864
080008DC 2072     mov     r0,72h                                  ;2  4866
080008DE 210A     mov     r1,0Ah                                  ;2  4868
080008E0 1C2A     mov     r2,r5                                   ;2  4870
080008E2 1C23     mov     r3,r4                                   ;2  4872
080008E4 F087FF8E bl      8088804h                                ;10 4882
080008E8 340A     add     r4,0Ah                                  ;2  4884
080008EA 2001     mov     r0,1h                                   ;2  4886
080008EC 2129     mov     r1,29h                                  ;2  4888
080008EE 464A     mov     r2,r9                                   ;2  4890
080008F0 1C23     mov     r3,r4                                   ;2  4892
080008F2 F087FF87 bl      8088804h                                ;10 4902
080008F6 2000     mov     r0,0h                                   ;2  4904
080008F8 2128     mov     r1,28h                                  ;2  4906
080008FA 4642     mov     r2,r8                                   ;2  4908
080008FC 1C23     mov     r3,r4                                   ;2  4910
080008FE F087FF81 bl      8088804h                                ;10 4920
08000902 2069     mov     r0,69h                                  ;2  4922
08000904 212B     mov     r1,2Bh                                  ;2  4924
08000906 1C32     mov     r2,r6                                   ;2  4926
08000908 1C23     mov     r3,r4                                   ;2  4928
0800090A F087FF7B bl      8088804h                                ;10 4938
0800090E 2068     mov     r0,68h                                  ;2  4940
08000910 212A     mov     r1,2Ah                                  ;2  4942
08000912 1C2A     mov     r2,r5                                   ;2  4944
08000914 1C23     mov     r3,r4                                   ;2  4946
08000916 F087FF75 bl      8088804h                                ;10 4956
0800091A 482F     ldr     r0,=6014000h                            ;9  4965
0800091C 2100     mov     r1,0h                                   ;2  4967
0800091E F088F89B bl      8088A58h                                ;10 4977
08000922 24A0     mov     r4,0A0h                                 ;2  4979
08000924 04E4     lsl     r4,r4,13h                               ;2  4981
08000926 1C20     mov     r0,r4                                   ;2  4983
08000928 4651     mov     r1,r10                                  ;2  4985
0800092A 2220     mov     r2,20h                                  ;2  4987
0800092C F088F9A2 bl      8088C74h                                ;10 4997
08000930 2000     mov     r0,0h                                   ;2  4999
08000932 8020     strh    r0,[r4]                                 ;5  5004
08000934 4B29     ldr     r3,=8A9E708h                            ;9  5013
08000936 2000     mov     r0,0h                                   ;2  5015
08000938 2110     mov     r1,10h                                  ;2  5017
0800093A 2220     mov     r2,20h                                  ;2  5019
0800093C F085FBF2 bl      8086124h                                ;10 5029
08000940 2080     mov     r0,80h                                  ;2  5031
08000942 00C0     lsl     r0,r0,3h                                ;2  5033
08000944 4B26     ldr     r3,=8A9F8DCh                            ;9  5042
08000946 2120     mov     r1,20h                                  ;2  5044
08000948 22A0     mov     r2,0A0h                                 ;2  5046
0800094A F085FBEB bl      8086124h                                ;10 5056
0800094E 2480     mov     r4,80h                                  ;2  5058
08000950 0124     lsl     r4,r4,4h                                ;2  5060
08000952 2294     mov     r2,94h                                  ;2  5062
08000954 0052     lsl     r2,r2,1h                                ;2  5064
08000956 4B23     ldr     r3,=8AA0BECh                            ;9  5073
08000958 1C20     mov     r0,r4                                   ;2  5075
0800095A 2130     mov     r1,30h                                  ;2  5077
0800095C F085FBE2 bl      8086124h                                ;10 5087
08000960 22AE     mov     r2,0AEh                                 ;2  5089
08000962 0052     lsl     r2,r2,1h                                ;2  5091
08000964 4B20     ldr     r3,=8AA1214h                            ;9  5100
08000966 1C20     mov     r0,r4                                   ;2  5102
08000968 2140     mov     r1,40h                                  ;2  5104
0800096A F085FBDB bl      8086124h                                ;10 5114
0800096E 2400     mov     r4,0h                                   ;2  5116
08000970 271F     mov     r7,1Fh                                  ;2  5118
08000972 26F8     mov     r6,0F8h                                 ;2  5120
08000974 00B6     lsl     r6,r6,2h                                ;2  5122
08000976 25F8     mov     r5,0F8h                                 ;2  5124
08000978 01ED     lsl     r5,r5,7h                                ;2  5126
0800097A 0063     lsl     r3,r4,1h                                ;2  5128
0800097C 481B     ldr     r0,=5000180h                            ;9  5137
0800097E 181B     add     r3,r3,r0                                ;2  5139
08000980 8819     ldrh    r1,[r3]                                 ;4  5143
08000982 221F     mov     r2,1Fh                                  ;2  5145
08000984 400A     and     r2,r1                                   ;2  5147
08000986 1C08     mov     r0,r1                                   ;2  5149
08000988 4030     and     r0,r6                                   ;2  5151
0800098A 4029     and     r1,r5                                   ;2  5153
0800098C 0852     lsr     r2,r2,1h                                ;2  5155
0800098E 403A     and     r2,r7                                   ;2  5157
08000990 0840     lsr     r0,r0,1h                                ;2  5159
08000992 4030     and     r0,r6                                   ;2  5161
08000994 0849     lsr     r1,r1,1h                                ;2  5163
08000996 4029     and     r1,r5                                   ;2  5165
08000998 4302     orr     r2,r0                                   ;2  5167
0800099A 4311     orr     r1,r2                                   ;2  5169
0800099C 8019     strh    r1,[r3]                                 ;5  5174
0800099E 3401     add     r4,1h                                   ;2  5176
080009A0 2C0F     cmp     r4,0Fh                                  ;2  5178
080009A2 DDEA     ble     800097Ah                                ;8  5186
080009A4 4812     ldr     r0,=3004876h                            ;9  5195
080009A6 4913     ldr     r1,=8228570h                            ;9  5204
080009A8 2220     mov     r2,20h                                  ;2  5206
080009AA F088F963 bl      8088C74h                                ;10 5216
080009AE BC38     pop     r3-r5                                   ;17 5233
080009B0 4698     mov     r8,r3                                   ;2  5235
080009B2 46A1     mov     r9,r4                                   ;2  5237
080009B4 46AA     mov     r10,r5                                  ;2  5239
080009B6 BCF0     pop     r4-r7                                   ;21 5260
080009B8 BC01     pop     r0                                      ;9  5269
080009BA 4700     bx      r0                                      ;8  5277

Cards stats

Display card ATK

0800FC50 B570     push    r4-r6,r14                       ;
0800FC52 0400     lsl     r0,r0,10h                       ;
0800FC54 0C04     lsr     r4,r0,10h                       ;
0800FC56 0409     lsl     r1,r1,10h                       ;
0800FC58 0C0D     lsr     r5,r1,10h                       ;
0800FC5A 0412     lsl     r2,r2,10h                       ;
0800FC5C 0C16     lsr     r6,r2,10h                       ;
0800FC5E F7FFFFED bl      800FC3Ch                        ;
0800FC62 4809     ldr     r0,=2013E00h                    ;
0800FC64 8044     strh    r4,[r0,2h]                      ;r4 = card_id
0800FC66 4809     ldr     r0,=7FFh                        ;
0800FC68 4020     and     r0,r4                           ;
0800FC6A 0080     lsl     r0,r0,2h                        ;Ensures card_id < 2048
0800FC6C 4908     ldr     r1,=8832B84h                    ;
0800FC6E 1840     add     r0,r0,r1                        ;r0 = 0x8832B84 + ((card_ID & 0x7FF) << 2)
0800FC70 6800     ldr     r0,[r0]                         ;r0 = [compressed_card_data_array]
0800FC72 21F8     mov     r1,0F8h                         ;
0800FC74 0449     lsl     r1,r1,11h                       ;
0800FC76 4008     and     r0,r1                           ;r0 &= 0x1F00000
0800FC78 0D00     lsr     r0,r0,14h                       ;r0 >> 20
0800FC7A 2815     cmp     r0,15h                          ;
0800FC7C DB0F     blt     800FC9Eh                        ;if (card_type < 0x15 [is a monster card]), branch to 0x800FC9E
0800FC7E 2817     cmp     r0,17h                          ;
0800FC80 DD08     ble     800FC94h                        ;if (card_type ≤ 0x17 [is not a monster card]), branch to 0x800FC94
0800FC82 2818     cmp     r0,18h                          ;
0800FC84 D008     beq     800FC98h                        ;if (card_type == DIVINE_BEAST), branch to 0x800FC98
0800FC86 E00A     b       800FC9Eh                        ;else branch to 0x800FC9E (default for Monster cards)
0800FC88 3E00     sub     r6,0h                           ;
0800FC8A 0201     lsl     r1,r0,8h                        ;
0800FC8C 07FF     lsl     r7,r7,1Fh                       ;
0800FC8E 0000     lsl     r0,r0,0h                        ;
0800FC90 2B84     cmp     r3,84h                          ;
0800FC92 0883     lsr     r3,r0,2h                        ;
0800FC94 2000     mov     r0,0h                           ;if (card_type ≤ 0x17 [is not a monster card]), ATK = 0
0800FC96 E00D     b       800FCB4h                        ;branch to 0x800FCB4 (store 0 into [0x02013E2C])
0800FC98 20FA     mov     r0,0FAh                         ;if (card_type == DIVINE_BEAST) ...
0800FC9A 0100     lsl     r0,r0,4h                        ;ATK = 4000
0800FC9C E00A     b       800FCB4h                        ;branch to 0x800FCB4 (store 4000 into [0x02013E2C])
0800FC9E 480F     ldr     r0,=7FFh                        ;if (card_type < 0x15 [is a monster card])
0800FCA0 4020     and     r0,r4                           ;Ensures card_id < 2048
0800FCA2 0080     lsl     r0,r0,2h                        ;r0 = (card_id & 0x7FF) << 2
0800FCA4 4B0E     ldr     r3,=8832B84h                    ;
0800FCA6 18C0     add     r0,r0,r3                        ;r0 = 0x8832B84 + ((0x7FF & card_ID) << 2)
0800FCA8 6801     ldr     r1,[r0]                         ;r1 = [compressed_card_data_array]
0800FCAA 0389     lsl     r1,r1,0Eh                       ;
0800FCAC 0DC9     lsr     r1,r1,17h                       ;
0800FCAE 0088     lsl     r0,r1,2h                        ;
0800FCB0 1840     add     r0,r0,r1                        ;
0800FCB2 0040     lsl     r0,r0,1h                        ;r0 = DWORD(((r1 << 14 >> 23 << 2) + (r1 << 14 >> 23)) << 1)
0800FCB4 4A0B     ldr     r2,=2013E00h                    ;
0800FCB6 62D0     str     r0,[r2,2Ch]                     ;Store card ATK into [0x02013E2C]
0800FCB8 4808     ldr     r0,=7FFh                        ;
0800FCBA 4020     and     r0,r4                           ;
0800FCBC 0080     lsl     r0,r0,2h                        ;
0800FCBE 4908     ldr     r1,=8832B84h                    ;
0800FCC0 1840     add     r0,r0,r1                        ;r0 = 0x8832B84 + ((r0 & r4) << 2)
0800FCC2 6800     ldr     r0,[r0]                         ;
0800FCC4 21F8     mov     r1,0F8h                         ;
0800FCC6 0449     lsl     r1,r1,11h                       ;r1 = 0x1F00000
0800FCC8 4008     and     r0,r1                           ;r0  &= r1
0800FCCA 0D00     lsr     r0,r0,14h                       ;r0 >>= 20
0800FCCC 2815     cmp     r0,15h                          ;
0800FCCE DB10     blt     800FCF2h                        ;if (card_type < 0x15), branch to 0x800FCF2
0800FCD0 2817     cmp     r0,17h                          ;
0800FCD2 DD09     ble     800FCE8h                        ;if (card_type ≤ 0x17), branch to 0x800FCE8
0800FCD4 2818     cmp     r0,18h                          ;
0800FCD6 D009     beq     800FCECh                        ;if (card_type == DIVINE_BEAST), branch to 0x800FCEC
0800FCD8 E00B     b       800FCF2h                        ;else branch to 0x800FCF2 (default for Monster cards)
0800FCDA 0000     lsl     r0,r0,0h                        ;

? (CPU deck ?)

? (calls the super long routine)

08067BFE 2000     mov     r0,0h                                   ;r0 = 0
08067C00 4680     mov     r8,r0                                   ;r8 = 0
08067C02 4919     ldr     r1,=2018FE4h                            ;
08067C04 2001     mov     r0,1h                                   ;r0 = 1
08067C06 464A     mov     r2,r9                                   ;r2 = r9
08067C08 4010     and     r0,r2                                   ;r0 & r2
08067C0A 4A18     ldr     r2,=0D64h                               ;r2 = 0xD64
08067C0C 4350     mul     r0,r2                                   ;r0 ×= r2
08067C0E 1840     add     r0,r0,r1                                ;r0 += r1
08067C10 78C0     ldrb    r0,[r0,3h]                              ;r0 = [r0 + 3]
08067C12 4580     cmp     r8,r0                                   ;
08067C14 DB01     blt     8067C1Ah                                ;if (r8 < [r0 + 3]), branch to the Super-long routine checking a lot of card IDs in the deck
08067C16 F000FD46 bl      80686A6h                                ;

Super-long routine checking cards in the deck

08067C1A 4C15     ldr     r4,=7FFh                                ;
08067C1C 1C27     mov     r7,r4                                   ;r7 = 0x7FF
08067C1E 23F8     mov     r3,0F8h                                 ;
08067C20 045B     lsl     r3,r3,11h                               ;
08067C22 2001     mov     r0,1h                                   ;
08067C24 4649     mov     r1,r9                                   ;
08067C26 4008     and     r0,r1                                   ;
08067C28 4644     mov     r4,r8                                   ;
08067C2A 00A1     lsl     r1,r4,2h                                ;
08067C2C 4350     mul     r0,r2                                   ;
08067C2E 1809     add     r1,r1,r0                                ;
08067C30 4810     ldr     r0,=20197A8h                            ;r0 = pointer_to_player_deck_during_duel
08067C32 1809     add     r1,r1,r0                                ;r1 = pointer_to_player_deck_during_duel + pointer_position_in_player_deck
08067C34 6808     ldr     r0,[r1]                                 ;r0 = card_id
08067C36 0500     lsl     r0,r0,14h                               ;
08067C38 0D06     lsr     r6,r0,14h                               ;
08067C3A 1C31     mov     r1,r6                                   ;r1 = card_id
08067C3C 4039     and     r1,r7                                   ;r1 & 0x7FF (ensures card_id < 2048)
08067C3E 0088     lsl     r0,r1,2h                                ;r0 = card_id << 2
08067C40 4C0D     ldr     r4,=8832B84h                            ;r4 = pointer_to_card_stats_array
08067C42 1902     add     r2,r0,r4                                ;
08067C44 6810     ldr     r0,[r2]                                 ;r0 = card_stats
08067C46 4018     and     r0,r3                                   ;
08067C48 0D00     lsr     r0,r0,14h                               ;r0 = card_type
08067C4A 2815     cmp     r0,15h                                  ;
08067C4C D01A     beq     8067C84h                                ;if (card_type == TRAP), branch to 08067C84
08067C4E 2816     cmp     r0,16h                                  ;
08067C50 D100     bne     8067C54h                                ;if (card_type ≠ MAGIC), branch to 08067C54
08067C52 E128     b       8067EA6h                                ;else if (card_type == MAGIC), branch to 08067EA6
08067C54 0048     lsl     r0,r1,1h                                ;...if (card_type ≠ TRAP && card_type ≠ MAGIC), r0 = current_card_id << 1
08067C56 4909     ldr     r1,=8833C80h                            ;r1 = pointer_to_internal_cards_ids_array
08067C58 1840     add     r0,r0,r1                                ;r0 = pointer_to_internal_cards_ids_array + (current_card_id << 1)
08067C5A 8801     ldrh    r1,[r0]                                 ;r1 = internal_card_id
08067C5C 4808     ldr     r0,=776h                                ;
08067C5E 4281     cmp     r1,r0                                   ;
08067C60 D000     beq     8067C64h                                ;if (r1 == 0d1910 [Obelisk the Tormentor in DM6, unused]), branch to 08067C64
08067C62 E20D     b       8068080h                                ;else branch to 08068080
08067C64 2003     mov     r0,3h                                   ;r0 = 3
08067C66 E238     b       80680DAh                                ;branch to 080680DA
08067C68 8FE4     ldrh    r4,[r4,3Eh]                             ;
08067C6A 0201     lsl     r1,r0,8h                                ;
08067C6C 0D64     lsr     r4,r4,15h                               ;
08067C6E 0000     lsl     r0,r0,0h                                ;
08067C70 07FF     lsl     r7,r7,1Fh                               ;
08067C72 0000     lsl     r0,r0,0h                                ;
08067C74 97A8     str     r7,[sp,2A0h]                            ;
08067C76 0201     lsl     r1,r0,8h                                ;
08067C78 2B84     cmp     r3,84h                                  ;
08067C7A 0883     lsr     r3,r0,2h                                ;
08067C7C 3C80     sub     r4,80h                                  ;
08067C7E 0883     lsr     r3,r0,2h                                ;
08067C80 0776     lsl     r6,r6,1Dh                               ;
08067C82 0000     lsl     r0,r0,0h                                ;
08067C84 6968     ldr     r0,[r5,14h]                             ;...if (card_type == TRAP)
08067C86 3001     add     r0,1h                                   ;
08067C88 6168     str     r0,[r5,14h]                             ;increment number of Trap cards in the deck stored in IWRAM
08067C8A 6811     ldr     r1,[r2]                                 ;r1 = [r2]
08067C8C 1C08     mov     r0,r1                                   ;r0 = r1
08067C8E 4018     and     r0,r3                                   ;
08067C90 0D00     lsr     r0,r0,14h                               ;
08067C92 2816     cmp     r0,16h                                  ;
08067C94 DC06     bgt     8067CA4h                                ;
08067C96 2815     cmp     r0,15h                                  ;
08067C98 DB04     blt     8067CA4h                                ;
08067C9A 20E0     mov     r0,0E0h                                 ;
08067C9C 0300     lsl     r0,r0,0Ch                               ;r0 = 0x1C00000
08067C9E 4001     and     r1,r0                                   ;r1 &= r0
08067CA0 0C48     lsr     r0,r1,11h                               ;r0 = r1 >> 17
08067CA2 E000     b       8067CA6h                                ;branch to 08067CA6
08067CA4 2000     mov     r0,0h                                   ;
08067CA6 2803     cmp     r0,3h                                   ;
08067CA8 D009     beq     8067CBEh                                ;if (r0 == 3), branch to 08067CBE
08067CAA 2803     cmp     r0,3h                                   ;
08067CAC DC02     bgt     8067CB4h                                ;if (r0 > 3), branch to 08067CB4
08067CAE 2802     cmp     r0,2h                                   ;
08067CB0 D00D     beq     8067CCEh                                ;if (r0 == 2), branch to 08067CCE
08067CB2 E013     b       8067CDCh                                ;else branch to 08067CDC
08067CB4 2804     cmp     r0,4h                                   ;
08067CB6 D006     beq     8067CC6h                                ;if (r0 == 4), branch to 08067CC6
08067CB8 2805     cmp     r0,5h                                   ;
08067CBA D00C     beq     8067CD6h                                ;if (r0 == 5), branch to 08067CD6
08067CBC E00E     b       8067CDCh                                ;else branch to 08067CDC
08067CBE 6A28     ldr     r0,[r5,20h]                             ;
08067CC0 3001     add     r0,1h                                   ;
08067CC2 6228     str     r0,[r5,20h]                             ;[r5 + 0x20]++
08067CC4 E00A     b       8067CDCh                                ;branch to 08067CDC
08067CC6 69E8     ldr     r0,[r5,1Ch]                             ;
08067CC8 3001     add     r0,1h                                   ;
08067CCA 61E8     str     r0,[r5,1Ch]                             ;[r5 + 0x1C]++
08067CCC E006     b       8067CDCh                                ;branch to 08067CDC
08067CCE 6A68     ldr     r0,[r5,24h]                             ;
08067CD0 3001     add     r0,1h                                   ;
08067CD2 6268     str     r0,[r5,24h]                             ;[r5 + 0x24]++
08067CD4 E002     b       8067CDCh                                ;branch to 08067CDC
08067CD6 6AA8     ldr     r0,[r5,28h]                             ;
08067CD8 3001     add     r0,1h                                   ;
08067CDA 62A8     str     r0,[r5,28h]                             ;[r5 + 0x28]++
08067CDC 403E     and     r6,r7                                   ;current_card_id &= 0x7FF
08067CDE 0070     lsl     r0,r6,1h                                ;r0 = current_card_id << 1
08067CE0 4A0F     ldr     r2,=8833C80h                            ;r2 = pointer_to_internal_cards_ids_array
08067CE2 1880     add     r0,r0,r2                                ;r0 = pointer_to_internal_cards_ids_array + (current_card_id << 1)
08067CE4 8801     ldrh    r1,[r0]                                 ;r1 = internal_card_id
08067CE6 480F     ldr     r0,=40Eh                                ;r0 = 0x40E [0d1038]
08067CE8 4281     cmp     r1,r0                                   ;
08067CEA D101     bne     8067CF0h                                ;if (internal_card_id ≠ 0d1038 [Magic Thorns]), branch to 08067CF0
08067CEC F000FCB2 bl      8068654h                                ;else call 0x8068654
08067CF0 4281     cmp     r1,r0                                   ;
08067CF2 DC5F     bgt     8067DB4h                                ;if (internal_card_id > 0d1038), branch to 08067DB4
08067CF4 3845     sub     r0,45h                                  ;r0 = 0x3C9 [0d969]
08067CF6 4281     cmp     r1,r0                                   ;
08067CF8 D100     bne     8067CFCh                                ;if (internal_card_id ≠ 0d969 [Chain Destruction]), branch to 08067CFC
08067CFA E1B9     b       8068070h                                ;else branch to 08068070
08067CFC 4281     cmp     r1,r0                                   ;
08067CFE DC2D     bgt     8067D5Ch                                ;if (internal_card_id > 0d969), branch to 08067D5C
08067D00 4809     ldr     r0,=2ADh                                ;r0 = 0x2AD [0d685]
08067D02 4281     cmp     r1,r0                                   ;
08067D04 D100     bne     8067D08h                                ;if (internal_card_id ≠ 0d685 [Widespread Ruin]), branch to 08067D08
08067D06 E1B3     b       8068070h                                ;else branch to 08068070
08067D08 4281     cmp     r1,r0                                   ;
08067D0A DC13     bgt     8067D34h                                ;if (internal_card_id > 0d685), branch to 08067D34
08067D0C 381C     sub     r0,1Ch                                  ;
08067D0E 4281     cmp     r1,r0                                   ;
08067D10 D101     bne     8067D16h                                ;if (internal_card_id ≠ 0d657 [Metalmorph]), branch to 08067D16
08067D12 F000FC94 bl      806863Eh                                ;else branch to 0806863E
08067D16 4281     cmp     r1,r0                                   ;
08067D18 DC08     bgt     8067D2Ch                                ;if (internal_card_id > 0d657), branch to 08067D2C
08067D1A 20AE     mov     r0,0AEh                                 ;else r0 = 0xAE
08067D1C 0040     lsl     r0,r0,1h                                ;r0 << 1 [0x15C ; 0d348 ; Spellbinding Circle]
08067D1E E083     b       8067E28h                                ;branch to 08067E28
08067D20 3C80     sub     r4,80h                                  ;-
08067D22 0883     lsr     r3,r0,2h                                ;-
08067D24 040E     lsl     r6,r1,10h                               ;-
08067D26 0000     lsl     r0,r0,0h                                ;-
08067D28 02AD     lsl     r5,r5,0Ah                               ;-
08067D2A 0000     lsl     r0,r0,0h                                ;-
08067D2C 4800     ldr     r0,=2A9h                                ;... if (internal_card_id > 0d657), r0 = 0x2A9 [0d681 ; Eatgaboon]
08067D2E E031     b       8067D94h                                ;branch to 08067D94
08067D30 02A9     lsl     r1,r5,0Ah                               ;-
08067D32 0000     lsl     r0,r0,0h                                ;-
08067D34 4804     ldr     r0,=3ABh                                ;... if (internal_card_id > 0d685), r0 = 0x3AB [0d939 ; Bell of Destruction]
08067D36 4281     cmp     r1,r0                                   ;
08067D38 D101     bne     8067D3Eh                                ;if (internal_card_id ≠ 0d939 [Bell of Destruction]), branch to 08067D3E
08067D3A F000FC8B bl      8068654h                                ;else call 08068654
08067D3E 4281     cmp     r1,r0                                   ;
08067D40 DC04     bgt     8067D4Ch                                ;if (internal_card_id > 0d939), branch to 08067D4C
08067D42 38FA     sub     r0,0FAh                                 ;r0 = 0d689 [Fake Trap in DM6, unused]
08067D44 E070     b       8067E28h                                ;branch to 08067E28
08067D46 0000     lsl     r0,r0,0h                                ;-
08067D48 03AB     lsl     r3,r5,0Eh                               ;-
08067D4A 0000     lsl     r0,r0,0h                                ;-
08067D4C 4802     ldr     r0,=3B1h                                ;... if (internal_card_id > 0d939), r0 = 0x3B1 [0d945, Magical Hats]
08067D4E 4281     cmp     r1,r0                                   ;
08067D50 D100     bne     8067D54h                                ;if (internal_card_id ≠ 0d945 [Magical Hats]), branch to 08067D54
08067D52 E18D     b       8068070h                                ;else branch to 08068070
08067D54 300F     add     r0,0Fh                                  ;r0 = 0x3C0 [0d960, Negate Attack]
08067D56 E067     b       8067E28h                                ;branch to 08067E28
08067D58 03B1     lsl     r1,r6,0Eh                               ;
08067D5A 0000     lsl     r0,r0,0h                                ;
08067D5C 4806     ldr     r0,=3FBh                                ;... if (internal_card_id > 0d969), r0 = 0x3FB [0d1019, White Hole]
08067D5E 4281     cmp     r1,r0                                   ;
08067D60 D100     bne     8067D64h                                ;
08067D62 E185     b       8068070h                                ;
08067D64 4281     cmp     r1,r0                                   ;
08067D66 DC0D     bgt     8067D84h                                ;
08067D68 3811     sub     r0,11h                                  ;
08067D6A 4281     cmp     r1,r0                                   ;
08067D6C D100     bne     8067D70h                                ;
08067D6E E17F     b       8068070h                                ;
08067D70 4281     cmp     r1,r0                                   ;
08067D72 DC03     bgt     8067D7Ch                                ;
08067D74 380C     sub     r0,0Ch                                  ;
08067D76 E057     b       8067E28h                                ;
08067D78 03FB     lsl     r3,r7,0Fh                               ;
08067D7A 0000     lsl     r0,r0,0h                                ;
08067D7C 20FE     mov     r0,0FEh                                 ;
08067D7E 0080     lsl     r0,r0,2h                                ;
08067D80 F000FBCF bl      8068522h                                ;call 08068522
08067D84 4808     ldr     r0,=407h                                ;[0d1031, Horn of Heaven]
08067D86 4281     cmp     r1,r0                                   ;
08067D88 DC10     bgt     8067DACh                                ;
08067D8A 3803     sub     r0,3h                                   ;
08067D8C 4281     cmp     r1,r0                                   ;
08067D8E DB00     blt     8067D92h                                ;
08067D90 E16E     b       8068070h                                ;branch to 08068070
08067D92 3806     sub     r0,6h                                   ;
08067D94 4281     cmp     r1,r0                                   ;
08067D96 DD01     ble     8067D9Ch                                ;
08067D98 F000FC77 bl      806868Ah                                ;call 0806868A
08067D9C 3801     sub     r0,1h                                   ;
08067D9E 4281     cmp     r1,r0                                   ;
08067DA0 DA01     bge     8067DA6h                                ;
08067DA2 F000FC72 bl      806868Ah                                ;call 0806868A
08067DA6 E163     b       8068070h                                ;
08067DA8 0407     lsl     r7,r0,10h                               ;
08067DAA 0000     lsl     r0,r0,0h                                ;
08067DAC 4800     ldr     r0,=409h                                ;[0d1033, Royal Decree]
08067DAE E03B     b       8067E28h                                ;branch to 08067E28
08067DB0 0409     lsl     r1,r1,10h                               ;
08067DB2 0000     lsl     r0,r0,0h                                ;
08067DB4 480A     ldr     r0,=49Ah                                ;[0d1178, Aqua Chorus]
08067DB6 4281     cmp     r1,r0                                   ;
08067DB8 D101     bne     8067DBEh                                ;
08067DBA F000FC40 bl      806863Eh                                ;
08067DBE 4281     cmp     r1,r0                                   ;
08067DC0 DC3A     bgt     8067E38h                                ;
08067DC2 3853     sub     r0,53h                                  ;
08067DC4 4281     cmp     r1,r0                                   ;
08067DC6 D101     bne     8067DCCh                                ;
08067DC8 F000FC50 bl      806866Ch                                ;
08067DCC 4281     cmp     r1,r0                                   ;
08067DCE DC13     bgt     8067DF8h                                ;
08067DD0 3821     sub     r0,21h                                  ;
08067DD2 4281     cmp     r1,r0                                   ;
08067DD4 D100     bne     8067DD8h                                ;
08067DD6 E14B     b       8068070h                                ;
08067DD8 4281     cmp     r1,r0                                   ;
08067DDA DC03     bgt     8067DE4h                                ;
08067DDC 3806     sub     r0,6h                                   ;
08067DDE E023     b       8067E28h                                ;
08067DE0 049A     lsl     r2,r3,12h                               ;
08067DE2 0000     lsl     r0,r0,0h                                ;
08067DE4 4803     ldr     r0,=43Ah                                ;[0d1082, Snake Fang]
08067DE6 4281     cmp     r1,r0                                   ;
08067DE8 D101     bne     8067DEEh                                ;
08067DEA F000FC28 bl      806863Eh                                ;
08067DEE 300A     add     r0,0Ah                                  ;
08067DF0 F000FC06 bl      8068600h                                ;
08067DF4 043A     lsl     r2,r7,10h                               ;
08067DF6 0000     lsl     r0,r0,0h                                ;
08067DF8 4807     ldr     r0,=475h                                ;[0d1141, Appropriate]
08067DFA 4281     cmp     r1,r0                                   ;
08067DFC D101     bne     8067E02h                                ;
08067DFE F000FC39 bl      8068674h                                ;
08067E02 4281     cmp     r1,r0                                   ;
08067E04 DC0A     bgt     8067E1Ch                                ;
08067E06 382B     sub     r0,2Bh                                  ;
08067E08 4281     cmp     r1,r0                                   ;
08067E0A D101     bne     8067E10h                                ;
08067E0C F000FC1E bl      806864Ch                                ;
08067E10 302A     add     r0,2Ah                                  ;
08067E12 F000FBF5 bl      8068600h                                ;
08067E16 0000     lsl     r0,r0,0h                                ;
08067E18 0475     lsl     r5,r6,11h                               ;
08067E1A 0000     lsl     r0,r0,0h                                ;
08067E1C 4805     ldr     r0,=47Bh                                ;[0d1147, Backup Soldier]
08067E1E 4281     cmp     r1,r0                                   ;
08067E20 D101     bne     8067E26h                                ;
08067E22 F000FC23 bl      806866Ch                                ;
08067E26 3007     add     r0,7h                                   ;
08067E28 4281     cmp     r1,r0                                   ;
08067E2A D100     bne     8067E2Eh                                ;
08067E2C E120     b       8068070h                                ;
08067E2E F000FC2C bl      806868Ah                                ;call 0806868A
08067E32 0000     lsl     r0,r0,0h                                ;
08067E34 047B     lsl     r3,r7,11h                               ;
08067E36 0000     lsl     r0,r0,0h                                ;
08067E38 4807     ldr     r0,=519h                                ;[0d1305, Solemn Wishes]
08067E3A 4281     cmp     r1,r0                                   ;
08067E3C D101     bne     8067E42h                                ;
08067E3E F000FC05 bl      806864Ch                                ;
08067E42 4281     cmp     r1,r0                                   ;
08067E44 DC14     bgt     8067E70h                                ;
08067E46 3804     sub     r0,4h                                   ;
08067E48 4281     cmp     r1,r0                                   ;
08067E4A D100     bne     8067E4Eh                                ;
08067E4C E110     b       8068070h                                ;
08067E4E 4281     cmp     r1,r0                                   ;
08067E50 DC04     bgt     8067E5Ch                                ;
08067E52 3857     sub     r0,57h                                  ;
08067E54 F000FBCB bl      80685EEh                                ;
08067E58 0519     lsl     r1,r3,14h                               ;
08067E5A 0000     lsl     r0,r0,0h                                ;
08067E5C 4803     ldr     r0,=516h                                ;[0d1302, Minor Goblin Official]
08067E5E 4281     cmp     r1,r0                                   ;
08067E60 D101     bne     8067E66h                                ;
08067E62 F000FBF7 bl      8068654h                                ;
08067E66 3002     add     r0,2h                                   ;
08067E68 E3C1     b       80685EEh                                ;
08067E6A 0000     lsl     r0,r0,0h                                ;
08067E6C 0516     lsl     r6,r2,14h                               ;
08067E6E 0000     lsl     r0,r0,0h                                ;
08067E70 4806     ldr     r0,=5A7h                                ;[0d1447, Jar of Greed]
08067E72 4281     cmp     r1,r0                                   ;
08067E74 D101     bne     8067E7Ah                                ;
08067E76 F000FBFD bl      8068674h                                ;
08067E7A 4281     cmp     r1,r0                                   ;
08067E7C DC08     bgt     8067E90h                                ;
08067E7E 388D     sub     r0,8Dh                                  ;
08067E80 4281     cmp     r1,r0                                   ;
08067E82 D101     bne     8067E88h                                ;
08067E84 F000FBE6 bl      8068654h                                ;
08067E88 3012     add     r0,12h                                  ;
08067E8A E3B0     b       80685EEh                                ;
08067E8C 05A7     lsl     r7,r4,16h                               ;
08067E8E 0000     lsl     r0,r0,0h                                ;
08067E90 20BF     mov     r0,0BFh                                 ;
08067E92 00C0     lsl     r0,r0,3h                                ;
08067E94 4281     cmp     r1,r0                                   ;
08067E96 D100     bne     8067E9Ah                                ;
08067E98 E0EE     b       8068078h                                ;
08067E9A 3003     add     r0,3h                                   ;
08067E9C 4281     cmp     r1,r0                                   ;
08067E9E D001     beq     8067EA4h                                ;
08067EA0 F000FBF3 bl      806868Ah                                ;call 0806868A
08067EA4 E0E4     b       8068070h                                ;branch to 08068070
08067EA6 6928     ldr     r0,[r5,10h]                             ;...if (card_type == MAGIC)
08067EA8 3001     add     r0,1h                                   ;
08067EAA 6128     str     r0,[r5,10h]                             ;increment number of Magic cards in the deck stored in IWRAM
08067EAC 6811     ldr     r1,[r2]                                 ;
08067EAE 1C08     mov     r0,r1                                   ;
08067EB0 4018     and     r0,r3                                   ;
08067EB2 0D00     lsr     r0,r0,14h                               ;
08067EB4 2816     cmp     r0,16h                                  ;
08067EB6 DC06     bgt     8067EC6h                                ;
08067EB8 2815     cmp     r0,15h                                  ;
08067EBA DB04     blt     8067EC6h                                ;
08067EBC 20E0     mov     r0,0E0h                                 ;
08067EBE 0300     lsl     r0,r0,0Ch                               ;
08067EC0 4001     and     r1,r0                                   ;
08067EC2 0C48     lsr     r0,r1,11h                               ;
08067EC4 E000     b       8067EC8h                                ;
08067EC6 2000     mov     r0,0h                                   ;
08067EC8 2803     cmp     r0,3h                                   ;
08067ECA D009     beq     8067EE0h                                ;
08067ECC 2803     cmp     r0,3h                                   ;
08067ECE DC02     bgt     8067ED6h                                ;
08067ED0 2802     cmp     r0,2h                                   ;
08067ED2 D00D     beq     8067EF0h                                ;
08067ED4 E013     b       8067EFEh                                ;
08067ED6 2804     cmp     r0,4h                                   ;
08067ED8 D006     beq     8067EE8h                                ;
08067EDA 2805     cmp     r0,5h                                   ;
08067EDC D00C     beq     8067EF8h                                ;
08067EDE E00E     b       8067EFEh                                ;
08067EE0 6A28     ldr     r0,[r5,20h]                             ;
08067EE2 3001     add     r0,1h                                   ;
08067EE4 6228     str     r0,[r5,20h]                             ;
08067EE6 E00A     b       8067EFEh                                ;
08067EE8 69E8     ldr     r0,[r5,1Ch]                             ;
08067EEA 3001     add     r0,1h                                   ;
08067EEC 61E8     str     r0,[r5,1Ch]                             ;
08067EEE E006     b       8067EFEh                                ;
08067EF0 6A68     ldr     r0,[r5,24h]                             ;
08067EF2 3001     add     r0,1h                                   ;
08067EF4 6268     str     r0,[r5,24h]                             ;
08067EF6 E002     b       8067EFEh                                ;
08067EF8 6AA8     ldr     r0,[r5,28h]                             ;
08067EFA 3001     add     r0,1h                                   ;
08067EFC 62A8     str     r0,[r5,28h]                             ;
08067EFE 403E     and     r6,r7                                   ;
08067F00 0070     lsl     r0,r6,1h                                ;
08067F02 4C11     ldr     r4,=8833C80h                            ;r4 = pointer_to_internal_cards_ids_array
08067F04 1900     add     r0,r0,r4                                ;
08067F06 8801     ldrh    r1,[r0]                                 ;
08067F08 4810     ldr     r0,=40Dh                                ;[0d1037, Exile of the Wicked]
08067F0A 4281     cmp     r1,r0                                   ;
08067F0C DC5F     bgt     8067FCEh                                ;
08067F0E 3801     sub     r0,1h                                   ;
08067F10 4281     cmp     r1,r0                                   ;
08067F12 DB00     blt     8067F16h                                ;
08067F14 E3A2     b       806865Ch                                ;
08067F16 480E     ldr     r0,=297h                                ;[0d663, Eternal Draught]
08067F18 4281     cmp     r1,r0                                   ;
08067F1A DC29     bgt     8067F70h                                ;
08067F1C 3802     sub     r0,2h                                   ;
08067F1E 4281     cmp     r1,r0                                   ;
08067F20 DB00     blt     8067F24h                                ;
08067F22 E39B     b       806865Ch                                ;
08067F24 20AD     mov     r0,0ADh                                 ;
08067F26 0040     lsl     r0,r0,1h                                ;
08067F28 4281     cmp     r1,r0                                   ;
08067F2A DC13     bgt     8067F54h                                ;
08067F2C 3804     sub     r0,4h                                   ;
08067F2E 4281     cmp     r1,r0                                   ;
08067F30 DB00     blt     8067F34h                                ;
08067F32 E38F     b       8068654h                                ;
08067F34 3807     sub     r0,7h                                   ;
08067F36 4281     cmp     r1,r0                                   ;
08067F38 DA00     bge     8067F3Ch                                ;
08067F3A E3A6     b       806868Ah                                ;branch to 0806868A
08067F3C 3001     add     r0,1h                                   ;
08067F3E 4281     cmp     r1,r0                                   ;
08067F40 DC00     bgt     8067F44h                                ;
08067F42 E38B     b       806865Ch                                ;
08067F44 E382     b       806864Ch                                ;
08067F46 0000     lsl     r0,r0,0h                                ;
08067F48 3C80     sub     r4,80h                                  ;
08067F4A 0883     lsr     r3,r0,2h                                ;
08067F4C 040D     lsl     r5,r1,10h                               ;
08067F4E 0000     lsl     r0,r0,0h                                ;
08067F50 0297     lsl     r7,r2,0Ah                               ;
08067F52 0000     lsl     r0,r0,0h                                ;
08067F54 4803     ldr     r0,=28Fh                                ;[0d655, Eternal Rest]
08067F56 4281     cmp     r1,r0                                   ;
08067F58 D100     bne     8067F5Ch                                ;
08067F5A E37F     b       806865Ch                                ;
08067F5C 4281     cmp     r1,r0                                   ;
08067F5E DC03     bgt     8067F68h                                ;
08067F60 3803     sub     r0,3h                                   ;[0d652, Warrior Elimination]
08067F62 E32A     b       80685BAh                                ;
08067F64 028F     lsl     r7,r1,0Ah                               ;
08067F66 0000     lsl     r0,r0,0h                                ;
08067F68 4800     ldr     r0,=293h                                ;[0d659, Stain Storm]
08067F6A E326     b       80685BAh                                ;
08067F6C 0293     lsl     r3,r2,0Ah                               ;
08067F6E 0000     lsl     r0,r0,0h                                ;
08067F70 4806     ldr     r0,=3EEh                                ;[0d1006, Blue Medicine]
08067F72 4281     cmp     r1,r0                                   ;
08067F74 D100     bne     8067F78h                                ;
08067F76 E369     b       806864Ch                                ;
08067F78 4281     cmp     r1,r0                                   ;
08067F7A DC17     bgt     8067FACh                                ;
08067F7C 3826     sub     r0,26h                                  ;[0d968, Graceful Charity]
08067F7E 4281     cmp     r1,r0                                   ;
08067F80 D100     bne     8067F84h                                ;
08067F82 E377     b       8068674h                                ;
08067F84 4281     cmp     r1,r0                                   ;
08067F86 DC05     bgt     8067F94h                                ;
08067F88 4801     ldr     r0,=29Fh                                ;[0d671, Harpie's Feather Duster]
08067F8A E008     b       8067F9Eh                                ;
08067F8C 03EE     lsl     r6,r5,0Fh                               ;
08067F8E 0000     lsl     r0,r0,0h                                ;
08067F90 029F     lsl     r7,r3,0Ah                               ;
08067F92 0000     lsl     r0,r0,0h                                ;
08067F94 4804     ldr     r0,=3E9h                                ;[0d1001, Fissure]
08067F96 4281     cmp     r1,r0                                   ;
08067F98 D100     bne     8067F9Ch                                ;
08067F9A E35F     b       806865Ch                                ;
08067F9C 3003     add     r0,3h                                   ;
08067F9E 4281     cmp     r1,r0                                   ;
08067FA0 D100     bne     8067FA4h                                ;
08067FA2 E35F     b       8068664h                                ;
08067FA4 E371     b       806868Ah                                ;branch to 0806868A
08067FA6 0000     lsl     r0,r0,0h                                ;
08067FA8 03E9     lsl     r1,r5,0Fh                               ;
08067FAA 0000     lsl     r0,r0,0h                                ;
08067FAC 20FC     mov     r0,0FCh                                 ;
08067FAE 0080     lsl     r0,r0,2h                                ;
08067FB0 4281     cmp     r1,r0                                   ;
08067FB2 D100     bne     8067FB6h                                ;
08067FB4 E35A     b       806866Ch                                ;
08067FB6 4281     cmp     r1,r0                                   ;
08067FB8 DA00     bge     8067FBCh                                ;
08067FBA E34B     b       8068654h                                ;
08067FBC 3001     add     r0,1h                                   ;
08067FBE 4281     cmp     r1,r0                                   ;
08067FC0 D100     bne     8067FC4h                                ;
08067FC2 E34F     b       8068664h                                ;
08067FC4 3001     add     r0,1h                                   ;
08067FC6 4281     cmp     r1,r0                                   ;
08067FC8 D100     bne     8067FCCh                                ;
08067FCA E353     b       8068674h                                ;
08067FCC E35D     b       806868Ah                                ;branch to 0806868A
08067FCE 2091     mov     r0,91h                                  ;
08067FD0 00C0     lsl     r0,r0,3h                                ;
08067FD2 4281     cmp     r1,r0                                   ;
08067FD4 DC28     bgt     8068028h                                ;
08067FD6 3801     sub     r0,1h                                   ;
08067FD8 4281     cmp     r1,r0                                   ;
08067FDA DB00     blt     8067FDEh                                ;
08067FDC E346     b       806866Ch                                ;
08067FDE 3855     sub     r0,55h                                  ;
08067FE0 4281     cmp     r1,r0                                   ;
08067FE2 D045     beq     8068070h                                ;
08067FE4 4281     cmp     r1,r0                                   ;
08067FE6 DC0F     bgt     8068008h                                ;
08067FE8 380D     sub     r0,0Dh                                  ;
08067FEA 4281     cmp     r1,r0                                   ;
08067FEC D100     bne     8067FF0h                                ;
08067FEE E339     b       8068664h                                ;
08067FF0 4281     cmp     r1,r0                                   ;
08067FF2 DC01     bgt     8067FF8h                                ;
08067FF4 3816     sub     r0,16h                                  ;
08067FF6 E2FA     b       80685EEh                                ;
08067FF8 4802     ldr     r0,=42Bh                                ;[0d1067, Final Destiny]
08067FFA 4281     cmp     r1,r0                                   ;
08067FFC D100     bne     8068000h                                ;
08067FFE E32D     b       806865Ch                                ;
08068000 3002     add     r0,2h                                   ;
08068002 E2E0     b       80685C6h                                ;
08068004 042B     lsl     r3,r5,10h                               ;
08068006 0000     lsl     r0,r0,0h                                ;
08068008 4806     ldr     r0,=434h                                ;[0d1076, The Reliable Guardian]
0806800A 4281     cmp     r1,r0                                   ;
0806800C DC00     bgt     8068010h                                ;
0806800E E316     b       806863Eh                                ;
08068010 3004     add     r0,4h                                   ;
08068012 4281     cmp     r1,r0                                   ;
08068014 DD00     ble     8068018h                                ;
08068016 E338     b       806868Ah                                ;branch to 0806868A
08068018 3801     sub     r0,1h                                   ;
0806801A 4281     cmp     r1,r0                                   ;
0806801C DA00     bge     8068020h                                ;
0806801E E334     b       806868Ah                                ;branch to 0806868A
08068020 E320     b       8068664h                                ;
08068022 0000     lsl     r0,r0,0h                                ;
08068024 0434     lsl     r4,r6,10h                               ;
08068026 0000     lsl     r0,r0,0h                                ;
08068028 4806     ldr     r0,=522h                                ;[0d1314, Limiter Removal]
0806802A 4281     cmp     r1,r0                                   ;
0806802C D100     bne     8068030h                                ;
0806802E E306     b       806863Eh                                ;
08068030 4281     cmp     r1,r0                                   ;
08068032 DC0D     bgt     8068050h                                ;
08068034 386F     sub     r0,6Fh                                  ;
08068036 4281     cmp     r1,r0                                   ;
08068038 D100     bne     806803Ch                                ;
0806803A E300     b       806863Eh                                ;
0806803C 4281     cmp     r1,r0                                   ;
0806803E DC03     bgt     8068048h                                ;
08068040 3818     sub     r0,18h                                  ;
08068042 E2DD     b       8068600h                                ;
08068044 0522     lsl     r2,r4,14h                               ;
08068046 0000     lsl     r0,r0,0h                                ;
08068048 4800     ldr     r0,=4BBh                                ;[0d1211, Thousand Knives]
0806804A E2B6     b       80685BAh                                ;branch to 080685BA
0806804C 04BB     lsl     r3,r7,12h                               ;
0806804E 0000     lsl     r0,r0,0h                                ;
08068050 20C1     mov     r0,0C1h                                 ;
08068052 00C0     lsl     r0,r0,3h                                ;
08068054 4281     cmp     r1,r0                                   ;
08068056 DC04     bgt     8068062h                                ;
08068058 3803     sub     r0,3h                                   ;
0806805A 4281     cmp     r1,r0                                   ;
0806805C DA0C     bge     8068078h                                ;
0806805E 385A     sub     r0,5Ah                                  ;
08068060 E2AB     b       80685BAh                                ;
08068062 4802     ldr     r0,=60Ah                                ;[0d1546, De-Fusion]
08068064 4281     cmp     r1,r0                                   ;
08068066 D100     bne     806806Ah                                ;if (internal_card_id ≠ DE_FUSION), branch to 0806806A (branch to 0806868A)
08068068 E300     b       806866Ch                                ;else, branch to 0806866C
0806806A E30E     b       806868Ah                                ;branch to 0806868A
0806806C 060A     lsl     r2,r1,18h                               ;
0806806E 0000     lsl     r0,r0,0h                                ;
08068070 6AE8     ldr     r0,[r5,2Ch]                             ;
08068072 3001     add     r0,1h                                   ;
08068074 62E8     str     r0,[r5,2Ch]                             ;increment [r5 + 0x2C]
08068076 E308     b       806868Ah                                ;branch to 0806868A
08068078 6E28     ldr     r0,[r5,60h]                             ;
0806807A 3001     add     r0,1h                                   ;
0806807C 6628     str     r0,[r5,60h]                             ;increment [r5 + 0x60]
0806807E E304     b       806868Ah                                ;branch to 0806868A
08068080 4281     cmp     r1,r0                                   ;
08068082 DB05     blt     8068090h                                ;
08068084 20EF     mov     r0,0EFh                                 ;
08068086 00C0     lsl     r0,r0,3h                                ;r0 = [0d1912, The Winged Dragon of Ra in DM6, unused]
08068088 4281     cmp     r1,r0                                   ;
0806808A DC01     bgt     8068090h                                ;if (r1 > 0d1912 [The Winged Dragon of Ra in DM6, unused]), branch to 08068090
0806808C 2001     mov     r0,1h                                   ;r0 = 1
0806808E E024     b       80680DAh                                ;branch to 080680DA
08068090 1C30     mov     r0,r6                                   ;... That's Token monsters, they shouldn't be in the deck
08068092 4038     and     r0,r7                                   ;
08068094 0080     lsl     r0,r0,2h                                ;
08068096 4906     ldr     r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
08068098 1840     add     r0,r0,r1                                ;
0806809A 6800     ldr     r0,[r0]                                 ;r0 = current_card_stats
0806809C 4018     and     r0,r3                                   ;
0806809E 0D00     lsr     r0,r0,14h                               ;
080680A0 2816     cmp     r0,16h                                  ;
080680A2 D00A     beq     80680BAh                                ;if (card_type == MAGIC), branch to 080680BA
080680A4 2816     cmp     r0,16h                                  ;
080680A6 DC05     bgt     80680B4h                                ;if (card_type == TICKET  || card_type == DIVINE_BEAST), branch to 080680B4
080680A8 2815     cmp     r0,15h                                  ;
080680AA D008     beq     80680BEh                                ;if (card_type == TRAP), branch to 080680BE
080680AC E00B     b       80680C6h                                ;else branch to 080680C6
080680AE 0000     lsl     r0,r0,0h                                ;
080680B0 2B84     cmp     r3,84h                                  ;
080680B2 0883     lsr     r3,r0,2h                                ;
080680B4 2817     cmp     r0,17h                                  ;
080680B6 D004     beq     80680C2h                                ;if (card_type == TICKET), branch to 080680C2
080680B8 E005     b       80680C6h                                ;else branch to 080680C6
080680BA 2007     mov     r0,7h                                   ;...if (card_type == MAGIC), r0 = 7
080680BC E00D     b       80680DAh                                ;branch to 080680DA
080680BE 2008     mov     r0,8h                                   ;...if (card_type == TRAP), r0 = 8
080680C0 E00B     b       80680DAh                                ;branch to 080680DA
080680C2 2009     mov     r0,9h                                   ;...if (card_type == TICKET), r0 = 9
080680C4 E009     b       80680DAh                                ;branch to 080680DA
080680C6 1C30     mov     r0,r6                                   ;...if it is a Monster card
080680C8 4038     and     r0,r7                                   ;
080680CA 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
080680CC 4A06     ldr     r2,=8832B84h                            ;
080680CE 1880     add     r0,r0,r2                                ;r0 = pointer_to_card_stats_array + ((r6 & r7) << 2)
080680D0 6800     ldr     r0,[r0]                                 ;r0 = current_card_stats
080680D2 21C0     mov     r1,0C0h                                 ;
080680D4 0309     lsl     r1,r1,0Ch                               ;
080680D6 4008     and     r0,r1                                   ;r0 & 0xC0000
080680D8 0C80     lsr     r0,r0,12h                               ;r0 >> 18
080680DA 2801     cmp     r0,1h                                   ;
080680DC D011     beq     8068102h                                ;if (monster_category == EFFECT_MONSTER), branch to 08068102
080680DE 2801     cmp     r0,1h                                   ;
080680E0 DC04     bgt     80680ECh                                ;if (monster_category > 1), branch to 080680EC
080680E2 2800     cmp     r0,0h                                   ;
080680E4 D005     beq     80680F2h                                ;if (monster_category == NORMAL_MONSTER), branch to 080680F2
080680E6 E00F     b       8068108h                                ;else branch to 8068108
080680E8 2B84     cmp     r3,84h                                  ;-
080680EA 0883     lsr     r3,r0,2h                                ;-
080680EC 2803     cmp     r0,3h                                   ;
080680EE D004     beq     80680FAh                                ;if (monster_category == RITUAL_MONSTER), branch to 080680FA
080680F0 E00A     b       8068108h                                ;else if (monster_category == FUSION_MONSTER), branch to 8068108
080680F2 6828     ldr     r0,[r5]                                 ;...if (monster_category == NORMAL_MONSTER)
080680F4 3001     add     r0,1h                                   ;
080680F6 6028     str     r0,[r5]                                 ;increment number of Normal Monster cards in the deck stored in IWRAM
080680F8 E006     b       8068108h                                ;branch to 08068108
080680FA 68A8     ldr     r0,[r5,8h]                              ;if (monster_category == RITUAL_MONSTER)
080680FC 3001     add     r0,1h                                   ;
080680FE 60A8     str     r0,[r5,8h]                              ;increments number of Ritual Monster cards in the deck stored in IWRAM
08068100 E002     b       8068108h                                ;branch to 08068108
08068102 6868     ldr     r0,[r5,4h]                              ;...if (monster_category == EFFECT_MONSTER)
08068104 3001     add     r0,1h                                   ;
08068106 6068     str     r0,[r5,4h]                              ;increments number of Effect Monster cards in the deck stored in IWRAM
08068108 1C30     mov     r0,r6                                   ;
0806810A 4038     and     r0,r7                                   ;
0806810C 0040     lsl     r0,r0,1h                                ;r0 = (current_card_id & 0x7FF) << 1
0806810E 4C04     ldr     r4,=8833C80h                            ;r4 = pointer_to_internal_cards_ids_array
08068110 1900     add     r0,r0,r4                                ;r0 = pointer_to_internal_cards_ids_array + ((current_card_id & 0x7FF) << 1)
08068112 8801     ldrh    r1,[r0]                                 ;r1 = internal_card_id 
08068114 4803     ldr     r0,=776h                                ;
08068116 4281     cmp     r1,r0                                   ;
08068118 D106     bne     8068128h                                ;if (internal_card_id ≠ OBELISK_THE_TOURMENTOR), branch to 08068128
0806811A 2003     mov     r0,3h                                   ;r0 = 3
0806811C E031     b       8068182h                                ;branch to 08068182
0806811E 0000     lsl     r0,r0,0h                                ;-
08068120 3C80     sub     r4,80h                                  ;-
08068122 0883     lsr     r3,r0,2h                                ;-
08068124 0776     lsl     r6,r6,1Dh                               ;-
08068126 0000     lsl     r0,r0,0h                                ;-
08068128 4281     cmp     r1,r0                                   ;...if (internal_card_id ≠ OBELISK_THE_TOURMENTOR)
0806812A DB05     blt     8068138h                                ;if (internal_card_id < 1910) [not a God card, not a Token, not an alternate illustration card], branch to 08068138
0806812C 20EF     mov     r0,0EFh                                 ;
0806812E 00C0     lsl     r0,r0,3h                                ;
08068130 4281     cmp     r1,r0                                   ;
08068132 DC01     bgt     8068138h                                ;if (internal_card_id > 1912) [not a God card], branch to 08068138
08068134 2001     mov     r0,1h                                   ;r0 = 1
08068136 E024     b       8068182h                                ;branch to 08068182
08068138 1C30     mov     r0,r6                                   ;...if (internal_card_id < 1910 || internal_card_id > 1912) [not a God card]
0806813A 4038     and     r0,r7                                   ;
0806813C 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
0806813E 4906     ldr     r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
08068140 1840     add     r0,r0,r1                                ;
08068142 6800     ldr     r0,[r0]                                 ;r0 = card_stats
08068144 4018     and     r0,r3                                   ;
08068146 0D00     lsr     r0,r0,14h                               ;
08068148 2816     cmp     r0,16h                                  ;
0806814A D00A     beq     8068162h                                ;if (card_type == MAGIC), branch to 08068162
0806814C 2816     cmp     r0,16h                                  ;
0806814E DC05     bgt     806815Ch                                ;if (card_type == TICKET  || card_type == DIVINE_BEAST), branch to 0806815C
08068150 2815     cmp     r0,15h                                  ;
08068152 D008     beq     8068166h                                ;if (card_type == TRAP), branch to 08068166
08068154 E00B     b       806816Eh                                ;else branch to 0806816E
08068156 0000     lsl     r0,r0,0h                                ;
08068158 2B84     cmp     r3,84h                                  ;
0806815A 0883     lsr     r3,r0,2h                                ;
0806815C 2817     cmp     r0,17h                                  ;
0806815E D004     beq     806816Ah                                ;if (card_type == TICKET), branch to 0806816A
08068160 E005     b       806816Eh                                ;if (card_type == DIVINE_BEAST), branch to 0806816E
08068162 2007     mov     r0,7h                                   ;...if (card_type == MAGIC), r0 = 7
08068164 E00D     b       8068182h                                ;branch to 08068182
08068166 2008     mov     r0,8h                                   ;...if (card_type == TRAP), r0 = 8
08068168 E00B     b       8068182h                                ;branch to 08068182
0806816A 2009     mov     r0,9h                                   ;...if (card_type == TICKET), r0 = 9
0806816C E009     b       8068182h                                ;branch to 08068182
0806816E 1C30     mov     r0,r6                                   ;...if (card_type == DIVINE_BEAST)
08068170 4038     and     r0,r7                                   ;
08068172 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
08068174 4A0C     ldr     r2,=8832B84h                            ;r1 = pointer_to_card_stats_array
08068176 1880     add     r0,r0,r2                                ;
08068178 6800     ldr     r0,[r0]                                 ;r0 = card_stats
0806817A 21C0     mov     r1,0C0h                                 ;
0806817C 0309     lsl     r1,r1,0Ch                               ;
0806817E 4008     and     r0,r1                                   ;
08068180 0C80     lsr     r0,r0,12h                               ;r0 = monster_category
08068182 2803     cmp     r0,3h                                   ;
08068184 D100     bne     8068188h                                ;if (monster_category ≠ RITUAL_MONSTER) [not Obelisk the Tourmentor], branch to 08068188
08068186 E0C8     b       806831Ah                                ;else branch to 0806831A
08068188 1C30     mov     r0,r6                                   ;...if (monster_category ≠ RITUAL_MONSTER) [not Obelisk the Tourmentor]
0806818A 4038     and     r0,r7                                   ;
0806818C 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
0806818E 4C06     ldr     r4,=8832B84h                            ;r1 = pointer_to_card_stats_array
08068190 1900     add     r0,r0,r4                                ;
08068192 6800     ldr     r0,[r0]                                 ;r0 = card_stats
08068194 4018     and     r0,r3                                   ;
08068196 0D00     lsr     r0,r0,14h                               ;r0 = card_type
08068198 2815     cmp     r0,15h                                  ;
0806819A DB0B     blt     80681B4h                                ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 080681B4
0806819C 2817     cmp     r0,17h                                  ;
0806819E DD05     ble     80681ACh                                ;if (card_type ≤ 0x17) [is a Trap, Magic, or Ticket card], branch to 080681AC
080681A0 2818     cmp     r0,18h                                  ;
080681A2 D005     beq     80681B0h                                ;if (card_type == DIVINE_BEAST), branch to 080681B0
080681A4 E006     b       80681B4h                                ;else branch to 080681B4
080681A6 0000     lsl     r0,r0,0h                                ;
080681A8 2B84     cmp     r3,84h                                  ;
080681AA 0883     lsr     r3,r0,2h                                ;
080681AC 2000     mov     r0,0h                                   ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), r0 = 0
080681AE E00B     b       80681C8h                                ;branch to 080681C8
080681B0 200A     mov     r0,0Ah                                  ;...if (card_type == DIVINE_BEAST), r0 = 0xA
080681B2 E009     b       80681C8h                                ;branch to 080681C8
080681B4 1C30     mov     r0,r6                                   ;...if (card_type < 0x15 || card_type > 0x18) [is a non-Divine-Beast Monster card, or is a glitch card]
080681B6 4038     and     r0,r7                                   ;
080681B8 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
080681BA 4909     ldr     r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
080681BC 1840     add     r0,r0,r1                                ;
080681BE 6800     ldr     r0,[r0]                                 ;r0 = card_stats
080681C0 21F0     mov     r1,0F0h                                 ;
080681C2 0549     lsl     r1,r1,15h                               ;
080681C4 4008     and     r0,r1                                   ;
080681C6 0E40     lsr     r0,r0,19h                               ;r0 = monster_level
080681C8 2800     cmp     r0,0h                                   ;
080681CA DA00     bge     80681CEh                                ;if (monster_level > 0), branch to 080681CE
080681CC E0A2     b       8068314h                                ;else branch to 08068314
080681CE 2804     cmp     r0,4h                                   ;...if (monster_level > 0)
080681D0 DD08     ble     80681E4h                                ;if (monster_level ≤ 4), branch to 080681E4
080681D2 2806     cmp     r0,6h                                   ;
080681D4 DD00     ble     80681D8h                                ;else if (monster_level ≤ 6), branch to 080681D8
080681D6 E09D     b       8068314h                                ;else branch to 08068314
080681D8 6D68     ldr     r0,[r5,54h]                             ;...if (monster_level == 5 || monster_level == 6)
080681DA 3001     add     r0,1h                                   ;
080681DC 6568     str     r0,[r5,54h]                             ;increment number of Level 5 and 6 Monster cards in the deck stored in IWRAM
080681DE E09C     b       806831Ah                                ;branch to 0806831A
080681E0 2B84     cmp     r3,84h                                  ;-
080681E2 0883     lsr     r3,r0,2h                                ;-
080681E4 1C30     mov     r0,r6                                   ;...if (monster_level ≤ 4)
080681E6 4038     and     r0,r7                                   ;
080681E8 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
080681EA 4A06     ldr     r2,=8832B84h                            ;r1 = pointer_to_card_stats_array
080681EC 1880     add     r0,r0,r2                                ;
080681EE 6800     ldr     r0,[r0]                                 ;r0 = card_stats
080681F0 4018     and     r0,r3                                   ;
080681F2 0D00     lsr     r0,r0,14h                               ;
080681F4 2815     cmp     r0,15h                                  ;
080681F6 DB0C     blt     8068212h                                ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 08068212
080681F8 2817     cmp     r0,17h                                  ;
080681FA DD05     ble     8068208h                                ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 08068208
080681FC 2818     cmp     r0,18h                                  ;
080681FE D005     beq     806820Ch                                ;if (card_type == DIVINE_BEAST), branch to 0806820C
08068200 E007     b       8068212h                                ;else branch to 08068212
08068202 0000     lsl     r0,r0,0h                                ;-
08068204 2B84     cmp     r3,84h                                  ;-
08068206 0883     lsr     r3,r0,2h                                ;-
08068208 2100     mov     r1,0h                                   ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), r1 = 0
0806820A E00D     b       8068228h                                ;branch to 08068228
0806820C 21FA     mov     r1,0FAh                                 ;...if (card_type == DIVINE_BEAST)
0806820E 0109     lsl     r1,r1,4h                                ;card_ATK = 4000
08068210 E00A     b       8068228h                                ;branch to 08068228
08068212 1C30     mov     r0,r6                                   ;...if (card_type < 0x15) [is a non-Divine-Beast Monster card]
08068214 4038     and     r0,r7                                   ;
08068216 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
08068218 4C0C     ldr     r4,=8832B84h                            ;r1 = pointer_to_card_stats_array
0806821A 1900     add     r0,r0,r4                                ;
0806821C 6801     ldr     r1,[r0]                                 ;r0 = card_stats
0806821E 0389     lsl     r1,r1,0Eh                               ;
08068220 0DC9     lsr     r1,r1,17h                               ;
08068222 0088     lsl     r0,r1,2h                                ;
08068224 1840     add     r0,r0,r1                                ;
08068226 0041     lsl     r1,r0,1h                                ;r1 = DWORD(((r1 << 14 >> 23 << 2) + (r1 << 14 >> 23)) << 1) [card_ATK]
08068228 6E68     ldr     r0,[r5,64h]                             ;r0 = [r5 + 0x64]
0806822A 4288     cmp     r0,r1                                   ;
0806822C DA21     bge     8068272h                                ;if ([r5 + 0x64] ≥ card_ATK), branch to 08068272
0806822E 1C30     mov     r0,r6                                   ;
08068230 4038     and     r0,r7                                   ;
08068232 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
08068234 4905     ldr     r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
08068236 1840     add     r0,r0,r1                                ;
08068238 6800     ldr     r0,[r0]                                 ;r0 = card_stats
0806823A 4018     and     r0,r3                                   ;
0806823C 0D00     lsr     r0,r0,14h                               ;r0 = card_type 
0806823E 2815     cmp     r0,15h                                  ;
08068240 DB0B     blt     806825Ah                                ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 0806825A
08068242 2817     cmp     r0,17h                                  ;
08068244 DD04     ble     8068250h                                ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 08068250
08068246 2818     cmp     r0,18h                                  ;
08068248 D004     beq     8068254h                                ;if (card_type == DIVINE_BEAST), branch to 08068254
0806824A E006     b       806825Ah                                ;else branch to 0806825A
0806824C 2B84     cmp     r3,84h                                  ;
0806824E 0883     lsr     r3,r0,2h                                ;
08068250 2000     mov     r0,0h                                   ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), r0 = 0
08068252 E00D     b       8068270h                                ;branch to 08068270
08068254 20FA     mov     r0,0FAh                                 ;
08068256 0100     lsl     r0,r0,4h                                ;card_ATK = 4000
08068258 E00A     b       8068270h                                ;branch to 08068270
0806825A 1C30     mov     r0,r6                                   ;
0806825C 4038     and     r0,r7                                   ;
0806825E 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
08068260 4A0B     ldr     r2,=8832B84h                            ;r1 = pointer_to_card_stats_array
08068262 1880     add     r0,r0,r2                                ;
08068264 6801     ldr     r1,[r0]                                 ;r0 = card_stats
08068266 0389     lsl     r1,r1,0Eh                               ;
08068268 0DC9     lsr     r1,r1,17h                               ;
0806826A 0088     lsl     r0,r1,2h                                ;
0806826C 1840     add     r0,r0,r1                                ;
0806826E 0040     lsl     r0,r0,1h                                ;r0 = DWORD(((r1 << 14 >> 23 << 2) + (r1 << 14 >> 23)) << 1) [card_ATK]
08068270 6668     str     r0,[r5,64h]                             ;store card_ATK into [r5 + 0x64]
08068272 1C30     mov     r0,r6                                   ;
08068274 4038     and     r0,r7                                   ;
08068276 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
08068278 4C05     ldr     r4,=8832B84h                            ;r4 = pointer_to_card_stats_array
0806827A 1900     add     r0,r0,r4                                ;
0806827C 6800     ldr     r0,[r0]                                 ;r0 = card_stats
0806827E 4018     and     r0,r3                                   ;
08068280 0D00     lsr     r0,r0,14h                               ;
08068282 2815     cmp     r0,15h                                  ;
08068284 DB0B     blt     806829Eh                                ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 0806829E
08068286 2817     cmp     r0,17h                                  ;
08068288 DD04     ble     8068294h                                ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 08068294
0806828A 2818     cmp     r0,18h                                  ;
0806828C D004     beq     8068298h                                ;if (card_type == DIVINE_BEAST), branch to 08068298
0806828E E006     b       806829Eh                                ;else branch to 0806829E
08068290 2B84     cmp     r3,84h                                  ;
08068292 0883     lsr     r3,r0,2h                                ;
08068294 2100     mov     r1,0h                                   ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), card_DEF = 0
08068296 E00E     b       80682B6h                                ;branch to 080682B6
08068298 21FA     mov     r1,0FAh                                 ;...if (card_type == DIVINE_BEAST)
0806829A 0109     lsl     r1,r1,4h                                ;card_DEF = 4000
0806829C E00B     b       80682B6h                                ;branch to 080682B6
0806829E 1C30     mov     r0,r6                                   ;...if (card_type < 0x15) [is a non-Divine-Beast Monster card]
080682A0 4038     and     r0,r7                                   ;
080682A2 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
080682A4 490D     ldr     r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
080682A6 1840     add     r0,r0,r1                                ;
080682A8 6801     ldr     r1,[r0]                                 ;r1 = card_stats
080682AA 4A0D     ldr     r2,=1FFh                                ;
080682AC 1C10     mov     r0,r2                                   ;
080682AE 4001     and     r1,r0                                   ;
080682B0 0088     lsl     r0,r1,2h                                ;
080682B2 1840     add     r0,r0,r1                                ;
080682B4 0041     lsl     r1,r0,1h                                ;r1 = (card_stats & 511 × 10) [card_DEF]
080682B6 6EA8     ldr     r0,[r5,68h]                             ;
080682B8 4288     cmp     r0,r1                                   ;
080682BA DA2E     bge     806831Ah                                ;if ([r5 + 0x68] > card_DEF), branch to 0806831A
080682BC 1C30     mov     r0,r6                                   ;
080682BE 4038     and     r0,r7                                   ;
080682C0 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
080682C2 4C06     ldr     r4,=8832B84h                            ;r4 = pointer_to_card_stats_array
080682C4 1900     add     r0,r0,r4                                ;
080682C6 6800     ldr     r0,[r0]                                 ;r0 = card_stats
080682C8 4018     and     r0,r3                                   ;
080682CA 0D00     lsr     r0,r0,14h                               ;
080682CC 2815     cmp     r0,15h                                  ;
080682CE DB0E     blt     80682EEh                                ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 080682EE
080682D0 2817     cmp     r0,17h                                  ;
080682D2 DD07     ble     80682E4h                                ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 080682E4
080682D4 2818     cmp     r0,18h                                  ;
080682D6 D007     beq     80682E8h                                ;if (card_type == DIVINE_BEAST), branch to 080682E8
080682D8 E009     b       80682EEh                                ;else branch to 080682EE
080682DA 0000     lsl     r0,r0,0h                                ;-
080682DC 2B84     cmp     r3,84h                                  ;-
080682DE 0883     lsr     r3,r0,2h                                ;-
080682E0 01FF     lsl     r7,r7,7h                                ;-
080682E2 0000     lsl     r0,r0,0h                                ;-
080682E4 2000     mov     r0,0h                                   ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), card_DEF = 0
080682E6 E00E     b       8068306h                                ;branch to 08068306
080682E8 20FA     mov     r0,0FAh                                 ;...if (card_type == DIVINE_BEAST)
080682EA 0100     lsl     r0,r0,4h                                ;card_DEF = 4000
080682EC E00B     b       8068306h                                ;branch to 08068306
080682EE 1C30     mov     r0,r6                                   ;...if (card_type < 0x15) [is a non-Divine-Beast Monster card]
080682F0 4038     and     r0,r7                                   ;
080682F2 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
080682F4 4905     ldr     r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
080682F6 1840     add     r0,r0,r1                                ;
080682F8 6801     ldr     r1,[r0]                                 ;r1 = card_stats
080682FA 4A05     ldr     r2,=1FFh                                ;
080682FC 1C10     mov     r0,r2                                   ;
080682FE 4001     and     r1,r0                                   ;
08068300 0088     lsl     r0,r1,2h                                ;
08068302 1840     add     r0,r0,r1                                ;
08068304 0040     lsl     r0,r0,1h                                ;r1 = (card_stats & 511 × 10) [card_DEF]
08068306 66A8     str     r0,[r5,68h]                             ;store card_DEF into [r5 + 0x68]
08068308 E007     b       806831Ah                                ;branch to 0806831A
0806830A 0000     lsl     r0,r0,0h                                ;-
0806830C 2B84     cmp     r3,84h                                  ;-
0806830E 0883     lsr     r3,r0,2h                                ;-
08068310 01FF     lsl     r7,r7,7h                                ;-
08068312 0000     lsl     r0,r0,0h                                ;-
08068314 6DA8     ldr     r0,[r5,58h]                             ;
08068316 3001     add     r0,1h                                   ;
08068318 65A8     str     r0,[r5,58h]                             ;increment [r5 + 0x58]
0806831A 1C30     mov     r0,r6                                   ;
0806831C 4038     and     r0,r7                                   ;
0806831E 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
08068320 4C05     ldr     r4,=8832B84h                            ;r4 = pointer_to_card_stats_array
08068322 1900     add     r0,r0,r4                                ;
08068324 6800     ldr     r0,[r0]                                 ;r0 = card_stats
08068326 4018     and     r0,r3                                   ;
08068328 0D00     lsr     r0,r0,14h                               ;
0806832A 2815     cmp     r0,15h                                  ;
0806832C DB0B     blt     8068346h                                ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 08068346
0806832E 2817     cmp     r0,17h                                  ;
08068330 DD04     ble     806833Ch                                ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 0806833C
08068332 2818     cmp     r0,18h                                  ;
08068334 D004     beq     8068340h                                ;if (card_type == DIVINE_BEAST), branch to 08068340
08068336 E006     b       8068346h                                ;else branch to 08068346
08068338 2B84     cmp     r3,84h                                  ;
0806833A 0883     lsr     r3,r0,2h                                ;
0806833C 2100     mov     r1,0h                                   ;...if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), card_DEF = 0
0806833E E00D     b       806835Ch                                ;branch to 0806835C
08068340 21FA     mov     r1,0FAh                                 ;...if (card_type == DIVINE_BEAST)
08068342 0109     lsl     r1,r1,4h                                ;card_DEF = 4000
08068344 E00A     b       806835Ch                                ;branch to 0806835C
08068346 1C30     mov     r0,r6                                   ;...if (card_type < 0x15) [is a non-Divine-Beast Monster card]
08068348 4038     and     r0,r7                                   ;
0806834A 0080     lsl     r0,r0,2h                                ;r0 = (card_id & 0x7FF) << 2
0806834C 490C     ldr     r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
0806834E 1840     add     r0,r0,r1                                ;
08068350 6801     ldr     r1,[r0]                                 ;r1 = card_stats
08068352 0389     lsl     r1,r1,0Eh                               ;
08068354 0DC9     lsr     r1,r1,17h                               ;
08068356 0088     lsl     r0,r1,2h                                ;
08068358 1840     add     r0,r0,r1                                ;
0806835A 0041     lsl     r1,r0,1h                                ;
0806835C 6EE8     ldr     r0,[r5,6Ch]                             ;
0806835E 4288     cmp     r0,r1                                   ;
08068360 DA21     bge     80683A6h                                ;
08068362 1C30     mov     r0,r6                                   ;
08068364 4038     and     r0,r7                                   ;
08068366 0080     lsl     r0,r0,2h                                ;
08068368 4A05     ldr     r2,=8832B84h                            ;r2 = pointer_to_card_stats_array
0806836A 1880     add     r0,r0,r2                                ;
0806836C 6800     ldr     r0,[r0]                                 ;
0806836E 4018     and     r0,r3                                   ;
08068370 0D00     lsr     r0,r0,14h                               ;
08068372 2815     cmp     r0,15h                                  ;
08068374 DB0B     blt     806838Eh                                ;if (card_type < 0x15) [is a non-Divine-Beast Monster card], branch to 0806838E
08068376 2817     cmp     r0,17h                                  ;
08068378 DD04     ble     8068384h                                ;if (card_type == TRAP || card_type == MAGIC || card_type == TICKET), branch to 08068384
0806837A 2818     cmp     r0,18h                                  ;
0806837C D004     beq     8068388h                                ;if (card_type == DIVINE_BEAST), branch to 08068388
0806837E E006     b       806838Eh                                ;else branch to 0806838E
08068380 2B84     cmp     r3,84h                                  ;
08068382 0883     lsr     r3,r0,2h                                ;
08068384 2000     mov     r0,0h                                   ;
08068386 E00D     b       80683A4h                                ;
08068388 20FA     mov     r0,0FAh                                 ;
0806838A 0100     lsl     r0,r0,4h                                ;
0806838C E00A     b       80683A4h                                ;
0806838E 1C30     mov     r0,r6                                   ;
08068390 4038     and     r0,r7                                   ;
08068392 0080     lsl     r0,r0,2h                                ;
08068394 4C0B     ldr     r4,=8832B84h                            ;r4 = pointer_to_card_stats_array
08068396 1900     add     r0,r0,r4                                ;
08068398 6801     ldr     r1,[r0]                                 ;
0806839A 0389     lsl     r1,r1,0Eh                               ;
0806839C 0DC9     lsr     r1,r1,17h                               ;
0806839E 0088     lsl     r0,r1,2h                                ;
080683A0 1840     add     r0,r0,r1                                ;
080683A2 0040     lsl     r0,r0,1h                                ;
080683A4 66E8     str     r0,[r5,6Ch]                             ;
080683A6 1C30     mov     r0,r6                                   ;
080683A8 4038     and     r0,r7                                   ;
080683AA 0080     lsl     r0,r0,2h                                ;
080683AC 4905     ldr     r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
080683AE 1840     add     r0,r0,r1                                ;
080683B0 6800     ldr     r0,[r0]                                 ;
080683B2 4018     and     r0,r3                                   ;
080683B4 0D00     lsr     r0,r0,14h                               ;
080683B6 2815     cmp     r0,15h                                  ;
080683B8 DB0B     blt     80683D2h                                ;
080683BA 2817     cmp     r0,17h                                  ;
080683BC DD04     ble     80683C8h                                ;
080683BE 2818     cmp     r0,18h                                  ;
080683C0 D004     beq     80683CCh                                ;
080683C2 E006     b       80683D2h                                ;
080683C4 2B84     cmp     r3,84h                                  ;
080683C6 0883     lsr     r3,r0,2h                                ;
080683C8 2100     mov     r1,0h                                   ;
080683CA E00E     b       80683EAh                                ;
080683CC 21FA     mov     r1,0FAh                                 ;
080683CE 0109     lsl     r1,r1,4h                                ;
080683D0 E00B     b       80683EAh                                ;
080683D2 1C30     mov     r0,r6                                   ;
080683D4 4038     and     r0,r7                                   ;
080683D6 0080     lsl     r0,r0,2h                                ;
080683D8 4A0D     ldr     r2,=8832B84h                            ;r2 = pointer_to_card_stats_array
080683DA 1880     add     r0,r0,r2                                ;
080683DC 6801     ldr     r1,[r0]                                 ;
080683DE 4C0D     ldr     r4,=1FFh                                ;
080683E0 1C20     mov     r0,r4                                   ;
080683E2 4001     and     r1,r0                                   ;
080683E4 0088     lsl     r0,r1,2h                                ;
080683E6 1840     add     r0,r0,r1                                ;
080683E8 0041     lsl     r1,r0,1h                                ;r1 = card_DEF
080683EA 6F28     ldr     r0,[r5,70h]                             ;
080683EC 4288     cmp     r0,r1                                   ;
080683EE DA25     bge     806843Ch                                ;if ([r5,70h] > card_DEF), branch to 006843C
080683F0 1C30     mov     r0,r6                                   ;
080683F2 4038     and     r0,r7                                   ;
080683F4 0080     lsl     r0,r0,2h                                ;
080683F6 4906     ldr     r1,=8832B84h                            ;r1 = pointer_to_card_stats_array
080683F8 1840     add     r0,r0,r1                                ;
080683FA 6800     ldr     r0,[r0]                                 ;
080683FC 4018     and     r0,r3                                   ;
080683FE 0D00     lsr     r0,r0,14h                               ;
08068400 2815     cmp     r0,15h                                  ;
08068402 DB0E     blt     8068422h                                ;
08068404 2817     cmp     r0,17h                                  ;
08068406 DD07     ble     8068418h                                ;
08068408 2818     cmp     r0,18h                                  ;
0806840A D007     beq     806841Ch                                ;
0806840C E009     b       8068422h                                ;
0806840E 0000     lsl     r0,r0,0h                                ;-
08068410 2B84     cmp     r3,84h                                  ;-
08068412 0883     lsr     r3,r0,2h                                ;-
08068414 01FF     lsl     r7,r7,7h                                ;-
08068416 0000     lsl     r0,r0,0h                                ;-
08068418 2000     mov     r0,0h                                   ;
0806841A E00E     b       806843Ah                                ;
0806841C 20FA     mov     r0,0FAh                                 ;
0806841E 0100     lsl     r0,r0,4h                                ;
08068420 E00B     b       806843Ah                                ;
08068422 1C30     mov     r0,r6                                   ;
08068424 4038     and     r0,r7                                   ;
08068426 0080     lsl     r0,r0,2h                                ;
08068428 4A21     ldr     r2,=8832B84h                            ;r2 = pointer_to_card_stats_array
0806842A 1880     add     r0,r0,r2                                ;
0806842C 6801     ldr     r1,[r0]                                 ;
0806842E 4C21     ldr     r4,=1FFh                                ;
08068430 1C20     mov     r0,r4                                   ;
08068432 4001     and     r1,r0                                   ;
08068434 0088     lsl     r0,r1,2h                                ;
08068436 1840     add     r0,r0,r1                                ;
08068438 0040     lsl     r0,r0,1h                                ;r0 = card_DEF
0806843A 6728     str     r0,[r5,70h]                             ;store card_DEF into [r5 + 0x70]
0806843C 1C30     mov     r0,r6                                   ;
0806843E 4038     and     r0,r7                                   ;
08068440 0040     lsl     r0,r0,1h                                ;
08068442 491D     ldr     r1,=8833C80h                            ;r1 = pointer_to_internal_cards_ids_array
08068444 1844     add     r4,r0,r1                                ;
08068446 8820     ldrh    r0,[r4]                                 ;r0 = internal_card_id
08068448 2101     mov     r1,1h                                   ;r1 = 1
0806844A 9300     str     r3,[sp]                                 ;
0806844C F7A8FB38 bl      8010AC0h                                ;call 08010AC0
08068450 9B00     ldr     r3,[sp]                                 ;
08068452 2800     cmp     r0,0h                                   ;
08068454 D106     bne     8068464h                                ;
08068456 8820     ldrh    r0,[r4]                                 ;
08068458 2100     mov     r1,0h                                   ;
0806845A F7A8FB31 bl      8010AC0h                                ;call 08010AC0
0806845E 9B00     ldr     r3,[sp]                                 ;
08068460 2800     cmp     r0,0h                                   ;
08068462 D002     beq     806846Ah                                ;
08068464 6D28     ldr     r0,[r5,50h]                             ;
08068466 3001     add     r0,1h                                   ;
08068468 6528     str     r0,[r5,50h]                             ;increment [r5 + 0x50]
0806846A 403E     and     r6,r7                                   ;
0806846C 0070     lsl     r0,r6,1h                                ;
0806846E 4A12     ldr     r2,=8833C80h                            ;r2 = pointer_to_internal_cards_ids_array
08068470 1880     add     r0,r0,r2                                ;
08068472 8801     ldrh    r1,[r0]                                 ;r1 = internal_card_id
08068474 4811     ldr     r0,=229h                                ;r0 = 553 [Lava Battleguard]
08068476 4281     cmp     r1,r0                                   ;
08068478 D100     bne     806847Ch                                ;if (internal_card_id ≠ Lava Battleguard), branch to 0806847C
0806847A E0E0     b       806863Eh                                ;else branch to 0806863E
0806847C 4281     cmp     r1,r0                                   ;
0806847E DC6F     bgt     8068560h                                ;if (internal_card_id > 553), branch to 08068560
08068480 389C     sub     r0,9Ch                                  ;r0 = 397 [Ooguchi]
08068482 4281     cmp     r1,r0                                   ;
08068484 DC38     bgt     80684F8h                                ;
08068486 3801     sub     r0,1h                                   ;r0 = 396 [Leghul]
08068488 4281     cmp     r1,r0                                   ;
0806848A DB00     blt     806848Eh                                ;
0806848C E0E2     b       8068654h                                ;
0806848E 2953     cmp     r1,53h                                  ;83 [Reaper of the Cards]
08068490 D100     bne     8068494h                                ;
08068492 E0E7     b       8068664h                                ;
08068494 2953     cmp     r1,53h                                  ;
08068496 DC17     bgt     80684C8h                                ;
08068498 2914     cmp     r1,14h                                  ;20 [Exodia the Forbidden One]
0806849A DC11     bgt     80684C0h                                ;
0806849C 2910     cmp     r1,10h                                  ;16 [Right Leg of the Forbidden One]
0806849E DB00     blt     80684A2h                                ;
080684A0 E0F0     b       8068684h                                ;
080684A2 290B     cmp     r1,0Bh                                  ;11 [Swamp Battleguard]
080684A4 D100     bne     80684A8h                                ;
080684A6 E0CA     b       806863Eh                                ;
080684A8 290F     cmp     r1,0Fh                                  ;15 [Time Wizard]
080684AA D100     bne     80684AEh                                ;
080684AC E0D6     b       806865Ch                                ;
080684AE E0EC     b       806868Ah                                ;branch to 0806868A
080684B0 2B84     cmp     r3,84h                                  ;-
080684B2 0883     lsr     r3,r0,2h                                ;-
080684B4 01FF     lsl     r7,r7,7h                                ;-
080684B6 0000     lsl     r0,r0,0h                                ;-
080684B8 3C80     sub     r4,80h                                  ;
080684BA 0883     lsr     r3,r0,2h                                ;
080684BC 0229     lsl     r1,r5,8h                                ;
080684BE 0000     lsl     r0,r0,0h                                ;
080684C0 292F     cmp     r1,2Fh                                  ;47 [Sangan]
080684C2 D100     bne     80684C6h                                ;
080684C4 E0DA     b       806867Ch                                ;
080684C6 E0E0     b       806868Ah                                ;branch to 0806868A
080684C8 4806     ldr     r0,=16Fh                                ;r0 = 367 [Shadow Ghoul]
080684CA 4281     cmp     r1,r0                                   ;
080684CC D100     bne     80684D0h                                ;
080684CE E0B6     b       806863Eh                                ;
080684D0 4281     cmp     r1,r0                                   ;
080684D2 DC09     bgt     80684E8h                                ;
080684D4 29DF     cmp     r1,0DFh                                 ;223 [Trap Master]
080684D6 D100     bne     80684DAh                                ;
080684D8 E0C4     b       8068664h                                ;
080684DA 29EA     cmp     r1,0EAh                                 ;234 [Wodan the Resident of the Forest]
080684DC D100     bne     80684E0h                                ;
080684DE E0AE     b       806863Eh                                ;
080684E0 E0D3     b       806868Ah                                ;branch to 0806868A
080684E2 0000     lsl     r0,r0,0h                                ;
080684E4 016F     lsl     r7,r5,5h                                ;
080684E6 0000     lsl     r0,r0,0h                                ;
080684E8 4802     ldr     r0,=181h                                ;r0 = 385 [Harpie's Pet Dragon]
080684EA 4281     cmp     r1,r0                                   ;
080684EC D100     bne     80684F0h                                ;
080684EE E0A6     b       806863Eh                                ;
080684F0 3001     add     r0,1h                                   ;
080684F2 E07C     b       80685EEh                                ;
080684F4 0181     lsl     r1,r0,6h                                ;
080684F6 0000     lsl     r0,r0,0h                                ;
080684F8 20FA     mov     r0,0FAh                                 ;
080684FA 0040     lsl     r0,r0,1h                                ;r0 = 500 [Man-Eater Bug]
080684FC 4281     cmp     r1,r0                                   ;
080684FE D100     bne     8068502h                                ;
08068500 E0AC     b       806865Ch                                ;
08068502 4281     cmp     r1,r0                                   ;
08068504 DC15     bgt     8068532h                                ;
08068506 380D     sub     r0,0Dh                                  ;r0 = 487 [Rainbow Flower]
08068508 4281     cmp     r1,r0                                   ;
0806850A D100     bne     806850Eh                                ;
0806850C E0A2     b       8068654h                                ;
0806850E 4281     cmp     r1,r0                                   ;
08068510 DC05     bgt     806851Eh                                ;
08068512 3851     sub     r0,51h                                  ;r0 = 406 [Machine King]
08068514 4281     cmp     r1,r0                                   ;
08068516 D100     bne     806851Ah                                ;
08068518 E091     b       806863Eh                                ;
0806851A 300F     add     r0,0Fh                                  ;r0 = 421 [Jinzo #7]
0806851C E067     b       80685EEh                                ;
0806851E 20F6     mov     r0,0F6h                                 ;
08068520 0040     lsl     r0,r0,1h                                ;r0 = 492 [Maha Vailo]
08068522 4281     cmp     r1,r0                                   ;
08068524 DD00     ble     8068528h                                ;
08068526 E0B0     b       806868Ah                                ;branch to 0806868A
08068528 3801     sub     r0,1h                                   ;
0806852A 4281     cmp     r1,r0                                   ;
0806852C DA00     bge     8068530h                                ;
0806852E E0AC     b       806868Ah                                ;branch to 0806868A
08068530 E085     b       806863Eh                                ;
08068532 4806     ldr     r0,=20Eh                                ;r0 = 526 [Milus Radiant]
08068534 4281     cmp     r1,r0                                   ;
08068536 D100     bne     806853Ah                                ;
08068538 E081     b       806863Eh                                ;
0806853A 4281     cmp     r1,r0                                   ;
0806853C DC08     bgt     8068550h                                ;
0806853E 380B     sub     r0,0Bh                                  ;r0 = 515 [Muka Muka]
08068540 4281     cmp     r1,r0                                   ;
08068542 D100     bne     8068546h                                ;
08068544 E07B     b       806863Eh                                ;
08068546 3008     add     r0,8h                                   ;r0 = 523 [Star Boy]
08068548 E03D     b       80685C6h                                ;
0806854A 0000     lsl     r0,r0,0h                                ;-
0806854C 020E     lsl     r6,r1,8h                                ;-
0806854E 0000     lsl     r0,r0,0h                                ;-
08068550 4802     ldr     r0,=21Bh                                ;r0 = 539 [Skelengel]
08068552 4281     cmp     r1,r0                                   ;
08068554 D100     bne     8068558h                                ;
08068556 E08D     b       8068674h                                ;
08068558 3001     add     r0,1h                                   ;r0 = 540 [Hane-Hane]
0806855A E02E     b       80685BAh                                ;
0806855C 021B     lsl     r3,r3,8h                                ;
0806855E 0000     lsl     r0,r0,0h                                ;
08068560 480A     ldr     r0,=2FEh                                ;r0 = 766 [Blue-Eyes Toon Dragon]
08068562 4281     cmp     r1,r0                                   ;
08068564 D100     bne     8068568h                                ;
08068566 E075     b       8068654h                                ;
08068568 4281     cmp     r1,r0                                   ;
0806856A DC31     bgt     80685D0h                                ;
0806856C 388B     sub     r0,8Bh                                  ;
0806856E 4281     cmp     r1,r0                                   ;
08068570 D065     beq     806863Eh                                ;
08068572 4281     cmp     r1,r0                                   ;
08068574 DC12     bgt     806859Ch                                ;
08068576 381A     sub     r0,1Ah                                  ;
08068578 4281     cmp     r1,r0                                   ;
0806857A D06F     beq     806865Ch                                ;
0806857C 4281     cmp     r1,r0                                   ;
0806857E DC07     bgt     8068590h                                ;
08068580 381C     sub     r0,1Ch                                  ;
08068582 4281     cmp     r1,r0                                   ;
08068584 D100     bne     8068588h                                ;
08068586 E079     b       806867Ch                                ;
08068588 3018     add     r0,18h                                  ;
0806858A E01C     b       80685C6h                                ;
0806858C 02FE     lsl     r6,r7,0Bh                               ;
0806858E 0000     lsl     r0,r0,0h                                ;
08068590 2098     mov     r0,98h                                  ;
08068592 0080     lsl     r0,r0,2h                                ;
08068594 4281     cmp     r1,r0                                   ;
08068596 D052     beq     806863Eh                                ;
08068598 3007     add     r0,7h                                   ;
0806859A E014     b       80685C6h                                ;
0806859C 20B6     mov     r0,0B6h                                 ;
0806859E 0080     lsl     r0,r0,2h                                ;
080685A0 4281     cmp     r1,r0                                   ;
080685A2 DC04     bgt     80685AEh                                ;
080685A4 3802     sub     r0,2h                                   ;
080685A6 4281     cmp     r1,r0                                   ;
080685A8 DA54     bge     8068654h                                ;
080685AA 385C     sub     r0,5Ch                                  ;
080685AC E01F     b       80685EEh                                ;
080685AE 4804     ldr     r0,=2F7h                                ;r0 = 759 [Dark Magician Girl]
080685B0 4281     cmp     r1,r0                                   ;
080685B2 D044     beq     806863Eh                                ;
080685B4 4281     cmp     r1,r0                                   ;
080685B6 DC05     bgt     80685C4h                                ;
080685B8 3811     sub     r0,11h                                  ;
080685BA 4281     cmp     r1,r0                                   ;
080685BC D04E     beq     806865Ch                                ;
080685BE E064     b       806868Ah                                ;branch to 0806868A
080685C0 02F7     lsl     r7,r6,0Bh                               ;
080685C2 0000     lsl     r0,r0,0h                                ;
080685C4 4801     ldr     r0,=2F9h                                ;r0 = 761 [Insect Queen]
080685C6 4281     cmp     r1,r0                                   ;
080685C8 D039     beq     806863Eh                                ;
080685CA E05E     b       806868Ah                                ;branch to 0806868A
080685CC 02F9     lsl     r1,r7,0Bh                               ;
080685CE 0000     lsl     r0,r0,0h                                ;
080685D0 4808     ldr     r0,=45Ch                                ;r0 = 1116 [Spear Cretin]
080685D2 4281     cmp     r1,r0                                   ;
080685D4 D04A     beq     806866Ch                                ;
080685D6 4281     cmp     r1,r0                                   ;
080685D8 DC18     bgt     806860Ch                                ;
080685DA 3808     sub     r0,8h                                   ;
080685DC 4281     cmp     r1,r0                                   ;
080685DE D04D     beq     806867Ch                                ;
080685E0 4281     cmp     r1,r0                                   ;
080685E2 DC09     bgt     80685F8h                                ;
080685E4 20CA     mov     r0,0CAh                                 ;
080685E6 0080     lsl     r0,r0,2h                                ;
080685E8 4281     cmp     r1,r0                                   ;
080685EA D028     beq     806863Eh                                ;
080685EC 3004     add     r0,4h                                   ;
080685EE 4281     cmp     r1,r0                                   ;
080685F0 D030     beq     8068654h                                ;
080685F2 E04A     b       806868Ah                                ;branch to 0806868A
080685F4 045C     lsl     r4,r3,11h                               ;
080685F6 0000     lsl     r0,r0,0h                                ;
080685F8 4803     ldr     r0,=456h                                ;r0 = 1110 [UFO Turtle]
080685FA 4281     cmp     r1,r0                                   ;
080685FC D03E     beq     806867Ch                                ;
080685FE 3005     add     r0,5h                                   ;
08068600 4281     cmp     r1,r0                                   ;
08068602 D023     beq     806864Ch                                ;
08068604 E041     b       806868Ah                                ;branch to 0806868A
08068606 0000     lsl     r0,r0,0h                                ;
08068608 0456     lsl     r6,r2,11h                               ;
0806860A 0000     lsl     r0,r0,0h                                ;
0806860C 208C     mov     r0,8Ch                                  ;
0806860E 00C0     lsl     r0,r0,3h                                ;
08068610 4281     cmp     r1,r0                                   ;
08068612 DC04     bgt     806861Eh                                ;
08068614 3801     sub     r0,1h                                   ;
08068616 4281     cmp     r1,r0                                   ;
08068618 DA30     bge     806867Ch                                ;
0806861A 3802     sub     r0,2h                                   ;
0806861C E005     b       806862Ah                                ;
0806861E 4804     ldr     r0,=5ECh                                ;r0 = 1516 [Spirit of Flames]
08068620 4281     cmp     r1,r0                                   ;
08068622 D00C     beq     806863Eh                                ;
08068624 4281     cmp     r1,r0                                   ;
08068626 DC07     bgt     8068638h                                ;
08068628 4802     ldr     r0,=463h                                ;r0 = 1123 [Mystic Tomato]
0806862A 4281     cmp     r1,r0                                   ;
0806862C D026     beq     806867Ch                                ;
0806862E E02C     b       806868Ah                                ;branch to 0806868A
08068630 05EC     lsl     r4,r5,17h                               ;
08068632 0000     lsl     r0,r0,0h                                ;
08068634 0463     lsl     r3,r4,11h                               ;
08068636 0000     lsl     r0,r0,0h                                ;
08068638 4803     ldr     r0,=5EEh                                ;r0 = 1518 [The Rock Spirit]
0806863A 4281     cmp     r1,r0                                   ;
0806863C D125     bne     806868Ah                                ;if (internal_card_id ≠ The Rock Spirit), branch to 0806868A
0806863E 6B28     ldr     r0,[r5,30h]                             ;
08068640 3001     add     r0,1h                                   ;
08068642 6328     str     r0,[r5,30h]                             ;increment [r5 + 0x30]
08068644 E021     b       806868Ah                                ;branch to 0806868A
08068646 0000     lsl     r0,r0,0h                                ;-
08068648 05EE     lsl     r6,r5,17h                               ;-
0806864A 0000     lsl     r0,r0,0h                                ;-
0806864C 6B68     ldr     r0,[r5,34h]                             ;
0806864E 3001     add     r0,1h                                   ;
08068650 6368     str     r0,[r5,34h]                             ;increment [r5 + 0x34]
08068652 E01A     b       806868Ah                                ;branch to 0806868A
08068654 6BA8     ldr     r0,[r5,38h]                             ;
08068656 3001     add     r0,1h                                   ;
08068658 63A8     str     r0,[r5,38h]                             ;increment [r5 + 0x38]
0806865A E016     b       806868Ah                                ;branch to 0806868A
0806865C 6BE8     ldr     r0,[r5,3Ch]                             ;
0806865E 3001     add     r0,1h                                   ;
08068660 63E8     str     r0,[r5,3Ch]                             ;increment [r5 + 0x3C]
08068662 E012     b       806868Ah                                ;branch to 0806868A
08068664 6C28     ldr     r0,[r5,40h]                             ;
08068666 3001     add     r0,1h                                   ;
08068668 6428     str     r0,[r5,40h]                             ;increment [r5 + 0x40]
0806866A E00E     b       806868Ah                                ;branch to 0806868A
0806866C 6C68     ldr     r0,[r5,44h]                             ;
0806866E 3001     add     r0,1h                                   ;
08068670 6468     str     r0,[r5,44h]                             ;increment [r5 + 0x44]
08068672 E00A     b       806868Ah                                ;branch to 0806868A
08068674 6CA8     ldr     r0,[r5,48h]                             ;
08068676 3001     add     r0,1h                                   ;
08068678 64A8     str     r0,[r5,48h]                             ;increment [r5 + 0x48]
0806867A E006     b       806868Ah                                ;branch to 0806868A
0806867C 6CE8     ldr     r0,[r5,4Ch]                             ;
0806867E 3001     add     r0,1h                                   ;
08068680 64E8     str     r0,[r5,4Ch]                             ;increment [r5 + 0x4C]
08068682 E002     b       806868Ah                                ;branch to 0806868A
08068684 6DE8     ldr     r0,[r5,5Ch]                             ;
08068686 3001     add     r0,1h                                   ;
08068688 65E8     str     r0,[r5,5Ch]                             ;increment [r5 + 0x5C]
0806868A 2401     mov     r4,1h                                   ;
0806868C 44A0     add     r8,r4                                   ;r8++ /*(the most inefficient increment in the world)*/
0806868E 4913     ldr     r1,=2018FE4h                            ;
08068690 2001     mov     r0,1h                                   ;
08068692 464A     mov     r2,r9                                   ;
08068694 4010     and     r0,r2                                   ;
08068696 4A12     ldr     r2,=0D64h                               ;
08068698 4350     mul     r0,r2                                   ;
0806869A 1840     add     r0,r0,r1                                ;
0806869C 78C0     ldrb    r0,[r0,3h]                              ;
0806869E 4580     cmp     r8,r0                                   ;
080686A0 DA01     bge     80686A6h                                ;
080686A2 F7FFFABE bl      8067C22h                                ;
080686A6 4A0D     ldr     r2,=2018FE4h                            ;
080686A8 2001     mov     r0,1h                                   ;
080686AA 464C     mov     r4,r9                                   ;
080686AC 4020     and     r0,r4                                   ;
080686AE 490C     ldr     r1,=0D64h                               ;
080686B0 4348     mul     r0,r1                                   ;
080686B2 1880     add     r0,r0,r2                                ;
080686B4 7940     ldrb    r0,[r0,5h]                              ;
080686B6 60E8     str     r0,[r5,0Ch]                             ;
080686B8 6828     ldr     r0,[r5]                                 ;
080686BA 6869     ldr     r1,[r5,4h]                              ;
080686BC 1840     add     r0,r0,r1                                ;
080686BE 68A9     ldr     r1,[r5,8h]                              ;
080686C0 1840     add     r0,r0,r1                                ;
080686C2 6929     ldr     r1,[r5,10h]                             ;
080686C4 1840     add     r0,r0,r1                                ;
080686C6 6969     ldr     r1,[r5,14h]                             ;
080686C8 1840     add     r0,r0,r1                                ;
080686CA 61A8     str     r0,[r5,18h]                             ;
080686CC B001     add     sp,4h                                   ;
080686CE BC18     pop     r3,r4                                   ;
080686D0 4698     mov     r8,r3                                   ;
080686D2 46A1     mov     r9,r4                                   ;
080686D4 BCF0     pop     r4-r7                                   ;
080686D6 BC01     pop     r0                                      ;
080686D8 4700     bx      r0                                      ;

CPU decks main cards

Strings

  • 0x6A0DC
7A 05 00 00 AB 01 00 00 E6 04 00 00 45 03 00 00
4F 01 00 00 CE 04 00 00 92 05 00 00 AB 03 00 00
BE 04 00 00

Umbra & Lumis

  • 0x6A1EC
82 05 00 00 AB 01 00 00 E6 04 00 00 45 03 00 00
83 05 00 00 4F 01 00 00 8C 05 00 00 BE 04 00 00
87 05 00 00
Grand Tiki Elder
Magician of Faith
Slate Warrior
Vorse Raider
The Masked Beast
Dark Hole
Mask of Brutality
Magic Cylinder
Mask of Weakness

Odion

  • 0x6A380
AB 01 00 00 4E 02 00 00 52 04 00 00 E6 04 00 00
45 03 00 00 4F 01 00 00 AD 02 00 00 FB 03 00 00
FD 03 00 00 FE 03 00 00 02 04 00 00 04 04 00 00
26 04 00 00 BE 04 00 00

Magician of Faith
Morphing Jar
Cyber Jar
Slate Warrior
Vorse Raider
Dark Hole
Widespread Ruin
White Hole
Call of the Grave
Anti Raigeki
Call of the Dark
Solemn Judgment
Gryphon Wing
Magic Cylinder

Marik Ishtar

  • 0x6A880
45 03 00 00 AB 01 00 00 52 04 00 00 8B 04 00 00
FF 03 00 00 E6 04 00 00 4F 01 00 00 03 04 00 00
0F 04 00 00 2C 04 00 00 C5 04 00 00 AB 03 00 00
BE 04 00 00

Vorse Raider
Magician of Faith
Cyber Jar
Morphing Jar #2
Tribute to the Doomed
Slate Warrior
Dark Hole
Change of Heart
Restructer Revolution
Snatch Steal
Card Destruction
Bell of Destruction
Magic Cylinder

Trunk management

Count quantity of cards in Player's Trunk, Deck and Sideboard

0x8AA94 - Loops through Player's inventory to count cards in Player's Trunk, Deck, and Sideboard

0808AA94 21D4     mov     r1,0D4h                                 ;
0808AA96 0000     lsl     r0,r0,0h                                ;
0808AA98 FBC1     bl      lr+782h                                 ;
0808AA9A 0000     lsl     r0,r0,0h                                ;
0808AA9C 10ED     asr     r5,r5,3h                                ;
0808AA9E 0000     lsl     r0,r0,0h                                ;
0808AAA0 21DE     mov     r1,0DEh                                 ;
0808AAA2 0000     lsl     r0,r0,0h                                ;
0808AAA4 2000     mov     r0,0h                                   ;
0808AAA6 BC70     pop     r4-r6                                   ;
0808AAA8 BC02     pop     r1                                      ;
0808AAAA 4708     bx      r1                                      ;
0808AAAC B570     push    r4-r6,r14                               ;
0808AAAE 2300     mov     r3,0h                                   ;
0808AAB0 490C     ldr     r1,=2011C20h                            ;r1 = pointer to Player's Trunk
0808AAB2 2200     mov     r2,0h                                   ;r2 = 0
0808AAB4 1C0D     mov     r5,r1                                   ;r5 = pointer to Player's Trunk
0808AAB6 4C0C     ldr     r4,=10EDh                               ;r4 = 4333
0808AAB8 880E     ldrh    r6,[r1]                                 ;start of the loop, load card_quantity for current card pointed by r1 in r6
0808AABA 18F0     add     r0,r6,r3                                ;r0 = card_quantity + r3
0808AABC 0400     lsl     r0,r0,10h                               ;
0808AABE 0C03     lsr     r3,r0,10h                               ;r3 = current_card_quantity & 0xFFFF
0808AAC0 3102     add     r1,2h                                   ;pointer_to_card_trunk += 2
0808AAC2 1C50     add     r0,r2,1                                 ;r0 = current_card_id
0808AAC4 0400     lsl     r0,r0,10h                               ;r0 << 16
0808AAC6 0C02     lsr     r2,r0,10h                               ;r2 = r0 & 0xFFFF
0808AAC8 42A2     cmp     r2,r4                                   ;
0808AACA D9F5     bls     808AAB8h                                ;if (r2 ≤ 4333 [it's the 1082 valid cards + card_id #0 multiplied by 4 + 1]), loop to 0x808AAB8
0808AACC 43D8     mvn     r0,r3                                   ;r0 = !r3
0808AACE 3001     add     r0,1h                                   ;r0++
0808AAD0 4A06     ldr     r2,=21DEh                               ;r2 = 8670 [it's the 1082 valid cards + card_id #0 multiplied by 8 + an offset of 6 for idk which reason yet]
0808AAD2 18A9     add     r1,r5,r2                                ;r1 = pointer to Player's Trunk + 8670
0808AAD4 8008     strh    r0,[r1]                                 ;r0 = [r1]
0808AAD6 4E06     ldr     r6,=21D4h                               ;
0808AAD8 19A9     add     r1,r5,r6                                ;
0808AADA 4806     ldr     r0,=0FBC1h                              ;
0808AADC 8008     strh    r0,[r1]                                 ;
0808AADE BC70     pop     r4-r6                                   ;
0808AAE0 BC01     pop     r0                                      ;
0808AAE2 4700     bx      r0                                      ;

Add card to Trunk

0808AF0C 3C80     sub     r4,80h                                  ;
0808AF0E 0883     lsr     r3,r0,2h                                ;
0808AF10 F893     bl      lr+126h                                 ;
0808AF12 FFFF     bl      lr+0FFEh                                ;
0808AF14 6070     str     r0,[r6,4h]                              ;
0808AF16 0817     lsr     r7,r2,20h                               ;
0808AF18 B530     push    r4,r5,r14                               ;
0808AF1A 1C04     mov     r4,r0                                   ;
0808AF1C 0424     lsl     r4,r4,10h                               ;
0808AF1E 0C24     lsr     r4,r4,10h                               ;
0808AF20 1C20     mov     r0,r4                                   ;
0808AF22 F7FFFFDF bl      808AEE4h                                ;
0808AF26 4B0C     ldr     r3,=2011C20h                            ;
0808AF28 00A4     lsl     r4,r4,2h                                ;
0808AF2A 18E4     add     r4,r4,r3                                ;r4 = 0x2011C20 + (card_id << 2)
0808AF2C 8922     ldrh    r2,[r4,8h]                              ;r2 = old card quantity
0808AF2E 0591     lsl     r1,r2,16h                               ;
0808AF30 480A     ldr     r0,=0FF800000h                          ;
0808AF32 4281     cmp     r1,r0                                   ;
0808AF34 D80D     bhi     808AF52h                                ;
0808AF36 0D89     lsr     r1,r1,16h                               ;
0808AF38 3101     add     r1,1h                                   ;
0808AF3A 4D09     ldr     r5,=3FFh                                ;
0808AF3C 1C28     mov     r0,r5                                   ;
0808AF3E 4001     and     r1,r0                                   ;
0808AF40 4808     ldr     r0,=0FFFFFC00h                          ;1024 is the maximum quantity for a given card
0808AF42 4010     and     r0,r2                                   ;r2 is old card quantity
0808AF44 4308     orr     r0,r1                                   ;r1 is new card quantity
0808AF46 8120     strh    r0,[r4,8h]                              ;Store new card quantity in [r4 + 8]
0808AF48 4807     ldr     r0,=20C6h                               ;
0808AF4A 1819     add     r1,r3,r0                                ;
0808AF4C 8808     ldrh    r0,[r1]                                 ;
0808AF4E 3001     add     r0,1h                                   ;
0808AF50 8008     strh    r0,[r1]                                 ;
0808AF52 BC30     pop     r4,r5                                   ;
0808AF54 BC01     pop     r0                                      ;
0808AF56 4700     bx      r0                                      ;
0808AF58 1C20     mov     r0,r4                                   ;

0x6B20C

0806B20C 5BE8     ldrh    r0,[r5,r7]                              ;
0806B20E 0201     lsl     r1,r0,8h                                ;
0806B210 F01FFBD0 bl      808A9B4h                                ;
0806B214 1C01     mov     r1,r0                                   ;
0806B216 2900     cmp     r1,0h                                   ;
0806B218 DA00     bge     806B21Ch                                ;
0806B21A 1CC8     add     r0,r1,3                                 ;
0806B21C 1080     asr     r0,r0,2h                                ;
0806B21E 0080     lsl     r0,r0,2h                                ;
0806B220 1A08     sub     r0,r1,r0                                ;
0806B222 2801     cmp     r0,1h                                   ;
0806B224 D00D     beq     806B242h                                ;
0806B226 2801     cmp     r0,1h                                   ;
0806B228 DC02     bgt     806B230h                                ;
0806B22A 2800     cmp     r0,0h                                   ;
0806B22C D005     beq     806B23Ah                                ;
0806B22E E013     b       806B258h                                ;
0806B230 2802     cmp     r0,2h                                   ;
0806B232 D00A     beq     806B24Ah                                ;
0806B234 2803     cmp     r0,3h                                   ;
0806B236 D00C     beq     806B252h                                ;
0806B238 E00E     b       806B258h                                ;
0806B23A 2016     mov     r0,16h                                  ;
0806B23C F7FDFF2E bl      806909Ch                                ;
0806B240 E00A     b       806B258h                                ;
0806B242 2017     mov     r0,17h                                  ;
0806B244 F7FDFF2A bl      806909Ch                                ;
0806B248 E006     b       806B258h                                ;
0806B24A 2014     mov     r0,14h                                  ;
0806B24C F7FDFF26 bl      806909Ch                                ;
0806B250 E002     b       806B258h                                ;
0806B252 201A     mov     r0,1Ah                                  ;
0806B254 F7FDFF22 bl      806909Ch                                ;
0806B258 BC30     pop     r4,r5                                   ;
0806B25A BC01     pop     r0                                      ;
0806B25C 4700     bx      r0                                      ;

0x6B25E

0806B25E 0000     lsl     r0,r0,0h                                ;
0806B260 B530     push    r4,r5,r14                               ;
0806B262 B09D     add     sp,-74h                                 ;
0806B264 2000     mov     r0,0h                                   ;
0806B266 4669     mov     r1,r13                                  ;
0806B268 F7FCFCBA bl      8067BE0h                                ;Check cards in Player's Deck
0806B26C 4CBF     ldr     r4,=201A50Ch                            ;
0806B26E 25A0     mov     r5,0A0h                                 ;
0806B270 006D     lsl     r5,r5,1h                                ;r5 = 0d320
0806B272 1C20     mov     r0,r4                                   ;
0806B274 1C29     mov     r1,r5                                   ;r1 = 0d320
0806B276 F01DFCEF bl      8088C58h                                ;call 0x8088C58
0806B27A 21A0     mov     r1,0A0h                                 ;
0806B27C 0089     lsl     r1,r1,2h                                ;r1 = 0d640
0806B27E 1860     add     r0,r4,r1                                ;r0 = 0d640 + r4
0806B280 1C29     mov     r1,r5                                   ;
0806B282 F01DFCE9 bl      8088C58h                                ;call 0x8088C58
0806B286 48BA     ldr     r0,=0FFFFF83Fh                          ;
0806B288 1825     add     r5,r4,r0                                ;
0806B28A 2000     mov     r0,0h                                   ;
0806B28C 7028     strb    r0,[r5]                                 ;
0806B28E 49B9     ldr     r1,=0FFFFF841h                          ;
0806B290 1864     add     r4,r4,r1                                ;
0806B292 7020     strb    r0,[r4]                                 ;
0806B294 48B8     ldr     r0,=3000040h                            ;
0806B296 49B9     ldr     r1,=4870h                               ;
0806B298 1840     add     r0,r0,r1                                ;
0806B29A 7800     ldrb    r0,[r0]                                 ;
0806B29C 0680     lsl     r0,r0,1Ah                               ;
0806B29E 0EC0     lsr     r0,r0,1Bh                               ;
0806B2A0 F7FDFEFC bl      806909Ch                                ;
0806B2A4 782D     ldrb    r5,[r5]                                 ;
0806B2A6 2D27     cmp     r5,27h                                  ;
0806B2A8 D900     bls     806B2ACh                                ;
0806B2AA E0C2     b       806B432h                                ;

0x088C58

08088C58 1C02     mov     r2,r0                                   ;
08088C5A 1C48     add     r0,r1,1                                 ;r0 = r1 + 1
08088C5C 0FC1     lsr     r1,r0,1Fh                               ;
08088C5E 1840     add     r0,r0,r1                                ;
08088C60 1041     asr     r1,r0,1h                                ;
08088C62 2900     cmp     r1,0h                                   ;
08088C64 D005     beq     8088C72h                                ;if (r1 == 0), branch to 08088C72 (exit the function)
08088C66 2000     mov     r0,0h                                   ;r0 = 0
08088C68 8010     strh    r0,[r2]                                 ;store r0 into [r2]
08088C6A 3202     add     r2,2h                                   ;r2 += 2
08088C6C 3901     sub     r1,1h                                   ;r1--
08088C6E 2900     cmp     r1,0h                                   ;
08088C70 D1FA     bne     8088C68h                                ;if (r1 == 0), loop to 08088C68
08088C72 4770     bx      r14                                     ;

Cards data

Cards stats array

0x832B84 to 0x833C7F - Cards stats array, containing Attribute, Type, ATK and DEF

bitmap:
AAAB BBBC CCCC DDEE EEEE EEEF FFFF FFFF
A - Attribute
    If card_type ≤ 0x14
     0 - No Attribute
     1 - LIGHT
     2 - DARK
     3 - WATER
     4 - FIRE
     5 - EARTH
     6 - WIND
     7 - ---
    If card_type ≥ 0x15
     0 - MAGIC
     1 - TRAP
B - Level
C - Card Type
    0 - [] (Monster)
    1 - Dragon
    2 - Zombie
    3 - Fiend
    4 - Pyro
    5 - Sea Serpent
    6 - Rock
    7 - Machine
    8 - Fish
    9 - Dinosaur
    A - Insect
    B - Beast
    C - Beast-Warrior
    D - Plant
    E - Aqua
    F - Warrior
   10 - Winged-Beast
   11 - Fairy
   12 - Spellcaster
   13 - Thunder
   14 - Reptile
   15 - Trap
   16 - Magic
   17 - Ticket ("Cannot be used in duel")
   18 - Divine-Beast ("Cannot be used in duel", displays the unused Divine Attribute, sets the card Level to 10, and displays blank values as the ATK/DEF stats - there's a workaround to display the 4000/4000 stats from the Display ATK and DEF subroutines)
D - Monster category
   If card_type ≤ 0x14
    0 - Normal Monster
    1 - Effect Monster
    2 - Fusion Monster
    3 - Ritual Monster
   If card_type = 0x15, a 3rd bit is used
    0 - Normal
    1 - Counter
    2 - Field
    3 - Equip
    4 - Continuous
    5 - Quick
    6 - Ritual
    7 - [Unknown]
E - ATK ÷ 10
F - DEF ÷ 10

Take this example with Earthbound Spirit (ID #0001).

C8 64 30 A8 => 0xA83064C8
Card ATK :
=> DWORD(((0xA83064C8 << 14 >> 23 << 2) + (0xA83064C8 << 14 >> 23)) << 1) = 0d500
Or :
xxxx xxxx xxxx xxCC CCCC CCCx xxxx xxxx
0b000110010 = 0d50
50 × 10 = 500

Cards internal IDs

  • 0x833C80 to 0x8344FD - List of cards internal IDs, used for example for the CPU deck loading subroutine at 0x67CE0 (to be documented).

Cards names

  • 0x83663C - Card names in 6 languages : Japanese, English, German, French, Italian, Spanish


Internal Data for Yu-Gi-Oh! Worldwide Edition: Stairway to the Destined Duel

ROM MapRAM MapText TableNotesTutorials