Yu-Gi-Oh! Duel Monsters 6: Expert 2/ROM map

From Data Crystal
Jump to navigation Jump to search

Chip tiny.png The following article is a ROM map for Yu-Gi-Oh! Duel Monsters 6: Expert 2.

Deck shuffling and forcing a specific starting hand

08005EE4 B5F0     push    r4-r7,r14                               ;
08005EE6 4657     mov     r7,r10                                  ;
08005EE8 464E     mov     r6,r9                                   ;
08005EEA 4645     mov     r5,r8                                   ;
08005EEC B4E0     push    r5-r7                                   ;
08005EEE 4682     mov     r10,r0                                  ;
08005EF0 4688     mov     r8,r1                                   ;
08005EF2 4B26     ldr     r3,=Lxx_2012384h                        ;
08005EF4 2001     mov     r0,1h                                   ;
08005EF6 4651     mov     r1,r10                                  ;
08005EF8 4008     and     r0,r1                                   ;
08005EFA 4925     ldr     r1,=Lxx_0D64h                           ;
08005EFC 4341     mul     r1,r0                                   ;
08005EFE 18CA     add     r2,r1,r3                                ;
08005F00 78D0     ldrb    r0,[r2,3h]                              ;r0 = number_of_cards_in_deck
08005F02 2800     cmp     r0,0h                                   ;
08005F04 D100     bne     Lxx_8005F08h                            ;if (number_of_cards_in_deck ≠ 0), skip next instruction
08005F06 E1BB     b       Lxx_8006280h                            ;else exit this subroutine
08005F08 78D0     ldrb    r0,[r2,3h]                              ;r0 = number_of_cards_in_deck
08005F0A 4644     mov     r4,r8                                   ;
08005F0C 4344     mul     r4,r0                                   ;
08005F0E 46A0     mov     r8,r4                                   ;
08005F10 2C00     cmp     r4,0h                                   ;
08005F12 DD19     ble     Lxx_8005F48h                            ;
08005F14 4C1F     ldr     r4,=Lxx_7C4h                            ;
08005F16 1918     add     r0,r3,r4                                ;
08005F18 180F     add     r7,r1,r0                                ;r7 = pointer_to_deck
08005F1A 4645     mov     r5,r8                                   ;
08005F1C 1C16     mov     r6,r2                                   ;
08005F1E F074FB0D bl      Lxx_807A53Ch                            ;PRNG - LCG rand()
08005F22 78F1     ldrb    r1,[r6,3h]                              ;
08005F24 F085F984 bl      Lxx_808B230h                            ;
08005F28 1C04     mov     r4,r0                                   ;
08005F2A F074FB07 bl      Lxx_807A53Ch                            ;PRNG - LCG rand()
08005F2E 78F1     ldrb    r1,[r6,3h]                              ;
08005F30 F085F97E bl      Lxx_808B230h                            ;
08005F34 1C02     mov     r2,r0                                   ;
08005F36 00A0     lsl     r0,r4,2h                                ;
08005F38 1838     add     r0,r7,r0                                ;
08005F3A 0091     lsl     r1,r2,2h                                ;
08005F3C 1879     add     r1,r7,r1                                ;
08005F3E F7FFFB5B bl      Lxx_80055F8h                            ;
08005F42 3D01     sub     r5,1h                                   ;
08005F44 2D00     cmp     r5,0h                                   ;
08005F46 D1EA     bne     Lxx_8005F1Eh                            ;
08005F48 4913     ldr     r1,=Lxx_200EF88h                        ;Non-random starting hand starts here (I think, will continue tomorrow)
08005F4A 2001     mov     r0,1h                                   ;
08005F4C 7849     ldrb    r1,[r1,1h]                              ;
08005F4E 4008     and     r0,r1                                   ;
08005F50 2800     cmp     r0,0h                                   ;
08005F52 D000     beq     Lxx_8005F56h                            ;
08005F54 E194     b       Lxx_8006280h                            ;
08005F56 4650     mov     r0,r10                                  ;
08005F58 2800     cmp     r0,0h                                   ;
08005F5A D100     bne     Lxx_8005F5Eh                            ;
08005F5C E190     b       Lxx_8006280h                            ;
08005F5E 2500     mov     r5,0h                                   ;
08005F60 2700     mov     r7,0h                                   ;
08005F62 F074FAEB bl      Lxx_807A53Ch                            ;
08005F66 2164     mov     r1,64h                                  ;
08005F68 F085F962 bl      Lxx_808B230h                            ;
08005F6C 1C04     mov     r4,r0                                   ;
08005F6E 480B     ldr     r0,=Lxx_3000040h                        ;
08005F70 490B     ldr     r1,=Lxx_486Ah                           ;
08005F72 1840     add     r0,r0,r1                                ;
08005F74 8800     ldrh    r0,[r0]                                 ;
08005F76 0540     lsl     r0,r0,15h                               ;
08005F78 0EC0     lsr     r0,r0,1Bh                               ;
08005F7A 3801     sub     r0,1h                                   ;
08005F7C 2819     cmp     r0,19h                                  ;
08005F7E D900     bls     Lxx_8005F82h                            ;
08005F80 E134     b       Lxx_80061ECh                            ;
08005F82 0080     lsl     r0,r0,2h                                ;
08005F84 4907     ldr     r1,=Lxx_8005FA8h                        ;
08005F86 1840     add     r0,r0,r1                                ;
08005F88 6800     ldr     r0,[r0]                                 ;
08005F8A 4687     mov     r15,r0                                  ;

0x190AC - Decks initialization before duel

