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: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
Line 87: Line 87:
  080EE7A8 2000    mov    r0,0h                                  ;... if (not an internal_card_id), r0 = 0
  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)
  080EE7AA 4770    bx      r14                                    ;go back right after the function call (0xEEC07 in the case of displaying CPU opponents' names)
==Retrieve card_id from an internal_card_id, retrieve EWRAM 02006C2Cn and call 080EE7AC==
080EEBF2 0000    lsl    r0,r0,0h                                ;
080EEBF4 A508    add    r5,=80EEC18h                            ;
080EEBF6 0980    lsr    r0,r0,6h                                ;
080EEBF8 FF0C    bl      lr+0E18h                                ;
080EEBFA 095F    lsr    r7,r3,5h                                ;
080EEBFC B500    push    r14                                    ;
080EEBFE 0400    lsl    r0,r0,10h                              ;
080EEC00 0C00    lsr    r0,r0,10h                              ;
080EEC02 F7FFFDB3 bl      80EE76Ch                                ;call [#Check_if_internal_card_id_is_valid.2C_and_convert_it_to_card_id|Check if internal_card_id is valid, and convert it to card_id]
080EEC06 0400    lsl    r0,r0,10h                              ;
080EEC08 0C00    lsr    r0,r0,10h                              ;r0 = card_id
080EEC0A 4905    ldr    r1,=2000000h                            ;
080EEC0C 4A05    ldr    r2,=6C2Ch                              ;
080EEC0E 1889    add    r1,r1,r2                                ;r1 = 0x2006C2C
080EEC10 7809    ldrb    r1,[r1]                                ;r1 = [0x2006C2C]
080EEC12 0749    lsl    r1,r1,1Dh                              ;
080EEC14 0F49    lsr    r1,r1,1Dh                              ;r1 &= 7
080EEC16 F7FFFDC9 bl      80EE7ACh                                ;call 080EE7AC
080EEC1A BC02    pop    r1                                      ;
080EEC1C 4708    bx      r1                                      ;branch to r1


==Cards IDs array==
==Cards IDs array==

Revision as of 16:09, 23 August 2022

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

080EE76C 0400     lsl     r0,r0,10h                               ;start of the function
080EE76E 0C02     lsr     r2,r0,10h                               ;
080EE770 1C11     mov     r1,r2                                   ;
080EE772 4808     ldr     r0,=0FA6h                               ;
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)

Retrieve card_id from an internal_card_id, retrieve EWRAM 02006C2Cn and call 080EE7AC

080EEBF2 0000     lsl     r0,r0,0h                                ;
080EEBF4 A508     add     r5,=80EEC18h                            ;
080EEBF6 0980     lsr     r0,r0,6h                                ;
080EEBF8 FF0C     bl      lr+0E18h                                ;
080EEBFA 095F     lsr     r7,r3,5h                                ;
080EEBFC B500     push    r14                                     ;
080EEBFE 0400     lsl     r0,r0,10h                               ;
080EEC00 0C00     lsr     r0,r0,10h                               ;
080EEC02 F7FFFDB3 bl      80EE76Ch                                ;call [#Check_if_internal_card_id_is_valid.2C_and_convert_it_to_card_id|Check if internal_card_id is valid, and convert it to card_id]
080EEC06 0400     lsl     r0,r0,10h                               ;
080EEC08 0C00     lsr     r0,r0,10h                               ;r0 = card_id
080EEC0A 4905     ldr     r1,=2000000h                            ;
080EEC0C 4A05     ldr     r2,=6C2Ch                               ;
080EEC0E 1889     add     r1,r1,r2                                ;r1 = 0x2006C2C
080EEC10 7809     ldrb    r1,[r1]                                 ;r1 = [0x2006C2C]
080EEC12 0749     lsl     r1,r1,1Dh                               ;
080EEC14 0F49     lsr     r1,r1,1Dh                               ;r1 &= 7
080EEC16 F7FFFDC9 bl      80EE7ACh                                ;call 080EE7AC
080EEC1A BC02     pop     r1                                      ;
080EEC1C 4708     bx      r1                                      ;branch to r1

Cards IDs array

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