Atelier Elie GB/ROM map

From Data Crystal
Jump to navigation Jump to search

Chip tiny.png The following article is a ROM map for Atelier Elie GB.

Bank 02

Display Fairy's Name

ROM2:62AF 21 F7 CA         ld   hl,CAF7
ROM2:62B2 18 03            jr   62B7
ROM2:62B4 21 4A CB         ld   hl,CB4A          ;hl = pointer_to_fairy_s_name
ROM2:62B7 2A               ldi  a,(hl)           ;a = current_character_in_fairy_s_name
ROM2:62B8 4F               ld   c,a
ROM2:62B9 FE FF            cp   a,FF
ROM2:62BB 28 17            jr   z,62D4           ;if(current_character_in_fairy_s_name == end_of_string_marker), jump to 2:62D4
ROM2:62BD 11 1C C8         ld   de,C81C
ROM2:62C0 FA 3B C9         ld   a,(C93B)         ;a = wC93B
ROM2:62C3 83               add  e
ROM2:62C4 5F               ld   e,a
ROM2:62C5 3E 00            ld   a,00
ROM2:62C7 8A               adc  d
ROM2:62C8 57               ld   d,a
ROM2:62C9 79               ld   a,c
ROM2:62CA 12               ld   (de),a
ROM2:62CB FA 3B C9         ld   a,(C93B)         ;a = wC93B
ROM2:62CE 3C               inc  a
ROM2:62CF EA 3B C9         ld   (C93B),a         ;Write accumulator to wC93B
ROM2:62D2 18 E3            jr   62B7             ;loop to 2:62B7
ROM2:62D4 E1               pop  hl
ROM2:62D5 C1               pop  bc
ROM2:62D6 23               inc  hl
ROM2:62D7 C3 EE 60         jp   60EE

Bank 0A

Name entry

Copy Fairy's name from wCAF7 to wCB4A

ROMA:4A6A FA F7 CA         ld   a,(CAF7)
ROMA:4A6D EA 4A CB         ld   (CB4A),a
ROMA:4A70 FA F8 CA         ld   a,(CAF8)
ROMA:4A73 EA 4B CB         ld   (CB4B),a
ROMA:4A76 FA F9 CA         ld   a,(CAF9)
ROMA:4A79 EA 4C CB         ld   (CB4C),a
ROMA:4A7C FA FA CA         ld   a,(CAFA)
ROMA:4A7F EA 4D CB         ld   (CB4D),a
ROMA:4A82 FA FB CA         ld   a,(CAFB)
ROMA:4A85 EA 4E CB         ld   (CB4E),a
ROMA:4A88 FA FC CA         ld   a,(CAFC)
ROMA:4A8B EA 4F CB         ld   (CB4F),a
ROMA:4A8E FA FD CA         ld   a,(CAFD)
ROMA:4A91 EA 50 CB         ld   (CB50),a
ROMA:4A94 FA FE CA         ld   a,(CAFE)
ROMA:4A97 EA 51 CB         ld   (CB51),a
ROMA:4A9A FA FF CA         ld   a,(CAFF)
ROMA:4A9D EA 52 CB         ld   (CB52),a
ROMA:4AA0 C9               ret

Write Fairy's name in WRAM

ROMA:4B3D 01 52 AE         ld   bc,AE52
ROMA:4B40 FA 36 CB         ld   a,(CB36)        ;a = current_name_length
ROMA:4B43 FE 04            cp   a,04
ROMA:4B45 28 65            jr   z,4BAC          ;if(current_name_length == 4), exit this routine
ROMA:4B47 21 F7 CA         ld   hl,CAF7
ROMA:4B4A FA EE CA         ld   a,(CAEE)        ;a = current_name_length
ROMA:4B4D 85               add  l
ROMA:4B4E 6F               ld   l,a
ROMA:4B4F 3E 00            ld   a,00
ROMA:4B51 8C               adc  h
ROMA:4B52 67               ld   h,a             ;hl = pointer to current WRAM pointer in Fairy's name
ROMA:4B53 FA 38 CB         ld   a,(CB38)        ;a = Selected character in name entry
ROMA:4B56 77               ld   (hl),a          ;Write character in [wCAF7 + current_name_length]
ROMA:4B57 EA 4A CB         ld   (CB4A),a        ;Write character in wCB4A
ROMA:4B5A 23               inc  hl              ;pointer_to_current_character_slot++
ROMA:4B5B F5               push af
ROMA:4B5C FA EE CA         ld   a,(CAEE)
ROMA:4B5F 3C               inc  a
ROMA:4B60 EA EE CA         ld   (CAEE),a        ;current_name_length++
ROMA:4B63 F1               pop  af
ROMA:4B64 FE EF            cp   a,EF
ROMA:4B66 20 1E            jr   nz,4B86
ROMA:4B68 FA 39 CB         ld   a,(CB39)
ROMA:4B6B 77               ld   (hl),a
ROMA:4B6C EA 4B CB         ld   (CB4B),a
ROMA:4B6F 23               inc  hl              ;pointer_to_current_character_slot++
ROMA:4B70 FA EE CA         ld   a,(CAEE)
ROMA:4B73 3C               inc  a
ROMA:4B74 EA EE CA         ld   (CAEE),a        ;current_name_length++
ROMA:4B77 3E FF            ld   a,FF
ROMA:4B79 77               ld   (hl),a
ROMA:4B7A EA 4C CB         ld   (CB4C),a
ROMA:4B7D FA 36 CB         ld   a,(CB36)
ROMA:4B80 3C               inc  a
ROMA:4B81 EA 36 CB         ld   (CB36),a
ROMA:4B84 18 0D            jr   4B93
ROMA:4B86 3E FF            ld   a,FF
ROMA:4B88 77               ld   (hl),a          ;Writes end of string marker to wCAF7 + current_name_length
ROMA:4B89 EA 4B CB         ld   (CB4B),a
ROMA:4B8C FA 36 CB         ld   a,(CB36)
ROMA:4B8F 3C               inc  a
ROMA:4B90 EA 36 CB         ld   (CB36),a
ROMA:4B93 FA 36 CB         ld   a,(CB36)
ROMA:4B96 FE 04            cp   a,04
ROMA:4B98 20 12            jr   nz,4BAC
ROMA:4B9A 3E 18            ld   a,18
ROMA:4B9C EA 2F CB         ld   (CB2F),a
ROMA:4B9F 3E 05            ld   a,05
ROMA:4BA1 EA 30 CB         ld   (CB30),a
ROMA:4BA4 3E FD            ld   a,FD
ROMA:4BA6 EA 38 CB         ld   (CB38),a
ROMA:4BA9 CD AC 49         call 49AC
ROMA:4BAC C9               ret