080190AC B500     push    r14                                     ;
080190AE F002FB13 bl      Lxx_801B6D8h                            ;
080190B2 490A     ldr     r1,=Lxx_200EF88h                        ;
080190B4 2002     mov     r0,2h                                   ;
080190B6 4240     neg     r0,r0                                   ;
080190B8 784A     ldrb    r2,[r1,1h]                              ;
080190BA 4010     and     r0,r2                                   ;
080190BC 7048     strb    r0,[r1,1h]                              ;
080190BE F7EDFA43 bl      Lxx_8006548h                            ;
080190C2 2000     mov     r0,0h                                   ;
080190C4 2108     mov     r1,8h                                   ;
080190C6 F7ECFF0D bl      Lxx_8005EE4h                            ;
080190CA F03FFC13 bl      Lxx_80588F4h                            ;CPU Deck generation global subroutine
080190CE 2001     mov     r0,1h                                   ;
080190D0 2108     mov     r1,8h                                   ;
080190D2 F7ECFF07 bl      Lxx_8005EE4h                            ;Duel initialization, decks shuffling
080190D6 2001     mov     r0,1h                                   ;
080190D8 BC02     pop     r1                                      ;
080190DA 4708     bx      r1                                      ;

CPU Deck management

Branch to CPU opponent's deck subroutines

Define some CPU opponent group flags, and branch to CPU opponent's subroutine

  • Arguments:
    • r0 : Opponent's internal ID
08056820 B530     push    r4,r5,r14                               ;
08056822 1C01     mov     r1,r0                                   ;r1 = cpu_opponent_internal_id
08056824 4A08     ldr     r2,=Lxx_200EF88h                        ;
08056826 2000     mov     r0,0h                                   ;
08056828 6050     str     r0,[r2,4h]                              ;CPU opponent group flags = 0
0805682A 290D     cmp     r1,0Dh                                  ;
0805682C DD01     ble     Lxx_8056832h                            ;if (cpu_opponent_internal_id ≤ 13), branch to 08056832
0805682E 200F     mov     r0,0Fh                                  ;
08056830 6050     str     r0,[r2,4h]                              ;CPU opponent group flags = 0b00001111
08056832 1E4D     sub     r5,r1,1                                 ;r5 = cpu_opponent_internal_id - 1
08056834 2D19     cmp     r5,19h                                  ;
08056836 D901     bls     Lxx_805683Ch                            ;if ((cpu_opponent_internal_id - 1) ≤ 25), skip next instruction
08056838 F001FF96 bl      Lxx_8058768h                            ;call 08058768
0805683C 00A8     lsl     r0,r5,2h                                ;
0805683E 4903     ldr     r1,=Lxx_8056850h                        ;
08056840 1840     add     r0,r0,r1                                ;
08056842 6800     ldr     r0,[r0]                                 ;r0 = pointer_to_cpu_opponent_subroutine
08056844 4687     mov     r15,r0                                  ;... continue to pointer_to_cpu_opponent_subroutine

Pointers array to each CPU opponent's subroutines

  • 0x5684C-0x568B7 - Pointers array to each CPU opponent's subroutines
  • CPU opponents with IDs 01 to 13 have some cards added to their deck depending on the player's deck
  • Some CPU opponents have a varying probability of starting the duel with a fixed hand
B8 68 05 08 - Mokuba Kaiba
70 69 05 08 - Anzu Mazaki
B8 6A 05 08 - Dinosaur Ryuzaki
50 6B 05 08 - Esper Roba
D4 6B 05 08 - Sugoroku Mutou
6C 6C 05 08 - Ryuji Otogi
64 6D 05 08 - Ryota Kajiki
34 6E 05 08 - Insector Haga
24 6F 05 08 - Mai Kujaku
80 70 05 08 - Bandit Keith
E8 71 05 08 - Katsuya Jonouchi
54 73 05 08 - Mind-controlled Anzu
F0 74 05 08 - Rare Hunter
60 76 05 08 - Pandora
1C 77 05 08 - Doll
F0 77 05 08 - Mask of Darkness & Mask of Light
E8 78 05 08 - Rishid
8C 7A 05 08 - Mind-controlled Jonouchi
30 7C 05 08 - Pegasus J. Crawford
AC 7D 05 08 - Marik Ishtar
54 7F 05 08 - Yami Bakura
E4 80 05 08 - Ishizu Ishtar
78 82 05 08 - Seto Kaiba
20 84 05 08 - Yami Marik
68 87 05 08 - Shadi - Skips to the next part where it'll pick a deck at random
F4 85 05 08 - Yami Yugi

CPU decks subroutines

Each of these arrays is preceded by a subroutine reading this array, and having a few more hard-coded cards in it.

Mai Kujaku

