Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

Yu-Gi-Oh! Ultimate Masters: World Championship Tournament 2006/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! Ultimate Masters: World Championship Tournament 2006.

Banlist Password

Enter character

080143F0 B570     push    r4-r6,r14                               ;
080143F2 1C04     mov     r4,r0                                   ;
080143F4 1C0B     mov     r3,r1                                   ;
080143F6 1C16     mov     r6,r2                                   ;
080143F8 490D     ldr     r1,=2000000h                            ;
080143FA 480E     ldr     r0,=6C2Ch                               ;
080143FC 1809     add     r1,r1,r0                                ;
080143FE 2007     mov     r0,7h                                   ;
08014400 7809     ldrb    r1,[r1]                                 ;
08014402 4008     and     r0,r1                                   ;
08014404 2800     cmp     r0,0h                                   ;
08014406 D003     beq     8014410h                                ;
08014408 480B     ldr     r0,=202348Ch                            ;
0801440A 7800     ldrb    r0,[r0]                                 ;
0801440C 2800     cmp     r0,0h                                   ;
0801440E D023     beq     8014458h                                ;
08014410 7821     ldrb    r1,[r4]                                 ;
08014412 2900     cmp     r1,0h                                   ;
08014414 D025     beq     8014462h                                ;
08014416 2A00     cmp     r2,0h                                   ;
08014418 D023     beq     8014462h                                ;
0801441A 2580     mov     r5,80h                                  ;
0801441C 1C28     mov     r0,r5                                   ;
0801441E 4008     and     r0,r1                                   ;
08014420 2800     cmp     r0,0h                                   ;
08014422 D00B     beq     801443Ch                                ;
08014424 7019     strb    r1,[r3]                                 ;Store charset
08014426 3401     add     r4,1h                                   ;
08014428 3301     add     r3,1h                                   ;
0801442A 7820     ldrb    r0,[r4]                                 ;Load character_id in r0
0801442C 7018     strb    r0,[r3]                                 ;Store character_id
0801442E E006     b       801443Eh                                ;

Retrieve CPU opponent's name

080242AE 0000     lsl     r0,r0,0h                                ;
080242B0 943C     str     r4,[sp,0F0h]                            ;
080242B2 09DC     lsr     r4,r3,7h                                ;
080242B4 6C2C     ldr     r4,[r5,40h]                             ;
080242B6 0000     lsl     r0,r0,0h                                ;
080242B8 6E5C     ldr     r4,[r3,64h]                             ;
080242BA 0000     lsl     r0,r0,0h                                ;
080242BC 3360     add     r3,60h                                  ;
080242BE 0202     lsl     r2,r0,8h                                ;
080242C0 6E48     ldr     r0,[r1,64h]                             ;
080242C2 0000     lsl     r0,r0,0h                                ;
080242C4 6E57     ldr     r7,[r2,64h]                             ;
080242C6 0000     lsl     r0,r0,0h                                ;
080242C8 485B     ldr     r0,=9E58D0Ch                            ;
080242CA 0DA1     lsr     r1,r4,16h                               ;
080242CC 1809     add     r1,r1,r0                                ;
080242CE 8848     ldrh    r0,[r1,2h]                              ;r0 = internal_card_id
080242D0 F0CAFC94 bl      80EEBFCh                                ;

Check if internal_card_id is valid, and convert it to card_id

080EE772 4808     ldr     r0,=0FA6h                               ;start of the function
080EE774 4282     cmp     r2,r0                                   ;
080EE776 D917     bls     80EE7A8h                                ;if (r2 ≤ 4006), branch to 080EE7A8
080EE778 4807     ldr     r0,=1BA6h                               ;
080EE77A 4282     cmp     r2,r0                                   ;
080EE77C D814     bhi     80EE7A8h                                ;if (r2 ≤ 7078), branch to 080EE7A8
080EE77E 4807     ldr     r0,=95B7CCCh                            ;r0 = pointer_to_cards_ids_array
080EE780 4A07     ldr     r2,=0FFFFF059h                          ;
080EE782 1889     add     r1,r1,r2                                ;r1 -= 0xFA7 [4007; Blue-Eyes White Dragon]
080EE784 0049     lsl     r1,r1,1h                                ;r1 << 1
080EE786 1809     add     r1,r1,r0                                ;r1 = pointer_to_cards_ids_array + ((internal_card_id - 4007) << 1)
080EE788 8809     ldrh    r1,[r1]                                 ;r1 = card_id
080EE78A 4806     ldr     r0,=0FFFFh                              ;
080EE78C 4281     cmp     r1,r0                                   ;
080EE78E D00B     beq     80EE7A8h                                ;if (invalid_card_id), branch to 080EE7A8
080EE790 1C08     mov     r0,r1                                   ;r0 = card_id
080EE792 E00A     b       80EE7AAh                                ;branch to 080EE7AA
080EE794 0FA6     lsr     r6,r4,1Eh                               ;-
080EE796 0000     lsl     r0,r0,0h                                ;-
080EE798 1BA6     sub     r6,r4,r6                                ;-
080EE79A 0000     lsl     r0,r0,0h                                ;-
080EE79C 7CCC     ldrb    r4,[r1,13h]                             ;-
080EE79E 095B     lsr     r3,r3,5h                                ;-
080EE7A0 F059FFFF bl      81487A2h                                ;-
080EE7A4 FFFF     bl      lr+0FFEh                                ;-
080EE7A6 0000     lsl     r0,r0,0h                                ;-
080EE7A8 2000     mov     r0,0h                                   ;... if (not an internal_card_id), r0 = 0
080EE7AA 4770     bx      r14                                     ;go back right after the function call (0xEEC07 in the case of displaying CPU opponents' names)

Cards IDs array

  • 0x157BCCC to 0x15B917B - Conversion table from internal_card_id to card_id