Mai Kujaku's deck subroutine
08056F24 2001     mov     r0,1h                                   ;
08056F26 217C     mov     r1,7Ch                                  ;Faith Bird
08056F28 F7FEFDF0 bl      Lxx_8055B0Ch                            ;
08056F2C 2001     mov     r0,1h                                   ;
08056F2E 217C     mov     r1,7Ch                                  ;Faith Bird
08056F30 F7FEFDEC bl      Lxx_8055B0Ch                            ;
08056F34 4C4B     ldr     r4,=Lxx_1D1h                            ;Skull Red Bird, from array
08056F36 2001     mov     r0,1h                                   ;
08056F38 1C21     mov     r1,r4                                   ;
08056F3A F7FEFDE7 bl      Lxx_8055B0Ch                            ;
08056F3E 2001     mov     r0,1h                                   ;
08056F40 1C21     mov     r1,r4                                   ;
08056F42 F7FEFDE3 bl      Lxx_8055B0Ch                            ;
08056F46 34AA     add     r4,0AAh                                 ;Blue-Winged Crown
08056F48 2001     mov     r0,1h                                   ;
08056F4A 1C21     mov     r1,r4                                   ;
08056F4C F7FEFDDE bl      Lxx_8055B0Ch                            ;
08056F50 2001     mov     r0,1h                                   ;
08056F52 1C21     mov     r1,r4                                   ;
08056F54 F7FEFDDA bl      Lxx_8055B0Ch                            ;
08056F58 4C43     ldr     r4,=Lxx_496h                            ;Harpie's Brother, from array
08056F5A 2001     mov     r0,1h                                   ;
08056F5C 1C21     mov     r1,r4                                   ;
08056F5E F7FEFDD5 bl      Lxx_8055B0Ch                            ;
08056F62 2001     mov     r0,1h                                   ;
08056F64 1C21     mov     r1,r4                                   ;
08056F66 F7FEFDD1 bl      Lxx_8055B0Ch                            ;
08056F6A 2001     mov     r0,1h                                   ;
08056F6C 213E     mov     r1,3Eh                                  ;Harpie Lady Sisters
08056F6E F7FEFDCD bl      Lxx_8055B0Ch                            ;
08056F72 2001     mov     r0,1h                                   ;
08056F74 213E     mov     r1,3Eh                                  ;Harpie Lady Sisters
08056F76 F7FEFDC9 bl      Lxx_8055B0Ch                            ;
08056F7A 2001     mov     r0,1h                                   ;
08056F7C 213E     mov     r1,3Eh                                  ;Harpie Lady Sisters
08056F7E F7FEFDC5 bl      Lxx_8055B0Ch                            ;
08056F82 4C3A     ldr     r4,=Lxx_181h                            ;Harpie's Pet Dragon, from array
08056F84 2001     mov     r0,1h                                   ;
08056F86 1C21     mov     r1,r4                                   ;
08056F88 F7FEFDC0 bl      Lxx_8055B0Ch                            ;
08056F8C 2001     mov     r0,1h                                   ;
08056F8E 1C21     mov     r1,r4                                   ;
08056F90 F7FEFDBC bl      Lxx_8055B0Ch                            ;
08056F94 4C36     ldr     r4,=Lxx_4E1h                            ;Cyber Harpie, from array
08056F96 2001     mov     r0,1h                                   ;
08056F98 1C21     mov     r1,r4                                   ;
08056F9A F7FEFDB7 bl      Lxx_8055B0Ch                            ;
08056F9E 2001     mov     r0,1h                                   ;
08056FA0 1C21     mov     r1,r4                                   ;
08056FA2 F7FEFDB3 bl      Lxx_8055B0Ch                            ;
08056FA6 2001     mov     r0,1h                                   ;
08056FA8 1C21     mov     r1,r4                                   ;
08056FAA F7FEFDAF bl      Lxx_8055B0Ch                            ;
08056FAE 249E     mov     r4,9Eh                                  ;
08056FB0 0064     lsl     r4,r4,1h                                ;Cyber Shield
08056FB2 2001     mov     r0,1h                                   ;
08056FB4 1C21     mov     r1,r4                                   ;
08056FB6 F7FEFDA9 bl      Lxx_8055B0Ch                            ;
08056FBA 2001     mov     r0,1h                                   ;
08056FBC 1C21     mov     r1,r4                                   ;
08056FBE F7FEFDA5 bl      Lxx_8055B0Ch                            ;
08056FC2 2001     mov     r0,1h                                   ;
08056FC4 1C21     mov     r1,r4                                   ;
08056FC6 F7FEFDA1 bl      Lxx_8055B0Ch                            ;
08056FCA 3401     add     r4,1h                                   ;Elegant Egotist
08056FCC 2001     mov     r0,1h                                   ;
08056FCE 1C21     mov     r1,r4                                   ;
08056FD0 F7FEFD9C bl      Lxx_8055B0Ch                            ;
08056FD4 2001     mov     r0,1h                                   ;
08056FD6 1C21     mov     r1,r4                                   ;
08056FD8 F7FEFD98 bl      Lxx_8055B0Ch                            ;
08056FDC 2001     mov     r0,1h                                   ;
08056FDE 1C21     mov     r1,r4                                   ;
08056FE0 F7FEFD94 bl      Lxx_8055B0Ch                            ;
08056FE4 4923     ldr     r1,=Lxx_14Fh                            ;Dark Hole, from array
08056FE6 2001     mov     r0,1h                                   ;
08056FE8 F7FEFD90 bl      Lxx_8055B0Ch                            ;
08056FEC 21A8     mov     r1,0A8h                                 ;
08056FEE 0049     lsl     r1,r1,1h                                ;Raigeki
08056FF0 2001     mov     r0,1h                                   ;
08056FF2 F7FEFD8B bl      Lxx_8055B0Ch                            ;
08056FF6 4920     ldr     r1,=Lxx_15Bh                            ;Swords of Revealing Light, from array
08056FF8 2001     mov     r0,1h                                   ;
08056FFA F7FEFD87 bl      Lxx_8055B0Ch                            ;
08056FFE 491F     ldr     r1,=Lxx_29Fh                            ;Harpie's Feather Duster, from array
08057000 2001     mov     r0,1h                                   ;
08057002 F7FEFD83 bl      Lxx_8055B0Ch                            ;
08057006 21FC     mov     r1,0FCh                                 ;
08057008 0089     lsl     r1,r1,2h                                ;Monster Reborn
0805700A 2001     mov     r0,1h                                   ;
0805700C F7FEFD7E bl      Lxx_8055B0Ch                            ;
08057010 248D     mov     r4,8Dh                                  ;
08057012 00E4     lsl     r4,r4,3h                                ;Rising Air Current
08057014 2001     mov     r0,1h                                   ;
08057016 1C21     mov     r1,r4                                   ;
08057018 F7FEFD78 bl      Lxx_8055B0Ch                            ;
0805701C 2001     mov     r0,1h                                   ;
0805701E 1C21     mov     r1,r4                                   ;
08057020 F7FEFD74 bl      Lxx_8055B0Ch                            ;
08057024 3420     add     r4,20h                                  ;Premature Burial
08057026 2001     mov     r0,1h                                   ;
08057028 1C21     mov     r1,r4                                   ;
0805702A F7FEFD6F bl      Lxx_8055B0Ch                            ;
0805702E 2001     mov     r0,1h                                   ;
08057030 1C21     mov     r1,r4                                   ;
08057032 F7FEFD6B bl      Lxx_8055B0Ch                            ;
08057036 3CDD     sub     r4,0DDh                                 ;Bell of Destruction
08057038 2001     mov     r0,1h                                   ;
0805703A 1C21     mov     r1,r4                                   ;
0805703C F7FEFD66 bl      Lxx_8055B0Ch                            ;
08057040 2001     mov     r0,1h                                   ;
08057042 1C21     mov     r1,r4                                   ;
08057044 F7FEFD62 bl      Lxx_8055B0Ch                            ;
08057048 21F0     mov     r1,0F0h                                 ;
0805704A 0089     lsl     r1,r1,2h                                ;Negate Attack
0805704C 2001     mov     r0,1h                                   ;
0805704E F7FEFD5D bl      Lxx_8055B0Ch                            ;
08057052 2184     mov     r1,84h                                  ;
08057054 00C9     lsl     r1,r1,3h                                ;Mirror Force
08057056 2001     mov     r0,1h                                   ;
08057058 F7FEFD58 bl      Lxx_8055B0Ch                            ;
0805705C 34EF     add     r4,0EFh                                 ;Aqua Chorus
0805705E F001FAA8 bl      Lxx_80585B2h                            ;
Mai Valentine card_id array
D1 01 00 00 96 04 00 00 81 01 00 00 E1 04 00 00
4F 01 00 00 5B 01 00 00 9F 02 00 00

Skull Red Bird
Harpie's Brother
Harpie's Pet Dragon
Cyber Harpie
Dark Hole
Swords of Revealing Light
Harpie's Feather Duster

CPU decks extra cards

Pointers to subroutines adding specific cards to deck
  • 0x587AC-0x58813
01 - 14 88 05 08 - Mokuba Kaiba
02 - EC 88 05 08 - Anzu Mazaki
03 - EC 88 05 08 - Dinosaur Ryuzaki
04 - EC 88 05 08 - Esper Roba
05 - EC 88 05 08 - Sugoroku Mutou
06 - EC 88 05 08 - Ryuji Otogi
07 - EC 88 05 08 - Ryota Kajiki
08 - EC 88 05 08 - Insector Haga
09 - EC 88 05 08 - Mai Kujaku
10 - EC 88 05 08 - Bandit Keith
11 - EC 88 05 08 - Katsuya Jonouchi
12 - 5C 88 05 08 - Mind-controlled Anzu
13 - 6C 88 05 08 - Rare Hunter
14 - 7C 88 05 08 - Pandora
15 - EC 88 05 08 - Doll
16 - EC 88 05 08 - Mask of Darkness & Mask of Light
17 - 88 88 05 08 - Rishid
18 - EC 88 05 08 - Mind-controlled Jonouchi
19 - EC 88 05 08 - Pegasus J. Crawford
20 - EC 88 05 08 - Marik Ishtar
21 - 94 88 05 08 - Yami Bakura
22 - EC 88 05 08 - Ishizu Ishtar
23 - EC 88 05 08 - Seto Kaiba
24 - EC 88 05 08 - Yami Marik
25 - A4 88 05 08 - Shadi
26 - EC 88 05 08 - Yami Yugi
cpu_opponent_internal_id 2 to 11, 15, 16, 18, 19, 20, 22, 23, 24, 26
  • Duplicate of the three last instructions of previous subroutine for clarity in the page navigation
  • Anzu Mazaki, Dinosaur Ryuzaki, Esper Roba, Sugoroku Mutou, Ryuji Otogi, Ryota Kajiki, Insector Haga, Mai Kujaku, Bandit Keith, Katsuya Jonouchi, Doll, Mask of Darkness & Mask of Light, Mind-controlled Jonouchi, Pegasus J. Crawford, Marik Ishtar, Ishizu Ishtar, Seto Kaiba, Yami Marik, Yami Yugi
080588EC BC30     pop     r4,r5                                   ;
080588EE BC01     pop     r0                                      ;
080588F0 4700     bx      r0                                      ;
Add specific cards to some opponents based on their flags and on Player's Deck content
080588F2 0000     lsl     r0,r0,0h                                ;
080588F4 B530     push    r4,r5,r14                               ;
080588F6 B09D     add     sp,-74h                                 ;
080588F8 2000     mov     r0,0h                                   ;
080588FA 4669     mov     r1,r13                                  ;
080588FC F7FCFB48 bl      Lxx_8054F90h                            ;Check cards in Player's Deck
08058900 4CD5     ldr     r4,=Lxx_20138ACh                        ;r4 = pointer_to_cpu_deck
08058902 25A0     mov     r5,0A0h                                 ;
08058904 006D     lsl     r5,r5,1h                                ;r5 = 320
08058906 1C20     mov     r0,r4                                   ;r0 = pointer_to_cpu_deck
08058908 1C29     mov     r1,r5                                   ;r1 = 320
0805890A F01FFF87 bl      Lxx_807881Ch                            ;Blanks specified RAM area
0805890E 21A0     mov     r1,0A0h                                 ;
08058910 0089     lsl     r1,r1,2h                                ;
08058912 1860     add     r0,r4,r1                                ;r0 = pointer_to_cpu_deck + 640
08058914 1C29     mov     r1,r5                                   ;
08058916 F01FFF81 bl      Lxx_807881Ch                            ;Blanks specified RAM area
0805891A 4AD0     ldr     r2,=Lxx_0FFFFF83Fh                      ;
0805891C 18A5     add     r5,r4,r2                                ;r5 = pointer_to_cpu_deck - 1985
0805891E 2000     mov     r0,0h                                   ;
08058920 7028     strb    r0,[r5]                                 ;store 0 in [pointer_to_cpu_deck - 1985]
08058922 49CF     ldr     r1,=Lxx_0FFFFF841h                      ;
08058924 1864     add     r4,r4,r1                                ;r4 = pointer_to_cpu_deck - 1983
08058926 7020     strb    r0,[r4]                                 ;store 0 in [pointer_to_cpu_deck - 1983]
08058928 48CE     ldr     r0,=Lxx_80B5328h                        ;
0805892A 4CCF     ldr     r4,=Lxx_3000040h                        ;
0805892C 4ACF     ldr     r2,=Lxx_486Ah                           ;
0805892E 18A4     add     r4,r4,r2                                ;
08058930 8822     ldrh    r2,[r4]                                 ;
08058932 0551     lsl     r1,r2,15h                               ;
08058934 0EC9     lsr     r1,r1,1Bh                               ;
08058936 F7C0F90B bl      Lxx_8018B50h                            ;
0805893A F7C0F90F bl      Lxx_8018B5Ch                            ;
0805893E 8824     ldrh    r4,[r4]                                 ;
08058940 0560     lsl     r0,r4,15h                               ;
08058942 0EC0     lsr     r0,r0,1Bh                               ;
08058944 F7FDFF6C bl      Lxx_8056820h                            ;Retrieve primary CPU deck cards
08058948 782D     ldrb    r5,[r5]                                 ;r5 = number_of_cards_in_cpu_deck ; cpu_opponent_internal_id 2 to 11, 15, 16, 18, 19, 20, 22, 23, 24, 26 branch to here
0805894A 2D27     cmp     r5,27h                                  ;
0805894C D900     bls     Lxx_8058950h                            ;if (number_of_cards_in_cpu_deck ≤ 39), skip next instruction
0805894E E0D8     b       Lxx_8058B02h                            ;else branch to 08058B02
08058950 9804     ldr     r0,[sp,10h]                             ;r0 = # of Magic cards in Player's deck
08058952 2564     mov     r5,64h                                  ;
08058954 4368     mul     r0,r5                                   ;r0 = number_of_magic_cards_in_player_deck × 100
08058956 9906     ldr     r1,[sp,18h]                             ;r1 = # of valid cards in Player's deck
08058958 F032FC1E bl      Lxx_808B198h                            ;call "ratio TYPE_cards / number_of_cards_in_deck"
0805895C 281D     cmp     r0,1Dh                                  ;
0805895E DD0C     ble     Lxx_805897Ah                            ;if (magic_cards_ratio ≤ 29%), branch to 0805897A
08058960 48C3     ldr     r0,=Lxx_80B533Ch                        ;
08058962 F7C0F8F5 bl      Lxx_8018B50h                            ;
08058966 F7C0F8F9 bl      Lxx_8018B5Ch                            ;
0805896A 49C2     ldr     r1,=Lxx_405h                            ;Magic Jammer
0805896C 2001     mov     r0,1h                                   ;
0805896E F7FDF8CD bl      Lxx_8055B0Ch                            ;
08058972 49C1     ldr     r1,=Lxx_48Bh                            ;Morphing Jar #2
08058974 2001     mov     r0,1h                                   ;
08058976 F7FDF8C9 bl      Lxx_8055B0Ch                            ;
0805897A 9805     ldr     r0,[sp,14h]                             ;
0805897C 4368     mul     r0,r5                                   ;
0805897E 9906     ldr     r1,[sp,18h]                             ;
08058980 F032FC0A bl      Lxx_808B198h                            ;
08058984 281D     cmp     r0,1Dh                                  ;
08058986 DD10     ble     Lxx_80589AAh                            ;
08058988 48BC     ldr     r0,=Lxx_80B5348h                        ;
0805898A F7C0F8E1 bl      Lxx_8018B50h                            ;
0805898E F7C0F8E5 bl      Lxx_8018B5Ch                            ;
08058992 49BB     ldr     r1,=Lxx_29Fh                            ;
08058994 2001     mov     r0,1h                                   ;
08058996 F7FDF8B9 bl      Lxx_8055B0Ch                            ;
0805899A 49BA     ldr     r1,=Lxx_406h                            ;Seven Tools of the Bandit
0805899C 2001     mov     r0,1h                                   ;
0805899E F7FDF8B5 bl      Lxx_8055B0Ch                            ;
080589A2 49B9     ldr     r1,=Lxx_486h                            ;Nobleman of Extermination
080589A4 2001     mov     r0,1h                                   ;
080589A6 F7FDF8B1 bl      Lxx_8055B0Ch                            ;
080589AA 9815     ldr     r0,[sp,54h]                             ;
080589AC 9916     ldr     r1,[sp,58h]                             ;
080589AE 1840     add     r0,r0,r1                                ;
080589B0 4368     mul     r0,r5                                   ;
080589B2 9906     ldr     r1,[sp,18h]                             ;
080589B4 F032FBF0 bl      Lxx_808B198h                            ;
080589B8 2813     cmp     r0,13h                                  ;
080589BA DD14     ble     Lxx_80589E6h                            ;
080589BC 48B3     ldr     r0,=Lxx_80B5354h                        ;
080589BE F7C0F8C7 bl      Lxx_8018B50h                            ;
080589C2 24FA     mov     r4,0FAh                                 ;
080589C4 0064     lsl     r4,r4,1h                                ;Man-Eater Bug
080589C6 2001     mov     r0,1h                                   ;
080589C8 1C21     mov     r1,r4                                   ;
080589CA F7FDF89F bl      Lxx_8055B0Ch                            ;
080589CE 2001     mov     r0,1h                                   ;
080589D0 1C21     mov     r1,r4                                   ;
080589D2 F7FDF89B bl      Lxx_8055B0Ch                            ;
080589D6 49AE     ldr     r1,=Lxx_259h                            ;Penguin Soldier
080589D8 2001     mov     r0,1h                                   ;
080589DA F7FDF897 bl      Lxx_8055B0Ch                            ;
080589DE 49AD     ldr     r1,=Lxx_452h                            ;Cyber Jar
080589E0 2001     mov     r0,1h                                   ;
080589E2 F7FDF893 bl      Lxx_8055B0Ch                            ;
080589E6 9807     ldr     r0,[sp,1Ch]                             ;
080589E8 4368     mul     r0,r5                                   ;
080589EA 9C06     ldr     r4,[sp,18h]                             ;
080589EC 1C21     mov     r1,r4                                   ;
080589EE F032FBD3 bl      Lxx_808B198h                            ;
080589F2 2809     cmp     r0,9h                                   ;
080589F4 DC06     bgt     Lxx_8058A04h                            ;
080589F6 9808     ldr     r0,[sp,20h]                             ;
080589F8 4368     mul     r0,r5                                   ;
080589FA 1C21     mov     r1,r4                                   ;
080589FC F032FBCC bl      Lxx_808B198h                            ;
08058A00 2809     cmp     r0,9h                                   ;
08058A02 DD14     ble     Lxx_8058A2Eh                            ;
08058A04 48A4     ldr     r0,=Lxx_80B5364h                        ;
08058A06 F7C0F8A3 bl      Lxx_8018B50h                            ;
08058A0A 48A4     ldr     r0,=Lxx_200EF88h                        ;
08058A0C 6840     ldr     r0,[r0,4h]                              ;
08058A0E 2104     mov     r1,4h                                   ;
08058A10 4008     and     r0,r1                                   ;
08058A12 2800     cmp     r0,0h                                   ;
08058A14 D00B     beq     Lxx_8058A2Eh                            ;
08058A16 499A     ldr     r1,=Lxx_29Fh                            ;Harpie's Feather Duster
08058A18 2001     mov     r0,1h                                   ;
08058A1A F7FDF877 bl      Lxx_8055B0Ch                            ;
08058A1E 49A0     ldr     r1,=Lxx_3EAh                            ;Trap Hole
08058A20 2001     mov     r0,1h                                   ;
08058A22 F7FDF873 bl      Lxx_8055B0Ch                            ;
08058A26 499F     ldr     r1,=Lxx_425h                            ;Heavy Storm
08058A28 2001     mov     r0,1h                                   ;
08058A2A F7FDF86F bl      Lxx_8055B0Ch                            ;
08058A2E 9911     ldr     r1,[sp,44h]                             ;
08058A30 2064     mov     r0,64h                                  ;
08058A32 4348     mul     r0,r1                                   ;
08058A34 9906     ldr     r1,[sp,18h]                             ;
08058A36 F032FBAF bl      Lxx_808B198h                            ;
08058A3A 2806     cmp     r0,6h                                   ;
08058A3C DD30     ble     Lxx_8058AA0h                            ;
08058A3E 489A     ldr     r0,=Lxx_80B5378h                        ;
08058A40 F7C0F886 bl      Lxx_8018B50h                            ;
08058A44 21FC     mov     r1,0FCh                                 ;
08058A46 0089     lsl     r1,r1,2h                                ;Monster Reborn
08058A48 2000     mov     r0,0h                                   ;
08058A4A F7FCFA75 bl      Lxx_8054F38h                            ;
08058A4E 2800     cmp     r0,0h                                   ;
08058A50 DD0F     ble     Lxx_8058A72h                            ;
08058A52 4996     ldr     r1,=Lxx_1ABh                            ;Magician of Faith
08058A54 2000     mov     r0,0h                                   ;
08058A56 F7FCFA6F bl      Lxx_8054F38h                            ;
08058A5A 2801     cmp     r0,1h                                   ;
08058A5C DD09     ble     Lxx_8058A72h                            ;
08058A5E 488F     ldr     r0,=Lxx_200EF88h                        ;
08058A60 6840     ldr     r0,[r0,4h]                              ;
08058A62 2108     mov     r1,8h                                   ;
08058A64 4008     and     r0,r1                                   ;
08058A66 2800     cmp     r0,0h                                   ;
08058A68 D003     beq     Lxx_8058A72h                            ;
08058A6A 4991     ldr     r1,=Lxx_402h                            ;Call of the Dark
08058A6C 2001     mov     r0,1h                                   ;
08058A6E F7FDF84D bl      Lxx_8055B0Ch                            ;
08058A72 4990     ldr     r1,=Lxx_447h                            ;Call Of The Haunted
08058A74 2000     mov     r0,0h                                   ;
08058A76 F7FCFA5F bl      Lxx_8054F38h                            ;
08058A7A 1C04     mov     r4,r0                                   ;
08058A7C 2191     mov     r1,91h                                  ;
08058A7E 00C9     lsl     r1,r1,3h                                ;
08058A80 2000     mov     r0,0h                                   ;
08058A82 F7FCFA59 bl      Lxx_8054F38h                            ;
08058A86 1824     add     r4,r4,r0                                ;
08058A88 2C01     cmp     r4,1h                                   ;
08058A8A DD09     ble     Lxx_8058AA0h                            ;
08058A8C 4883     ldr     r0,=Lxx_200EF88h                        ;
08058A8E 6840     ldr     r0,[r0,4h]                              ;
08058A90 2104     mov     r1,4h                                   ;
08058A92 4008     and     r0,r1                                   ;
08058A94 2800     cmp     r0,0h                                   ;
08058A96 D003     beq     Lxx_8058AA0h                            ;
08058A98 4981     ldr     r1,=Lxx_3EAh                            ;Trap Hole
08058A9A 2001     mov     r0,1h                                   ;
08058A9C F7FDF836 bl      Lxx_8055B0Ch                            ;
08058AA0 9912     ldr     r1,[sp,48h]                             ;
08058AA2 2064     mov     r0,64h                                  ;
08058AA4 4348     mul     r0,r1                                   ;
08058AA6 9906     ldr     r1,[sp,18h]                             ;
08058AA8 F032FB76 bl      Lxx_808B198h                            ;
08058AAC 2809     cmp     r0,9h                                   ;
08058AAE DD28     ble     Lxx_8058B02h                            ;
08058AB0 4881     ldr     r0,=Lxx_80B5388h                        ;
08058AB2 F7C0F84D bl      Lxx_8018B50h                            ;
08058AB6 4C79     ldr     r4,=Lxx_200EF88h                        ;
08058AB8 6861     ldr     r1,[r4,4h]                              ;
08058ABA 2080     mov     r0,80h                                  ;
08058ABC 0040     lsl     r0,r0,1h                                ;
08058ABE 4008     and     r0,r1                                   ;
08058AC0 2800     cmp     r0,0h                                   ;
08058AC2 D01E     beq     Lxx_8058B02h                            ;
08058AC4 2004     mov     r0,4h                                   ;
08058AC6 4001     and     r1,r0                                   ;
08058AC8 2900     cmp     r1,0h                                   ;
08058ACA D003     beq     Lxx_8058AD4h                            ;
08058ACC 497B     ldr     r1,=Lxx_4C5h                            ;Card Destruction
08058ACE 2001     mov     r0,1h                                   ;
08058AD0 F7FDF81C bl      Lxx_8055B0Ch                            ;
08058AD4 6860     ldr     r0,[r4,4h]                              ;
08058AD6 2108     mov     r1,8h                                   ;
08058AD8 4008     and     r0,r1                                   ;
08058ADA 2800     cmp     r0,0h                                   ;
08058ADC D008     beq     Lxx_8058AF0h                            ;
08058ADE 21A5     mov     r1,0A5h                                 ;
08058AE0 0089     lsl     r1,r1,2h                                ;Crush Card
08058AE2 2001     mov     r0,1h                                   ;
08058AE4 F7FDF812 bl      Lxx_8055B0Ch                            ;
08058AE8 4975     ldr     r1,=Lxx_475h                            ;Appropriate
08058AEA 2001     mov     r0,1h                                   ;
08058AEC F7FDF80E bl      Lxx_8055B0Ch                            ;
08058AF0 6860     ldr     r0,[r4,4h]                              ;
08058AF2 2102     mov     r1,2h                                   ;
08058AF4 4008     and     r0,r1                                   ;
08058AF6 2800     cmp     r0,0h                                   ;
08058AF8 D003     beq     Lxx_8058B02h                            ;
08058AFA 4972     ldr     r1,=Lxx_24Eh                            ;Morphing Jar
08058AFC 2001     mov     r0,1h                                   ;
08058AFE F7FDF805 bl      Lxx_8055B0Ch                            ;
08058B02 4D66     ldr     r5,=Lxx_200EF88h                        ;
08058B04 6868     ldr     r0,[r5,4h]                              ;
08058B06 2140     mov     r1,40h                                  ;
08058B08 4008     and     r0,r1                                   ;
08058B0A 2800     cmp     r0,0h                                   ;
08058B0C D010     beq     Lxx_8058B30h                            ;
08058B0E 486E     ldr     r0,=Lxx_80B5398h                        ;
08058B10 F7C0F81E bl      Lxx_8018B50h                            ;
08058B14 24F2     mov     r4,0F2h                                 ;
08058B16 00A4     lsl     r4,r4,2h                                ;Graceful Charity
08058B18 2001     mov     r0,1h                                   ;
08058B1A 1C21     mov     r1,r4                                   ;
08058B1C F7FCFFF6 bl      Lxx_8055B0Ch                            ;
08058B20 2001     mov     r0,1h                                   ;
08058B22 1C21     mov     r1,r4                                   ;
08058B24 F7FCFFF2 bl      Lxx_8055B0Ch                            ;
08058B28 4968     ldr     r1,=Lxx_3F2h                            ;Pot of Greed
08058B2A 2001     mov     r0,1h                                   ;
08058B2C F7FCFFEE bl      Lxx_8055B0Ch                            ;
08058B30 6868     ldr     r0,[r5,4h]                              ;
08058B32 2180     mov     r1,80h                                  ;
08058B34 4008     and     r0,r1                                   ;
08058B36 2800     cmp     r0,0h                                   ;
08058B38 D019     beq     Lxx_8058B6Eh                            ;
08058B3A 4C65     ldr     r4,=Lxx_231h                            ;Needle Worm, added by Mind-controlled Anzu
08058B3C 2001     mov     r0,1h                                   ;
08058B3E 1C21     mov     r1,r4                                   ;
08058B40 F7FCFFE4 bl      Lxx_8055B0Ch                            ;
08058B44 2001     mov     r0,1h                                   ;
08058B46 1C21     mov     r1,r4                                   ;
08058B48 F7FCFFE0 bl      Lxx_8055B0Ch                            ;
08058B4C 2001     mov     r0,1h                                   ;
08058B4E 1C21     mov     r1,r4                                   ;
08058B50 F7FCFFDC bl      Lxx_8055B0Ch                            ;
08058B54 21A5     mov     r1,0A5h                                 ;
08058B56 0089     lsl     r1,r1,2h                                ;Crush Card
08058B58 2001     mov     r0,1h                                   ;
08058B5A F7FCFFD7 bl      Lxx_8055B0Ch                            ;
08058B5E 495D     ldr     r1,=Lxx_485h                            ;Nobleman of Crossout
08058B60 2001     mov     r0,1h                                   ;
08058B62 F7FCFFD3 bl      Lxx_8055B0Ch                            ;
08058B66 4948     ldr     r1,=Lxx_486h                            ;Nobleman of Extermination
08058B68 2001     mov     r0,1h                                   ;
08058B6A F7FCFFCF bl      Lxx_8055B0Ch                            ;
08058B6E 6868     ldr     r0,[r5,4h]                              ;
08058B70 2120     mov     r1,20h                                  ;
08058B72 4008     and     r0,r1                                   ;
08058B74 2800     cmp     r0,0h                                   ;
08058B76 D023     beq     Lxx_8058BC0h                            ;if (bit_6_not_set), branch to 08058BC0
08058B78 4857     ldr     r0,=Lxx_80B53A8h                        ;
08058B7A F7BFFFE9 bl      Lxx_8018B50h                            ;
08058B7E 24F2     mov     r4,0F2h                                 ;Graceful Charity
08058B80 00A4     lsl     r4,r4,2h                                ;
08058B82 2001     mov     r0,1h                                   ;
08058B84 1C21     mov     r1,r4                                   ;
08058B86 F7FCFFC1 bl      Lxx_8055B0Ch                            ;
08058B8A 2001     mov     r0,1h                                   ;
08058B8C 1C21     mov     r1,r4                                   ;
08058B8E F7FCFFBD bl      Lxx_8055B0Ch                            ;
08058B92 21FC     mov     r1,0FCh                                 ;
08058B94 0089     lsl     r1,r1,2h                                ;Monster Reborn
08058B96 2001     mov     r0,1h                                   ;
08058B98 F7FCFFB8 bl      Lxx_8055B0Ch                            ;
08058B9C 34C0     add     r4,0C0h                                 ;Premature Burial
08058B9E 2001     mov     r0,1h                                   ;
08058BA0 1C21     mov     r1,r4                                   ;
08058BA2 F7FCFFB3 bl      Lxx_8055B0Ch                            ;
08058BA6 2001     mov     r0,1h                                   ;
08058BA8 1C21     mov     r1,r4                                   ;
08058BAA F7FCFFAF bl      Lxx_8055B0Ch                            ;
08058BAE 3C89     sub     r4,89h                                  ;Tribute to The Doomed
08058BB0 2001     mov     r0,1h                                   ;
08058BB2 1C21     mov     r1,r4                                   ;
08058BB4 F7FCFFAA bl      Lxx_8055B0Ch                            ;
08058BB8 2001     mov     r0,1h                                   ;
08058BBA 1C21     mov     r1,r4                                   ;
08058BBC F7FCFFA6 bl      Lxx_8055B0Ch                            ;
08058BC0 21A8     mov     r1,0A8h                                 ;
08058BC2 0049     lsl     r1,r1,1h                                ;Raigeki
08058BC4 2000     mov     r0,0h                                   ;(player's deck)
08058BC6 F7FCF9B7 bl      Lxx_8054F38h                            ;Counts number of a specific card in deck
08058BCA 2800     cmp     r0,0h                                   ;
08058BCC D103     bne     Lxx_8058BD6h                            ;if (raigeki_in_player_deck), branch to 08058BD6
08058BCE 4943     ldr     r1,=Lxx_3FEh                            ;Anti Raigeki
08058BD0 2001     mov     r0,1h                                   ;(cpu)
08058BD2 F7FDF885 bl      Lxx_8055CE0h                            ;Remove card from deck
08058BD6 4942     ldr     r1,=Lxx_14Fh                            ;Dark Hole
08058BD8 2000     mov     r0,0h                                   ;
08058BDA F7FCF9AD bl      Lxx_8054F38h                            ;
08058BDE 2800     cmp     r0,0h                                   ;
08058BE0 D103     bne     Lxx_8058BEAh                            ;
08058BE2 4940     ldr     r1,=Lxx_3FBh                            ;White Hole
08058BE4 2001     mov     r0,1h                                   ;
08058BE6 F7FDF87B bl      Lxx_8055CE0h                            ;
08058BEA 21FC     mov     r1,0FCh                                 ;
08058BEC 0089     lsl     r1,r1,2h                                ;Monster Reborn
08058BEE 2000     mov     r0,0h                                   ;
08058BF0 F7FCF9A2 bl      Lxx_8054F38h                            ;
08058BF4 2800     cmp     r0,0h                                   ;
08058BF6 D107     bne     Lxx_8058C08h                            ;
08058BF8 493B     ldr     r1,=Lxx_3FDh                            ;Call of the Grave
08058BFA 2001     mov     r0,1h                                   ;
08058BFC F7FDF870 bl      Lxx_8055CE0h                            ;
08058C00 492B     ldr     r1,=Lxx_402h                            ;Call of the Dark
08058C02 2001     mov     r0,1h                                   ;
08058C04 F7FDF86C bl      Lxx_8055CE0h                            ;
08058C08 491D     ldr     r1,=Lxx_29Fh                            ;Harpie's Feather Duster
08058C0A 2000     mov     r0,0h                                   ;(player's deck)
08058C0C F7FCF994 bl      Lxx_8054F38h                            ;Counts number of a specific card in deck
08058C10 2800     cmp     r0,0h                                   ;
08058C12 D103     bne     Lxx_8058C1Ch                            ;if (harpie_feather_duster_in_player_deck), branch to 08058C1C
08058C14 4935     ldr     r1,=Lxx_426h                            ;Gryphon Wing
08058C16 2001     mov     r0,1h                                   ;(cpu)
08058C18 F7FDF862 bl      Lxx_8055CE0h                            ;Remove card from deck
08058C1C 2001     mov     r0,1h                                   ;
08058C1E F7FDFDA1 bl      Lxx_8056764h                            ;Remove cards exceeding Banned and Restricted allowed copies
08058C22 4811     ldr     r0,=Lxx_3000040h                        ;
08058C24 4911     ldr     r1,=Lxx_486Ah                           ;
08058C26 1840     add     r0,r0,r1                                ;
08058C28 8800     ldrh    r0,[r0]                                 ;
08058C2A 0540     lsl     r0,r0,15h                               ;
08058C2C 0EC0     lsr     r0,r0,1Bh                               ;
08058C2E 2101     mov     r1,1h                                   ;
08058C30 4249     neg     r1,r1                                   ;
08058C32 F7FDFD1B bl      Lxx_805666Ch                            ;Prolly the random Normal Monsters subroutine
08058C36 2001     mov     r0,1h                                   ;
08058C38 4669     mov     r1,r13                                  ;r1 = pointer_to_types_of_cards_in_player_deck
08058C3A F7FCF9A9 bl      Lxx_8054F90h                            ;Check cards in Player's Deck
08058C3E 482C     ldr     r0,=Lxx_80B53B8h                        ;
08058C40 492C     ldr     r1,=Lxx_2012384h                        ;
08058C42 4A2D     ldr     r2,=Lxx_0D67h                           ;
08058C44 1889     add     r1,r1,r2                                ;
08058C46 7809     ldrb    r1,[r1]                                 ;
08058C48 F7BFFF82 bl      Lxx_8018B50h                            ;
08058C4C F7BFFF86 bl      Lxx_8018B5Ch                            ;
08058C50 B01D     add     sp,74h                                  ;
08058C52 BC30     pop     r4,r5                                   ;
08058C54 BC01     pop     r0                                      ;
08058C56 4700     bx      r0                                      ;