From 1fa680668c51fac0181d7493971e5f1a7ff1d29e Mon Sep 17 00:00:00 2001 From: jidoc01 Date: Mon, 24 Jun 2019 01:59:53 +0900 Subject: Disassembled bank 6 and added wram constants. --- src/engine/bank06.asm | 4094 ++++++++++++++++++++++++++++++++++++++++++++++++- src/wram.asm | 10 +- 2 files changed, 4097 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm index 9cda475..bf0a55e 100644 --- a/src/engine/bank06.asm +++ b/src/engine/bank06.asm @@ -312,18 +312,4102 @@ Func_1a61f: ; 1a61f (6:661f) call AssertSongFinished or a jr nz, .asm_1a680 + call ResumeSong bank1call $5773 ret ; 0x1a68d - INCROM $1a68d, $1a6cc + + ld a, $c2 + ldh [$97], a + ld h, a + ld l, $00 + +jr_006_6694: + xor a + ld [hl+], a + ld a, l + cp $3c + jr c, jr_006_6694 + + xor a + ld hl, $c400 + ld de, $c510 + ld c, $00 + +jr_006_66a4: + ld a, [hl+] + or a + jr z, jr_006_66ae + + ld a, c + ld [de], a + inc de + inc c + jr jr_006_66a4 + +jr_006_66ae: + ld a, $ff + ld [de], a + ld de, $389f + call $2275 + rst $18 + sbc d + ld d, l + ld hl, $0056 + ld de, $0196 + rst $18 + add b + ld d, l + ld a, $09 + ld [$cbd6], a + rst $18 + ldh a, [rHDMA5] + ret CommentedOut_1a6cc: ; 1a6cc (6:66cc) - ret -; 0x1a6cd + ret + + ldh a, [$81] + or a + ret nz + + push hl + push de + push bc + ld hl, $a100 + ld bc, $0250 + ld a, [$a00b] + ld e, a + +jr_006_66de: + ld a, [hl+] + xor e + ld e, a + dec bc + ld a, c + or b + jr nz, jr_006_66de + + ld a, e + pop bc + pop de + pop hl + or a + ret z + + xor a + ld [$cab6], a + ld hl, $cad3 + ld [hl+], a + ld [hl], a + ldh [$92], a + ldh [$93], a + rst $18 + sub b + ld e, c + call $04a2 + call $2119 + rst $18 + db $eb + ld e, d + ld a, [$cab4] + cp $01 + jr nz, jr_006_6719 + + ld a, $e4 + ld [$cabd], a + ld [$cabc], a + ld a, $01 + ld [$cabf], a + +jr_006_6719: + ld de, $389f + call $2275 + ld hl, $00a3 + rst $18 + rst $18 + ld d, a + ld a, $0a + ld [$0000], a + xor a + ldh [$81], a + ld [$4000], a + ld [$a000], a + ld [$0000], a + jp $051b + + + ret + + + ldh a, [$81] + or a + ret nz + + push hl + push de + push bc + ld hl, $a100 + ld bc, $0250 + ld e, $00 + +jr_006_6749: + ld a, [hl+] + xor e + ld e, a + dec bc + ld a, c + or b + jr nz, jr_006_6749 + + ld a, $0a + ld [$0000], a + ld a, e + ld [$a00b], a + pop bc + pop de + pop hl + ret + + + ld bc, $1e01 + ld [bc], a + rst $38 + ld [bc], a + ld bc, $022b + ld c, $01 + add hl, de + ld [bc], a + rst $38 + ld [bc], a + ld bc, $022c + ld c, $01 + add hl, de + ld [bc], a + rst $38 + ld [bc], a + ld bc, $022d + ld c, $01 + add hl, de + ld [bc], a + rst $38 + ld [bc], a + ld bc, $022e + ld c, $01 + add hl, de + ld [bc], a + rst $38 + +Call_006_6787: + push af + push bc + push hl + ld b, a + xor a + +jr_006_678c: + ld [hl+], a + dec b + jr nz, jr_006_678c + + pop hl + pop bc + pop af + ret + + +Call_006_6794: + push af + inc a + jr z, jr_006_679c + + ld a, $02 + jr jr_006_679e + +jr_006_679c: + ld a, $03 + +jr_006_679e: + call $3796 + pop af + ret + + + ld e, l + ld d, h + ld a, $0c + ld hl, $675e + ld bc, $0c01 + call Call_006_6846 + call Set_OBJ_8x8 + xor a + ld [$cab6], a + call EmptyScreen + call ZeroObjectPositions + ld a, $01 + ld [$cac0], a + call LoadSymbolsFont + ld de, $38bf + call SetupText + call Call_006_6a65 + ld a, $02 + ld [$d009], a + call Call_006_6892 + xor a + ld [$d006], a + ld [$cea4], a + ld a, $09 + ld [$d005], a + ld a, $06 + ld [$cea9], a + ld a, $0f + ld [$ceaa], a + ld a, $00 + ld [$ceab], a + +jr_006_67f1: + ld a, $01 + ld [$cac0], a + call DoFrame + call UpdateRNGSources + ldh a, [$8f] + and $08 + jr z, jr_006_6819 + + ld a, $01 + call Call_006_6794 + call Call_006_6a07 + ld a, $06 + ld [$d006], a + ld a, $05 + ld [$cea4], a + call Call_006_6a23 + jr jr_006_67f1 + +jr_006_6819: + call Call_006_6908 + jr nc, jr_006_67f1 + + cp $ff + jr z, jr_006_682b + + call Call_006_6a87 + jr nc, jr_006_67f1 + + call Call_006_6880 + ret + + +jr_006_682b: + ld a, [wNameLength] + or a + jr z, jr_006_67f1 + + ld e, a + ld d, $00 + ld hl, wNameBuffer + add hl, de + dec hl + dec hl + ld [hl], $00 + ld hl, wNameLength + dec [hl] + dec [hl] + call Call_006_68cb + jr jr_006_67f1 + +Call_006_6846: + ld [$d004], a + push hl + ld hl, $d007 + ld [hl], b + inc hl + ld [hl], c + pop hl + ld b, h + ld c, l + ld hl, $d002 + ld [hl], c + inc hl + ld [hl], b + ld hl, $d000 + ld [hl], e + inc hl + ld [hl], d + ld a, $18 + ld hl, wNameBuffer + call Call_006_6787 + ld hl, wNameBuffer + ld a, [$d004] + ld b, a + inc b + +jr_006_686f: + ld a, [de] + inc de + ld [hl+], a + dec b + jr nz, jr_006_686f + + ld hl, wNameBuffer + call GetTextSizeInTiles + ld a, c + ld [wNameLength], a + ret + + +Call_006_6880: + ld hl, $d000 + ld e, [hl] + inc hl + ld d, [hl] + ld l, e + ld h, d + ld de, wNameBuffer + ld a, [$d004] + ld b, a + inc b + jr jr_006_686f + +Call_006_6892: + call Call_006_68c1 + call Call_006_68cb + ld hl, $d002 + ld c, [hl] + inc hl + ld a, [hl] + ld h, a + or c + jr z, jr_006_68a6 + + ld l, c + call PlaceTextItems + +jr_006_68a6: + ld hl, $68bc + call PlaceTextItems + ld hl, $0221 + ld de, $0204 + call InitTextPrinting + call ProcessTextFromID + call EnableLCD + ret + + + rrca + db $10 + dec e + ld [bc], a + rst $38 + +Call_006_68c1: + ld de, $0003 + ld bc, $140f + call $1e7c + ret + + +Call_006_68cb: + ld hl, $d007 + ld d, [hl] + inc hl + ld e, [hl] + push de + call $22ae + ld a, [$d004] + ld e, a + ld a, $14 + sub e + inc a + ld e, a + ld d, $00 + ld hl, $68f2 + add hl, de + call $21c5 + pop de + call $22ae + ld hl, wNameBuffer + call $21c5 + ret + + + ld d, [hl] + inc bc + ld d, [hl] + inc bc + ld d, [hl] + inc bc + ld d, [hl] + inc bc + ld d, [hl] + inc bc + ld d, [hl] + inc bc + ld d, [hl] + inc bc + ld d, [hl] + inc bc + ld d, [hl] + inc bc + ld d, [hl] + inc bc + ld d, [hl] + nop + +Call_006_6908: +Jump_006_6908: + xor a + ld [$cfe3], a + ldh a, [$8f] + or a + jp z, Jump_006_69d9 + + ld b, a + ld a, [$cea9] + ld c, a + ld a, [$d006] + ld h, a + ld a, [$cea4] + ld l, a + bit 6, b + jr z, jr_006_692c + + dec a + bit 7, a + jr z, jr_006_69a7 + + ld a, c + dec a + jr jr_006_69a7 + +jr_006_692c: + bit 7, b + jr z, jr_006_6937 + + inc a + cp c + jr c, jr_006_69a7 + + xor a + jr jr_006_69a7 + +jr_006_6937: + ld a, [$d005] + ld c, a + ld a, h + bit 5, b + jr z, jr_006_6974 + + ld d, a + ld a, $06 + cp l + ld a, d + jr nz, jr_006_696b + + push hl + push bc + push af + call Call_006_6b93 + inc hl + inc hl + inc hl + inc hl + inc hl + ld a, [hl] + dec a + ld d, a + pop af + pop bc + pop hl + sub d + cp $ff + jr nz, jr_006_6962 + + ld a, c + sub $02 + jr jr_006_69aa + +jr_006_6962: + cp $fe + jr nz, jr_006_696b + + ld a, c + sub $03 + jr jr_006_69aa + +jr_006_696b: + dec a + bit 7, a + jr z, jr_006_69aa + + ld a, c + dec a + jr jr_006_69aa + +jr_006_6974: + bit 4, b + jr z, jr_006_69d9 + + ld d, a + ld a, $06 + cp l + ld a, d + jr nz, jr_006_6990 + + push hl + push bc + push af + call Call_006_6b93 + inc hl + inc hl + inc hl + inc hl + ld a, [hl] + dec a + ld d, a + pop af + pop bc + pop hl + add d + +jr_006_6990: + inc a + cp c + jr c, jr_006_69aa + + inc c + cp c + jr c, jr_006_69a4 + + inc c + cp c + jr c, jr_006_69a0 + + ld a, $02 + jr jr_006_69aa + +jr_006_69a0: + ld a, $01 + jr jr_006_69aa + +jr_006_69a4: + xor a + jr jr_006_69aa + +jr_006_69a7: + ld l, a + jr jr_006_69ab + +jr_006_69aa: + ld h, a + +jr_006_69ab: + push hl + call Call_006_6b93 + inc hl + inc hl + inc hl + ld a, [$d009] + cp $02 + jr nz, jr_006_69bb + + inc hl + inc hl + +jr_006_69bb: + ld d, [hl] + push de + call Call_006_6a07 + pop de + pop hl + ld a, l + ld [$cea4], a + ld a, h + ld [$d006], a + xor a + ld [$cea3], a + ld a, $06 + cp d + jp z, Jump_006_6908 + + ld a, $01 + ld [$cfe3], a + +Jump_006_69d9: +jr_006_69d9: + ldh a, [$91] + and $03 + jr z, jr_006_69ef + + and $01 + jr nz, jr_006_69e5 + + ld a, $ff + +jr_006_69e5: + call Call_006_6794 + push af + call Call_006_6a23 + pop af + scf + ret + + +jr_006_69ef: + ld a, [$cfe3] + or a + jr z, jr_006_69f8 + + call $3796 + +jr_006_69f8: + ld hl, $cea3 + ld a, [hl] + inc [hl] + and $0f + ret nz + + ld a, [$ceaa] + bit 4, [hl] + jr z, jr_006_6a0a + +Call_006_6a07: + ld a, [$ceab] + +jr_006_6a0a: + ld e, a + ld a, [$d006] + ld h, a + ld a, [$cea4] + ld l, a + call Call_006_6b93 + ld a, [hl+] + ld c, a + ld b, [hl] + dec b + ld a, e + call Call_006_6a28 + call $06c3 + or a + ret + + +Call_006_6a23: + ld a, [$ceaa] + jr jr_006_6a0a + +Call_006_6a28: + push af + push bc + push de + push hl + push af + call $099c + pop af + ld b, a + ld a, [$ceab] + cp b + jr z, jr_006_6a60 + + ld a, [wNameLength] + srl a + ld d, a + ld a, [$d004] + srl a + ld e, a + ld a, d + cp e + jr nz, jr_006_6a49 + + dec a + +jr_006_6a49: + ld hl, $d007 + add [hl] + ld d, a + ld h, $08 + ld l, d + call $0879 + ld a, l + add $08 + ld d, a + ld e, $18 + ld bc, $0000 + call $097f + +jr_006_6a60: + pop hl + pop de + pop bc + pop af + ret + + +Call_006_6a65: + ld hl, $8000 + ld de, $6a77 + ld b, $00 + +jr_006_6a6d: + ld a, $10 + cp b + ret z + + inc b + ld a, [de] + inc de + ld [hl+], a + jr jr_006_6a6d + + rst $38 + rst $38 + rst $38 + rst $38 + rst $38 + rst $38 + rst $38 + rst $38 + rst $38 + rst $38 + rst $38 + rst $38 + rst $38 + rst $38 + rst $38 + rst $38 + +; bc = xy coordinate(by each tile) in the naming screen +; hl = the pointer to its character information(by 6bytes) +; info. structure: (1) / (1) / (1) / character code(2) / (1) +Call_006_6a87: + ld a, [$d006] + ld h, a + ld a, [$cea4] + ld l, a + call Call_006_6b93 + inc hl + inc hl + ld e, [hl] + inc hl + ld a, [hl+] + ld d, a + cp $09 + jp z, Jump_006_6b5f + + cp $07 + jr nz, .jr_006_6ab8 + + ld a, [$d009] + or a + jr nz, .jr_006_6aac + + ld a, $01 + jp .jr_006_6ace + + +.jr_006_6aac + dec a + jr nz, .jr_006_6ab4 + + ld a, $02 + jp .jr_006_6ace + + +.jr_006_6ab4 + xor a + jp .jr_006_6ace + + +.jr_006_6ab8 + cp $08 + jr nz, .jr_006_6ad6 + + ld a, [$d009] + or a + jr nz, .jr_006_6ac6 + + ld a, $02 + jr .jr_006_6ace + +.jr_006_6ac6 + dec a + jr nz, .jr_006_6acc - INCROM $1a6cd, $1ad89 + xor a + jr .jr_006_6ace + +.jr_006_6acc + ld a, $01 + +.jr_006_6ace + ld [$d009], a + call Call_006_6892 + or a + ret + + +.jr_006_6ad6 + ld a, [$d009] + cp $02 + jr z, .read_char + + ld bc, $0359 + ld a, d + cp b + jr nz, .jr_006_6af4 + + ld a, e + cp c + jr nz, .jr_006_6af4 + + push hl + ld hl, $6cf9 + call Call_006_6b61 + pop hl + jr c, jr_006_6b5d + + jr .jr_006_6b09 + +.jr_006_6af4 + ld bc, $035b + ld a, d + cp b + jr nz, .jr_006_6b1d + + ld a, e + cp c + jr nz, .jr_006_6b1d + + push hl + ld hl, $6d5f + call Call_006_6b61 + pop hl + jr c, jr_006_6b5d + +.jr_006_6b09 + ld a, [wNameLength] ; cfff: current player name length(by byte). + dec a + dec a + ld [wNameLength], a + ld hl, wNameBuffer ; cfe7: temporary buffer for player name. + push de + ld d, $00 + ld e, a + add hl, de + pop de + ld a, [hl] + jr jr_006_6b37 + +.jr_006_6b1d + ld a, d + or a + jr nz, jr_006_6b37 + + ld a, [$d009] + or a + jr nz, .jr_006_6b2b + + ld a, $0e + jr jr_006_6b37 + +.jr_006_6b2b + ld a, $0f + jr jr_006_6b37 + +; read character code from info. to register. +; [input] +; hl: pointer. +.read_char + ld e, [hl] + inc hl + ld a, [hl] ; a: first byte of the code. + or a + ; if 2byte code. + jr nz, jr_006_6b37 + ; if 1byte code(ascii) + ; set first byte to $0e. + ld a, $0e + +; on 2byte code. +jr_006_6b37: + ld d, a ; de: character code. + ld hl, wNameLength + ld a, [hl] + ld c, a + push hl + ld hl, $d004 + cp [hl] + pop hl + jr nz, jr_006_6b4c + + ; if the buffer is full + ; just change the last character of it. + ld hl, wNameBuffer + dec hl + dec hl + jr jr_006_6b51 + +; increase name length before add the character. +jr_006_6b4c: + inc [hl] ; hl: wNameLength => name length + inc [hl] + ld hl, wNameBuffer + +; write 2byte character codes from user input. +; de: 2byte character codes. +; hl: dest. +jr_006_6b51: + ld b, $00 + add hl, bc + + ld [hl], d + inc hl + ld [hl], e + inc hl + ld [hl], $00 ; null terminator. + + call Call_006_68cb + +jr_006_6b5d: + or a + ret + + +Jump_006_6b5f: + scf + ret + + +Call_006_6b61: + ld a, [wNameLength] + or a + jr z, jr_006_6b91 + + dec a + dec a + push hl + ld hl, wNameBuffer + ld d, $00 + ld e, a + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld a, $0f + cp e + jr nz, jr_006_6b7a + + dec e + +jr_006_6b7a: + pop hl + +jr_006_6b7b: + ld a, [hl+] + or a + jr z, jr_006_6b91 + + cp d + jr nz, jr_006_6b8c + + ld a, [hl] + cp e + jr nz, jr_006_6b8c + + inc hl + ld e, [hl] + inc hl + ld d, [hl] + or a + ret + + +jr_006_6b8c: + inc hl + inc hl + inc hl + jr jr_006_6b7b + +jr_006_6b91: + scf + ret + + +Call_006_6b93: + push de + ld e, l + ld d, h + ld a, [$cea9] + ld l, a + call $0879 + ld a, l + add e + ld hl, $6baf + pop de + or a + ret z + +jr_006_6ba5: + inc hl + inc hl + inc hl + inc hl + inc hl + inc hl + dec a + jr nz, jr_006_6ba5 + + ret + + + inc b + ld [bc], a + ld de, $3000 + inc bc + ld b, $02 + ld [de], a + nop + add hl, sp + inc bc + ld [$1302], sp + nop + ld b, d + inc bc + ld a, [bc] + ld [bc], a + inc d + nop + ld l, a + nop + inc c + ld [bc], a + dec d + nop + ld h, h + nop + db $10 + rrca + ld bc, $0009 + nop + inc b + inc b + ld d, $00 + ld sp, $0603 + inc b + rla + nop + ld a, [hl-] + inc bc + ld [$1804], sp + nop + ld b, e + inc bc + ld a, [bc] + inc b + add hl, de + nop + ld e, l + inc bc + inc c + inc b + ld a, [de] + nop + ld h, l + nop + db $10 + rrca + ld bc, $0009 + nop + inc b + ld b, $1b + nop + ld [hl-], a + inc bc + ld b, $06 + inc e + nop + dec sp + inc bc + ld [$1d06], sp + nop + ld b, h + inc bc + ld a, [bc] + ld b, $1e + nop + ld l, d + nop + inc c + ld b, $1f + nop + ld h, [hl] + nop + db $10 + rrca + ld bc, $0009 + nop + inc b + ld [$0020], sp + inc sp + inc bc + ld b, $08 + ld hl, $3c00 + inc bc + ld [$2208], sp + nop + ld b, l + inc bc + ld a, [bc] + ld [$0023], sp + ld l, e + nop + inc c + ld [$0024], sp + ld h, a + nop + db $10 + rrca + ld bc, $0009 + nop + inc b + ld a, [bc] + dec h + nop + inc [hl] + inc bc + ld b, $0a + ld h, $00 + dec a + inc bc + ld [$270a], sp + nop + ld b, [hl] + inc bc + ld a, [bc] + ld a, [bc] + jr z, jr_006_6c55 + +jr_006_6c55: + ld [hl], a + nop + inc c + ld a, [bc] + add hl, hl + nop + ld l, b + nop + db $10 + rrca + ld bc, $0009 + nop + inc b + inc c + ld a, [hl+] + nop + dec [hl] + inc bc + ld b, $0c + dec hl + nop + ld a, $03 + ld [$2c0c], sp + nop + ld b, a + inc bc + ld a, [bc] + inc c + dec l + nop + ld h, b + nop + inc c + inc c + ld l, $00 + ld l, c + nop + db $10 + rrca + ld bc, $0009 + nop + inc b + ld c, $2f + nop + ld [hl], $03 + ld b, $0e + jr nc, jr_006_6c91 + +jr_006_6c91: + ccf + inc bc + ld [$310e], sp + nop + ld c, b + inc bc + ld a, [bc] + ld c, $32 + nop + ld h, c + nop + inc c + ld c, $33 + nop + inc de + dec b + db $10 + rrca + ld bc, $0009 + nop + inc b + db $10 + inc [hl] + nop + scf + inc bc + ld b, $10 + dec [hl] + nop + ld b, b + inc bc + ld [$3610], sp + nop + ld c, c + inc bc + ld a, [bc] + db $10 + inc a + nop + ld h, d + nop + inc c + db $10 + dec a + nop + ld de, $1005 + rrca + ld bc, $0009 + nop + inc b + ld [de], a + scf + nop + jr c, @+$05 + + ld b, $12 + jr c, jr_006_6cd9 + +jr_006_6cd9: + ld b, c + inc bc + ld [$3912], sp + nop + ld l, [hl] + nop + ld a, [bc] + ld [de], a + ld a, [hl-] + nop + ld h, e + nop + inc c + ld [de], a + dec sp + nop + ld [hl], b + nop + db $10 + rrca + ld bc, $0009 + nop + nop + nop + nop + nop + nop + nop + ld d, $0e + ld a, $00 + rla + ld c, $3f + nop + jr jr_006_6d11 + + ld b, b + nop + add hl, de + ld c, $41 + nop + ld a, [de] + ld c, $42 + nop + dec de + ld c, $43 + nop + +jr_006_6d11: + inc e + ld c, $44 + nop + dec e + ld c, $45 + nop + ld e, $0e + ld b, [hl] + nop + rra + ld c, $47 + nop + jr nz, jr_006_6d31 + + ld c, b + nop + ld hl, $490e + nop + ld [hl+], a + ld c, $4a + nop + inc hl + ld c, $4b + nop + +jr_006_6d31: + inc h + ld c, $4c + nop + ld a, [hl+] + ld c, $4d + nop + dec hl + ld c, $4e + nop + inc l + ld c, $4f + nop + dec l + ld c, $50 + nop + ld l, $0e + ld d, c + nop + ld d, d + ld c, $4d + nop + ld d, e + ld c, $4e + nop + ld d, h + ld c, $4f + nop + ld d, l + ld c, $50 + nop + ld d, [hl] + ld c, $51 + nop + nop + nop + ld a, [hl+] + ld c, $52 + nop + dec hl + ld c, $53 + nop + inc l + ld c, $54 + nop + dec l + ld c, $55 + nop + ld l, $0e + ld d, [hl] + nop + ld c, l + ld c, $52 + nop + ld c, [hl] + ld c, $53 + nop + ld c, a + ld c, $54 + nop + ld d, b + ld c, $55 + nop + ld d, c + ld c, $56 + nop + nop + nop Func_1ad89: ; 1ad89 (6:6d89) - INCROM $1ad89, $1c000 + push af + ld a, [de] + or a + jr nz, jr_006_6d91 + + ld a, $06 + ld [de], a + +jr_006_6d91: + pop af + inc a + call Call_006_6846 + call $02b9 + xor a + ld [$cab6], a + call $04a2 + call $099c + ld a, $01 + ld [$cac0], a + call $2119 + ld de, $38bf + call $2275 + call Call_006_6e37 + xor a + ld [$d009], a + call Call_006_6e99 + xor a + ld [$d006], a + ld [$cea4], a + ld a, $09 + ld [$d005], a + ld a, $07 + ld [$cea9], a + ld a, $0f + ld [$ceaa], a + ld a, $00 + ld [$ceab], a + +Jump_006_6dd6: +jr_006_6dd6: + ld a, $01 + ld [$cac0], a + call $053f + call $089b + ldh a, [$8f] + and $08 + jr z, jr_006_6dfc + + ld a, $01 + call Call_006_6794 + call Call_006_6fa1 + ld a, $06 + ld [$d006], a + ld [$cea4], a + call Call_006_6fbd + jr jr_006_6dd6 + +jr_006_6dfc: + call Call_006_6efb + jr nc, jr_006_6dd6 + + cp $ff + jr z, jr_006_6e1c + + call Call_006_6ec3 + jr nc, jr_006_6dd6 + + call Call_006_6880 + ld hl, $d000 + ld a, [hl+] + ld h, [hl] + ld l, a + inc hl + ld a, [hl] + or a + jr nz, jr_006_6e1b + + dec hl + ld [hl], $00 + +jr_006_6e1b: + ret + + +jr_006_6e1c: + ld a, [wNameLength] + cp $02 + jr c, jr_006_6dd6 + + ld e, a + ld d, $00 + ld hl, wNameBuffer + add hl, de + dec hl + ld [hl], $00 + ld hl, wNameLength + dec [hl] + call Call_006_6e59 + jp Jump_006_6dd6 + + +Call_006_6e37: + ld hl, $8000 + ld de, $6e49 + ld b, $00 + +jr_006_6e3f: + ld a, $10 + cp b + ret z + + inc b + ld a, [de] + inc de + ld [hl+], a + jr jr_006_6e3f + + ldh a, [$f0] + ldh a, [$f0] + ldh a, [$f0] + ldh a, [$f0] + ldh a, [$f0] + ldh a, [$f0] + ldh a, [$f0] + ldh a, [$f0] + +Call_006_6e59: + ld hl, $d007 + ld d, [hl] + inc hl + ld e, [hl] + call $22ae + ld hl, $6e83 + ld de, $c590 + +jr_006_6e68: + ld a, [hl+] + ld [de], a + inc de + or a + jr nz, jr_006_6e68 + + ld hl, wNameBuffer + ld de, $c590 + +jr_006_6e74: + ld a, [hl+] + or a + jr z, jr_006_6e7c + + ld [de], a + inc de + jr jr_006_6e74 + +jr_006_6e7c: + ld hl, $c590 + call $21c5 + ret + + + ld b, $5f + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + ld e, a + nop + +Call_006_6e99: + call Call_006_68c1 + call Call_006_6e59 + ld hl, $d002 + ld c, [hl] + inc hl + ld a, [hl] + ld h, a + or c + jr z, jr_006_6ead + + ld l, c + call $2c08 + +jr_006_6ead: + ld hl, $68bc + call $2c08 + ld hl, $0222 + ld de, $0204 + call $22ae + call $2c29 + call $0277 + ret + + +Call_006_6ec3: + ld a, [$d006] + ld h, a + ld a, [$cea4] + ld l, a + call Call_006_7000 + inc hl + inc hl + ld a, [hl] + cp $01 + jr nz, jr_006_6ed7 + + scf + ret + + +jr_006_6ed7: + ld d, a + ld hl, wNameLength + ld a, [hl] + ld c, a + push hl + ld hl, $d004 + cp [hl] + pop hl + jr nz, jr_006_6eeb + + ld hl, wNameBuffer + dec hl + jr jr_006_6eef + +jr_006_6eeb: + inc [hl] + ld hl, wNameBuffer + +jr_006_6eef: + ld b, $00 + add hl, bc + ld [hl], d + inc hl + ld [hl], $00 + call Call_006_6e59 + or a + ret + + +Call_006_6efb: +Jump_006_6efb: + xor a + ld [$cfe3], a + ldh a, [$8f] + or a + jp z, Jump_006_6f73 + + ld b, a + ld a, [$cea9] + ld c, a + ld a, [$d006] + ld h, a + ld a, [$cea4] + ld l, a + bit 6, b + jr z, jr_006_6f1f + + dec a + bit 7, a + jr z, jr_006_6f4b + + ld a, c + dec a + jr jr_006_6f4b + +jr_006_6f1f: + bit 7, b + jr z, jr_006_6f2a + + inc a + cp c + jr c, jr_006_6f4b + + xor a + jr jr_006_6f4b + +jr_006_6f2a: + cp $06 + jr z, jr_006_6f73 + + ld a, [$d005] + ld c, a + ld a, h + bit 5, b + jr z, jr_006_6f40 + + dec a + bit 7, a + jr z, jr_006_6f4e + + ld a, c + dec a + jr jr_006_6f4e + +jr_006_6f40: + bit 4, b + jr z, jr_006_6f73 + + inc a + cp c + jr c, jr_006_6f4e + + xor a + jr jr_006_6f4e + +jr_006_6f4b: + ld l, a + jr jr_006_6f4f + +jr_006_6f4e: + ld h, a + +jr_006_6f4f: + push hl + call Call_006_7000 + inc hl + inc hl + ld d, [hl] + push de + call Call_006_6fa1 + pop de + pop hl + ld a, l + ld [$cea4], a + ld a, h + ld [$d006], a + xor a + ld [$cea3], a + ld a, $02 + cp d + jp z, Jump_006_6efb + + ld a, $01 + ld [$cfe3], a + +Jump_006_6f73: +jr_006_6f73: + ldh a, [$91] + and $03 + jr z, jr_006_6f89 + + and $01 + jr nz, jr_006_6f7f + + ld a, $ff + +jr_006_6f7f: + call Call_006_6794 + push af + call Call_006_6fbd + pop af + scf + ret + + +jr_006_6f89: + ld a, [$cfe3] + or a + jr z, jr_006_6f92 + + call $3796 + +jr_006_6f92: + ld hl, $cea3 + ld a, [hl] + inc [hl] + and $0f + ret nz + + ld a, [$ceaa] + bit 4, [hl] + jr z, jr_006_6fa4 + +Call_006_6fa1: + ld a, [$ceab] + +jr_006_6fa4: + ld e, a + ld a, [$d006] + ld h, a + ld a, [$cea4] + ld l, a + call Call_006_7000 + ld a, [hl+] + ld c, a + ld b, [hl] + dec b + ld a, e + call Call_006_6fc2 + call $06c3 + or a + ret + + +Call_006_6fbd: + ld a, [$ceaa] + jr jr_006_6fa4 + +Call_006_6fc2: + push af + push bc + push de + push hl + push af + call $099c + pop af + ld b, a + ld a, [$ceab] + cp b + jr z, jr_006_6ffb + + ld a, [wNameLength] + ld d, a + ld a, [$d004] + ld e, a + ld a, d + cp e + jr nz, jr_006_6fdf + + dec a + +jr_006_6fdf: + dec a + ld d, a + ld hl, $d007 + ld a, [hl] + sla a + add d + ld d, a + ld h, $04 + ld l, d + call $0879 + ld a, l + add $08 + ld d, a + ld e, $18 + ld bc, $0000 + call $097f + +jr_006_6ffb: + pop hl + pop de + pop bc + pop af + ret + + +Call_006_7000: + push de + ld e, l + ld d, h + ld a, [$cea9] + ld l, a + call $0879 + ld a, l + add e + ld hl, $7019 + pop de + or a + ret z + +jr_006_7012: + inc hl + inc hl + inc hl + dec a + jr nz, jr_006_7012 + + ret + + + inc b + ld [bc], a + ld b, c + ld b, $02 + ld c, d + ld [$5302], sp + ld a, [bc] + ld [bc], a + ccf + inc c + ld [bc], a + inc [hl] + ld c, $02 + ld [bc], a + db $10 + rrca + ld bc, $0404 + ld b, d + ld b, $04 + ld c, e + ld [$5404], sp + ld a, [bc] + inc b + ld h, $0c + inc b + dec [hl] + ld c, $04 + ld [bc], a + db $10 + rrca + ld bc, $0604 + ld b, e + ld b, $06 + ld c, h + ld [$5506], sp + ld a, [bc] + ld b, $2b + inc c + ld b, $36 + ld c, $06 + ld [bc], a + db $10 + rrca + ld bc, $0804 + ld b, h + ld b, $08 + ld c, l + ld [$5608], sp + ld a, [bc] + ld [$0c2d], sp + ld [$0e37], sp + ld [$1002], sp + rrca + ld bc, $0a04 + ld b, l + ld b, $0a + ld c, [hl] + ld [$570a], sp + ld a, [bc] + ld a, [bc] + daa + inc c + ld a, [bc] + jr c, jr_006_708b + + ld a, [bc] + ld [bc], a + db $10 + rrca + ld bc, $0c04 + ld b, [hl] + ld b, $0c + ld c, a + ld [$580c], sp + +jr_006_708b: + ld a, [bc] + inc c + jr nc, @+$0e + + inc c + add hl, sp + ld c, $0c + ld [bc], a + db $10 + rrca + ld bc, $0e04 + ld b, a + ld b, $0e + ld d, b + ld [$590e], sp + ld a, [bc] + ld c, $31 + inc c + ld c, $20 + ld c, $0e + ld [bc], a + db $10 + rrca + ld bc, $1004 + ld c, b + ld b, $10 + ld d, c + ld [$5a10], sp + ld a, [bc] + db $10 + ld [hl-], a + inc c + db $10 + jr nz, jr_006_70ca + + db $10 + ld [bc], a + db $10 + rrca + ld bc, $1204 + ld c, c + ld b, $12 + ld d, d + ld [$2112], sp + +jr_006_70ca: + ld a, [bc] + ld [de], a + inc sp + inc c + ld [de], a + jr nz, @+$10 + + ld [de], a + ld [bc], a + db $10 + rrca + ld bc, $0000 + nop + nop + ld a, [de] + dec b + ld [bc], a + ld [hl], a + ld bc, $0278 + ld a, c + ld bc, $027a + ld a, e + ld bc, $037c + ld a, l + ld [bc], a + ld a, [hl] + ld bc, $027f + add b + ld bc, $0181 + add d + ld bc, $0283 + add h + ld bc, $0185 + add a + ld bc, $0288 + adc c + ld bc, $018a + jp $c502 + + + ld bc, $02d2 + db $dd + nop + inc c + inc b + ld c, $05 + inc b + ld l, l + ld [bc], a + ld l, a + ld [bc], a + ld [hl], h + inc b + add a + ld [bc], a + adc b + inc b + or c + ld bc, $02c3 + push bc + ld bc, $02c6 + call $d202 + ld bc, $02d5 + ret c + + ld [bc], a + reti + + + ld bc, $01da + db $db + ld bc, $00e1 + jr jr_006_7139 + + ld [bc], a + rlca + inc bc + ld a, e + inc b + +jr_006_7139: + ld a, l + inc bc + ld a, [hl] + ld [bc], a + add a + ld [bc], a + adc b + inc bc + or c + ld [bc], a + or e + inc bc + cp a + ld [bc], a + ret nz + + ld bc, $01c2 + jp $d803 + + + inc bc + reti + + + ld [bc], a + db $dd + nop + ld [$0402], sp + inc b + rrca + dec b + inc b + dec sp + ld [bc], a + ld [hl], c + inc bc + ld a, e + ld [bc], a + ld a, h + inc bc + add a + inc bc + adc b + ld [bc], a + cp c + ld [bc], a + rst $08 + ld [bc], a + push de + inc bc + ret c + + ld [bc], a + reti + + + inc bc + db $dd + ld [bc], a + rst $18 + nop + add hl, de + dec b + inc b + ld a, l + inc bc + ld a, [hl] + ld [bc], a + ld a, a + ld [bc], a + adc b + inc b + add a + inc b + ld a, e + ld bc, $027c + db $dd + ld [bc], a + reti + + + ld [bc], a + ret c + + ld [bc], a + jp nc, $db03 + + inc b + push bc + nop + ld [$0f04], sp + dec b + ld [bc], a + rlca + ld [bc], a + ld h, b + ld [bc], a + ld h, c + ld bc, $0167 + ld l, b + inc b + ld [hl], a + inc bc + ld a, b + inc b + and a + inc bc + xor b + ld bc, $02c3 + push bc + ld bc, $02c9 + call $d601 + inc bc + ret c + + ld [bc], a + reti + + + ld [bc], a + db $dd + ld bc, $00de + add hl, de + dec b + inc b + ld a, c + inc bc + ld a, d + inc b + add e + inc bc + adc c + ld [bc], a + adc d + ld [bc], a + cp c + ld bc, $01ba + cp [hl] + ld bc, $02c3 + push bc + ld [bc], a + ret + + + inc bc + jp nc, $d904 + + inc bc + db $dd + nop + jr jr_006_71e0 + + inc bc + ld [hl], a + ld [bc], a + ld a, b + inc bc + +jr_006_71e0: + add b + ld [bc], a + add c + ld bc, $0482 + add e + inc b + add h + ld bc, $0285 + add [hl] + ld [bc], a + adc c + ld bc, $028a + push bc + ld bc, $02c6 + call nc, $d701 + inc bc + reti + + + ld [bc], a + ld [c], a + nop + rrca + dec b + ld [$0303], sp + ld c, l + ld bc, $034e + ld e, h + ld [bc], a + ld e, l + inc b + ld [hl], a + ld [bc], a + ld a, b + inc bc + add h + ld bc, $0386 + adc b + ld [bc], a + adc e + ld bc, $028c + adc l + ld [bc], a + jp $c502 + + + ld [bc], a + jp z, $cc04 + + nop + jr jr_006_722a + + ld [bc], a + rlca + inc b + ld a, c + ld [bc], a + +jr_006_722a: + ld a, d + inc b + add b + inc bc + add c + ld [bc], a + add d + inc bc + add e + inc bc + adc c + ld [bc], a + jp $ca01 + + + ld [bc], a + ret nc + + ld [bc], a + jp nc, $d601 + + ld [bc], a + reti + + + ld bc, $02de + db $dd + nop + add hl, de + inc bc + ld [bc], a + ld b, h + ld bc, $0245 + ld b, [hl] + ld bc, $0147 + ld c, b + ld [bc], a + ld c, e + ld bc, $024c + ld c, l + ld bc, $024e + ld c, a + ld bc, $0250 + ld d, c + ld bc, $0152 + ld d, a + ld bc, $0158 + ld e, c + ld bc, $015c + ld e, l + ld bc, $015e + jp $c502 + + + ld bc, $02c9 + call z, $cf01 + ld bc, $01d4 + db $dd + ld bc, $00de + db $10 + inc bc + ld a, [bc] + dec b + ld [bc], a + ld c, e + ld bc, $034c + ld c, l + ld [bc], a + ld c, [hl] + inc bc + ld c, a + ld [bc], a + ld d, b + inc bc + ld d, l + ld [bc], a + ld d, [hl] + inc bc + ld [hl], a + ld [bc], a + ld a, b + ld [bc], a + push bc + ld [bc], a + call $d002 + ld [bc], a + db $db + inc bc + db $dd + nop + ld [$0e01], sp + inc bc + inc b + rlca + inc bc + inc c + ld [bc], a + dec c + inc bc + ld b, c + ld [bc], a + ld b, d + inc bc + ld c, l + ld [bc], a + ld c, [hl] + inc b + ld d, l + inc bc + ld d, [hl] + ld [bc], a + jp $c502 + + + ld [bc], a + ret c + + ld [bc], a + reti + + + inc b + db $dd + nop + rrca + inc bc + ld [$0306], sp + rlca + inc bc + ld b, h + ld [bc], a + ld b, l + inc b + ld b, [hl] + inc bc + ld b, a + ld [bc], a + ld c, b + inc b + sub l + inc bc + sub [hl] + inc bc + cp a + ld [bc], a + ret nz + + ld bc, $01c3 + push bc + ld bc, $02c7 + rst $08 + ld [bc], a + ret nc + + ld bc, $00d1 + jr jr_006_72ed + + inc b + ld b, c + inc bc + +jr_006_72ed: + ld b, d + ld [bc], a + ld b, e + inc b + ld d, e + inc bc + ld d, h + inc bc + ld d, c + ld [bc], a + ld d, d + ld [bc], a + ld e, c + ld [bc], a + jp $ca01 + + + ld bc, $01cd + adc $02 + ret nc + + ld bc, $02d1 + jp nc, $dd02 + + ld bc, $00e3 + inc b + ld [bc], a + ld b, $03 + ld [$0204], sp + rlca + ld bc, $013e + ld e, e + ld bc, $0160 + ld h, c + ld bc, $0162 + ld h, e + ld bc, $0164 + ld h, l + ld bc, $0166 + ld h, a + ld bc, $0168 + ld [hl], e + ld [bc], a + xor e + ld bc, $01ac + xor l + ld [bc], a + xor [hl] + ld bc, $02af + or b + inc b + cp h + ld [bc], a + jp $c503 + + + ld [bc], a + rlc d + push de + ld bc, $01d6 + ret c + + ld bc, $03d9 + db $dd + nop + add hl, bc + inc bc + inc c + inc b + ld [bc], a + ld d, l + ld [bc], a + ld e, c + inc bc + ld h, b + ld bc, $0267 + ld l, c + inc bc + ld [hl], c + ld [bc], a + and a + ld bc, $02a8 + jp $c504 + + + inc bc + ret nc + + ld bc, $03d6 + ret c + + ld [bc], a + jp c, $db04 + + inc b + ld [c], a + nop + ld a, [de] + inc b + ld [bc], a + ld h, b + ld bc, $0161 + ld h, a + ld bc, $0268 + ld l, c + ld bc, $016a + ld l, e + ld bc, $036c + ld l, l + ld bc, $016e + ld l, a + ld bc, $0170 + ld [hl], c + ld bc, $0172 + ld [hl], e + ld bc, $0174 + ld [hl], l + inc bc + cp h + ld bc, $02cd + ret nc + + ld [bc], a + call nc, $d802 + ld [bc], a + reti + + + ld bc, $00db + jr jr_006_73aa + + ld bc, $0207 + ld h, c + +jr_006_73aa: + ld bc, $0162 + ld h, e + ld [bc], a + ld h, a + ld [bc], a + ld l, c + ld [bc], a + ld l, d + ld [bc], a + ld l, e + inc b + ld l, l + inc bc + ld l, a + ld bc, $0375 + cp l + ld [bc], a + call $d802 + inc bc + reti + + + ld [bc], a + jp c, $db03 + + nop + jr jr_006_73cf + + ld [bc], a + rlca + inc b + ld l, c + +jr_006_73cf: + inc bc + ld l, e + inc b + ld l, l + ld [bc], a + ld l, [hl] + inc b + ld [hl], c + ld [bc], a + cp c + ld bc, $01ba + jp $c502 + + + ld [bc], a + jp nc, $d904 + + ld bc, $04db + db $dd + nop + jr jr_006_73eb + + inc bc + +jr_006_73eb: + inc c + ld [bc], a + dec c + ld bc, $030e + rrca + ld [bc], a + db $10 + ld bc, $0411 + rra + inc bc + jr nz, @+$04 + + ld hl, $2201 + ld bc, $012e + cpl + ld [bc], a + push bc + ld [bc], a + jp z, $d202 + + ld [bc], a + call nc, $d702 + ld [bc], a + db $dd + nop + add hl, de + ld bc, $0701 + ld [bc], a + ld [de], a + ld bc, $0213 + ld a, [de] + ld bc, $021b + inc e + ld bc, $011d + ld e, $02 + rra + ld bc, $0220 + ld hl, $2201 + ld [bc], a + inc hl + ld bc, $0124 + dec h + ld bc, $012f + or a + ld bc, $02b9 + push bc + ld bc, $01d2 + call nc, $d802 + ld [bc], a + reti + + + ld [bc], a + db $dd + ld bc, $00df + jr jr_006_7447 + + ld [bc], a + +jr_006_7447: + rlca + inc bc + ld [$0902], sp + ld [bc], a + dec bc + inc bc + inc e + ld [bc], a + dec e + ld [bc], a + ld e, $02 + inc hl + ld bc, $0124 + dec h + ld [bc], a + inc l + ld bc, $022d + or a + ld [bc], a + ret + + + inc bc + jp z, $cf01 + + ld [bc], a + jp nc, $dd02 + + ld bc, $00df + ld a, [bc] + ld bc, $0204 + inc b + inc bc + inc b + inc b + inc bc + rlca + inc bc + ld hl, $2202 + ld bc, $013d + ld a, $01 + ld e, d + ld bc, $015b + ld [hl], d + ld bc, $0473 + cp e + inc b + cp h + inc b + cp l + ld [bc], a + push bc + ld [bc], a + add $02 + rst $08 + inc b + jp nc, $db02 + + nop + ld [de], a + ld bc, $0604 + inc b + ld [$0903], sp + ld [bc], a + dec bc + inc b + inc e + inc bc + dec e + ld [bc], a + ld e, $04 + jr z, @+$05 + + add hl, hl + ld [bc], a + jp $c503 + + + ld [bc], a + jp z, $cd02 + + ld [bc], a + jp nc, $dd02 + + nop + add hl, de + ld b, $03 + adc [hl] + ld [bc], a + adc a + ld bc, $0290 + sub d + ld bc, $0193 + sub h + ld [bc], a + sub l + ld bc, $0196 + sub a + ld bc, $0298 + sbc c + ld bc, $019a + sbc e + ld bc, $019c + sbc l + ld bc, $01a2 + xor e + ld bc, $01ac + cp [hl] + ld [bc], a + jp $c901 + + + ld bc, $02ca + jp nc, $d301 + + ld [bc], a + ret c + + ld bc, $00dc + rlca + ld bc, $0611 + inc bc + ld a, [de] + ld [bc], a + dec de + inc b + sub h + ld bc, $0296 + sub a + ld [bc], a + sbc b + inc bc + sbc c + ld [bc], a + sbc d + ld [bc], a + xor a + ld [bc], a + or d + ld [bc], a + jp $c502 + + + ld [bc], a + call $ce01 + ld [bc], a + jp nc, $d601 + + inc bc + ldh [$FF00], a + rla + ld b, $04 + sub d + inc bc + sub e + inc bc + sbc h + ld [bc], a + sbc l + ld [bc], a + and d + ld [bc], a + xor [hl] + ld [bc], a + xor a + ld [bc], a + cp h + ld [bc], a + call $d003 + ld [bc], a + ret c + + inc bc + reti + + + inc bc + db $dd + inc b + db $e4 + nop + add hl, de + ld b, $01 + rlca + inc bc + sub c + ld [bc], a + sub e + inc b + sbc c + inc bc + sbc d + ld [bc], a + sbc e + ld [bc], a + sbc h + ld bc, $02a0 + and d + ld [bc], a + or a + ld bc, $02be + ret + + + ld [bc], a + call $d002 + ld bc, $02d1 + ret c + + ld bc, $01da + db $db + ld bc, $00df + ld d, $06 + inc b + adc [hl] + inc bc + adc a + ld [bc], a + sub b + ld [bc], a + sbc e + inc bc + cp b + inc bc + cp c + ld [bc], a + cp [hl] + ld [bc], a + jp $d302 + + + inc bc + ret nc + + inc bc + db $db + inc b + push de + inc b + jp nc, $e301 + + nop + inc d + ld bc, $1404 + inc bc + dec d + ld [bc], a + ld d, $04 + rla + inc b + jr jr_006_758f + + add hl, de + inc bc + or a + ld [bc], a + +jr_006_758f: + jp $c903 + + + inc bc + jp z, $cd02 + + inc bc + jp nc, $d601 + + ld [bc], a + jp c, $1a00 + + ld bc, $1202 + ld bc, $0213 + inc d + ld bc, $0115 + ld d, $03 + rla + ld [bc], a + jr jr_006_75af + + add hl, de + +jr_006_75af: + ld [bc], a + ld a, [de] + ld bc, $021b + ld h, $01 + daa + ld [bc], a + ld a, [hl+] + ld bc, $022b + or d + ld bc, $01b3 + jp $c501 + + + ld bc, $01c9 + jp z, $dd01 + + ld bc, $01df + pop hl + ld bc, $01e3 + db $e4 + nop + dec c + ld bc, $040a + ld [bc], a + rlca + inc b + ld a, [de] + inc bc + dec de + ld [bc], a + ld h, h + inc b + and e + inc bc + and h + ld bc, $01a5 + and [hl] + inc b + xor c + inc bc + xor d + ld [bc], a + call nz, $c702 + ld [bc], a + push bc + inc b + db $dd + nop + jr jr_006_75f6 + + inc bc + +jr_006_75f6: + rrca + ld [bc], a + db $10 + ld bc, $0411 + ld [de], a + inc bc + inc de + inc b + rla + inc bc + jr jr_006_7606 + + add hl, de + inc bc + +jr_006_7606: + ld a, [hl+] + ld [bc], a + dec hl + ld bc, $02c3 + call nz, $ca01 + ld [bc], a + db $dd + ld [bc], a + rst $18 + ld bc, $00e3 + rrca + ld bc, $0608 + inc b + ld h, $03 + daa + inc b + ld a, [hl+] + inc bc + dec hl + ld [bc], a + sbc l + ld bc, $019f + sbc [hl] + ld [bc], a + cp l + ld bc, $02c4 + jp $c502 + + + ld [bc], a + rst $08 + ld [bc], a + jp nc, $d602 + + ld [bc], a + rst $10 + ld [bc], a + pop hl + ld [bc], a + rst $18 + nop + jr jr_006_7641 + + inc b + inc sp + +jr_006_7641: + ld [bc], a + inc [hl] + ld bc, $0435 + ld [hl], $01 + scf + ld bc, $0438 + and e + inc bc + and h + ld bc, $01a5 + and [hl] + inc bc + or l + ld [bc], a + or [hl] + ld [bc], a + jp $c402 + + + ld [bc], a + rst $00 + inc bc + db $db + nop + inc c + ld bc, $020a + inc b + ld [$0903], sp + ld [bc], a + dec bc + inc b + jr nc, jr_006_7670 + + ld sp, $3202 + +jr_006_7670: + inc bc + dec a + inc b + cp h + ld [bc], a + push bc + inc bc + ret + + + inc bc + jp z, $cd02 + + ld bc, $02d0 + db $dd + nop + ld a, [bc] + ld [bc], a + ld [$0803], sp + inc b + inc bc + jr nc, @+$04 + + ld sp, $3903 + ld [bc], a + ld a, [hl-] + ld [bc], a + dec a + ld [bc], a + ld e, d + ld [bc], a + ld h, b + inc bc + ld l, l + ld [bc], a + ld l, a + ld [bc], a + ld [hl], d + inc b + cp h + ld [bc], a + rst $08 + ld [bc], a + jp nc, $d803 + + nop + jr jr_006_76a8 + + ld [bc], a + rlca + +jr_006_76a8: + inc bc + jr nc, @+$04 + + ld sp, $3201 + inc bc + inc sp + ld bc, $0134 + dec [hl] + ld [bc], a + ld [hl], $01 + jr c, @+$04 + + add hl, sp + ld bc, $013a + dec sp + ld bc, $013c + dec a + ld bc, $013e + ccf + inc bc + cp h + ld bc, $02c3 + push bc + ld bc, $01c9 + jp z, $cd01 + + ld bc, $01ce + jp nc, $db01 + + nop + dec d + ld [bc], a + inc b + rlca + inc b + ld [hl], $03 + jr c, jr_006_76e4 + + dec sp + inc bc + +jr_006_76e4: + xor l + ld bc, $01af + or b + ld [bc], a + cp b + ld [bc], a + cp d + ld bc, $02c3 + push bc + ld [bc], a + call $d401 + ld bc, $02d6 + reti + + + inc bc + db $dd + ld bc, $03df + db $e4 + ld bc, $00e3 + ld [$0a01], sp + ld [bc], a + ld b, $03 + ld [bc], a + inc c + ld bc, $020d + inc d + ld bc, $0117 + cpl + ld [bc], a + jr nc, @+$03 + + ld sp, $3201 + ld [bc], a + ld [hl], $01 + jr c, @+$04 + + add hl, sp + ld bc, $023b + ld c, e + ld bc, $024c + ld d, e + ld bc, $0254 + and a + ld bc, $01a8 + or c + ld bc, $02c3 + push bc + ld bc, $01d2 + sub $01 + ret c + + ld [bc], a + db $dd + ld [bc], a + rst $18 + nop + ld [$0b02], sp + inc bc + ld b, $04 + ld [bc], a + jr nc, @+$03 + + ld sp, $3601 + ld bc, $0138 + dec sp + ld [bc], a + ld b, c + ld bc, $0142 + ld b, e + ld [bc], a + ld c, e + ld bc, $014C + ld d, e + ld bc, $0154 + ld d, l + ld bc, $0156 + ld e, c + ld [bc], a + ld h, b + ld bc, $0169 + ld l, e + ld bc, $0271 + and a + ld bc, $01a8 + or c + ld bc, $01c3 + push bc + ld bc, $01d2 + call nc, $d501 + ld bc, $01da + db $dd + ld bc, $00df + add hl, bc + ld bc, $0408 + ld b, $06 + ld [bc], a + ld [$0901], sp + ld bc, $020b + inc d + ld [bc], a + rla + ld bc, $0118 + dec l + ld [bc], a + ld h, b + ld bc, $0167 + ld l, c + ld bc, $0271 + adc [hl] + ld bc, $028f + sub h + ld bc, $0197 + sbc h + ld bc, $01af + or c + ld bc, $01b9 + jp $c501 + + + ld bc, $01d2 + call nc, $d802 + ld bc, $01d9 + db $db + ld [bc], a + db $dd + ld [bc], a + rst $18 + nop + inc c + dec b + inc c + ld b, $02 + ld a, c + ld bc, $027a + ld a, l + ld bc, $017e + ld a, a + ld bc, $0183 + add a + ld bc, $0288 + adc [hl] + ld bc, $018f + sub b + ld [bc], a + sub h + ld bc, $0197 + sbc b + ld bc, $019b + sbc h + ld bc, $02a2 + and e + ld bc, $01a4 + and [hl] + ld [bc], a + and a + ld bc, $01a8 + jp $c502 + + + ld bc, $01d2 + db $db + ld [bc], a + db $dd + ld bc, $00df + ld c, $01 + ld a, [bc] + inc bc + ld [bc], a + rrca + ld bc, $0110 + ld de, $1702 + ld bc, $0118 + add hl, de + ld [bc], a + inc hl + ld bc, $0124 + dec h + ld bc, $022e + ld b, [hl] + ld bc, $0147 + ld c, b + ld [bc], a + ld c, a + ld bc, $0250 + ld d, a + ld bc, $0158 + ld e, c + ld bc, $015e + or a + ld bc, $01b9 + cp d + ld bc, $02c3 + push bc + ld bc, $01cd + rst $08 + ld bc, $01d2 + ret c + + ld bc, $00df + add hl, de + ld [bc], a + inc b + inc sp + inc bc + dec [hl] + inc b + ld [hl], $02 + jr c, jr_006_7848 + + dec sp + ld [bc], a + +jr_006_7848: + inc a + ld [bc], a + ccf + ld [bc], a + ld b, b + inc bc + push bc + ld [bc], a + rst $00 + ld bc, $01c9 + call $ce01 + ld [bc], a + ret nc + + ld [bc], a + jp nc, $dd01 + + ld bc, $00de + add hl, de + inc b + inc b + ld l, l + inc bc + ld l, [hl] + inc b + ld [hl], c + ld [bc], a + ld [hl], e + ld bc, $0174 + ld [hl], l + ld [bc], a + db $76 + inc bc + cp h + inc b + push bc + ld [bc], a + call $d202 + inc bc + ret c + + inc bc + db $dd + ld bc, $00e3 + add hl, de + inc bc + inc b + ld c, e + inc bc + ld c, h + inc b + ld e, c + ld [bc], a + ld e, a + ld [bc], a + ld e, [hl] + inc bc + cp b + ld [bc], a + cp e + ld [bc], a + jp $c902 + + + inc bc + call $d203 + inc b + push de + ld bc, $00e3 + inc d + inc bc + inc b + rlca + inc bc + jr nc, @+$04 + + ld sp, $3202 + inc bc + ld d, a + ld [bc], a + ld e, b + ld [bc], a + ld e, c + ld [bc], a + cp c + inc b + cp a + inc bc + ret nz + + ld [bc], a + pop bc + ld [bc], a + jp $c902 + + + ld [bc], a + jp z, $cd01 + + ld bc, $02ce + jp nc, $e301 + + nop + inc c + ld bc, $060e + inc b + ld [$0903], sp + ld [bc], a + ld a, [bc] + ld [bc], a + ld l, $04 + adc [hl] + inc bc + adc a + ld [bc], a + sub b + ld [bc], a + sbc e + ld bc, $02a0 + and c + ld bc, $02c3 + push bc + ld [bc], a + jp z, $d001 + + ld [bc], a + jp nc, $d301 + + nop + jp c, $9270 + + ld [bc], a + call nz, $0b02 + ld [hl], c + sub e + ld [bc], a + push bc + ld [bc], a + ld [hl-], a + ld [hl], c + sub h + ld [bc], a + add $02 + ld d, e + ld [hl], c + sub l + ld [bc], a + rst $00 + ld [bc], a + ld [hl], h + ld [hl], c + sub [hl] + ld [bc], a + ret z + + ld [bc], a + sub c + ld [hl], c + sub a + ld [bc], a + ret + + + ld [bc], a + cp d + ld [hl], c + sbc b + ld [bc], a + jp z, $d902 + + ld [hl], c + sbc c + ld [bc], a + rlc d + cp $71 + sbc d + ld [bc], a + call z, $2302 + ld [hl], d + sbc e + ld [bc], a + call $4602 + ld [hl], d + sbc h + ld [bc], a + adc $02 + ld a, a + ld [hl], d + sbc l + ld [bc], a + rst $08 + ld [bc], a + and d + ld [hl], d + sbc [hl] + ld [bc], a + ret nc + + ld [bc], a + jp $9f72 + + + ld [bc], a + pop de + ld [bc], a + add sp, $72 + and b + ld [bc], a + jp nc, $0d02 + + ld [hl], e + and c + ld [bc], a + db $d3 + ld [bc], a + ld c, h + ld [hl], e + and d + ld [bc], a + call nc, $7102 + ld [hl], e + and e + ld [bc], a + push de + ld [bc], a + and h + ld [hl], e + and h + ld [bc], a + sub $02 + ret + + + ld [hl], e + and l + ld [bc], a + rst $10 + ld [bc], a + add sp, $73 + and [hl] + ld [bc], a + ret c + + ld [bc], a + rrca + ld [hl], h + and a + ld [bc], a + reti + + + ld [bc], a + ld b, h + ld [hl], h + xor b + ld [bc], a + jp c, $6d02 + + ld [hl], h + xor c + ld [bc], a + db $db + ld [bc], a + sbc b + ld [hl], h + xor d + ld [bc], a + call c, $b902 + ld [hl], h + xor e + ld [bc], a + db $dd + ld [bc], a + ldh a, [$74] + xor h + ld [bc], a + sbc $02 + rla + ld [hl], l + xor l + ld [bc], a + rst $18 + ld [bc], a + ld [hl], $75 + xor [hl] + ld [bc], a + ldh [rSC], a + ld e, a + ld [hl], l + xor a + ld [bc], a + pop hl + ld [bc], a + ld a, [hl] + ld [hl], l + or b + ld [bc], a + ld [c], a + ld [bc], a + sbc l + ld [hl], l + or c + ld [bc], a + db $e3 + ld [bc], a + jp nc, $b275 + + ld [bc], a + db $e4 + ld [bc], a + di + ld [hl], l + or e + ld [bc], a + push hl + ld [bc], a + ld d, $76 + or h + ld [bc], a + and $02 + dec a + db $76 + or l + ld [bc], a + rst $20 + ld [bc], a + ld h, b + db $76 + or [hl] + ld [bc], a + add sp, $02 + add c + db $76 + or a + ld [bc], a + jp hl + + + ld [bc], a + and h + db $76 + cp b + ld [bc], a + ld [$d902], a + db $76 + cp c + ld [bc], a + db $eb + ld [bc], a + ld [bc], a + ld [hl], a + cp d + ld [bc], a + db $ec + ld [bc], a + dec a + ld [hl], a + cp e + ld [bc], a + db $ed + ld [bc], a + add b + ld [hl], a + cp h + ld [bc], a + xor $02 + cp a + ld [hl], a + cp l + ld [bc], a + rst $28 + ld [bc], a + db $fc + ld [hl], a + cp [hl] + ld [bc], a + ldh a, [rSC] + dec sp + ld a, b + cp a + ld [bc], a + pop af + ld [bc], a + ld h, b + ld a, b + ret nz + + ld [bc], a + ld a, [c] + ld [bc], a + ld a, a + ld a, b + pop bc + ld [bc], a + di + ld [bc], a + sbc h + ld a, b + jp nz, $f402 + + ld [bc], a + jp $c378 + + + ld [bc], a + push af + ld [bc], a + call $07b6 + ld a, [$d0a9] + ld l, a + ld h, $1e + call $0879 + ld bc, $78e8 + add hl, bc + ld b, $00 + +jr_006_7a26: + call Call_006_7a4c + call Call_006_7a5b + call Call_006_7a7d + push hl + ld de, $d0aa + ld h, b + ld l, $02 + call $0879 + add hl, de + ld d, h + ld e, l + pop hl + ld a, [hl+] + ld [de], a + inc de + ld a, [hl+] + ld [de], a + inc b + ld a, b + cp $05 + jr nz, jr_006_7a26 + + call $07be + ret + + +Call_006_7a4c: + push hl + ld l, b + ld h, $54 + call $0879 + ld de, $a350 + add hl, de + ld d, h + ld e, l + pop hl + ret + + +Call_006_7a5b: + push hl + push bc + push de + push de + ld e, [hl] + inc hl + ld d, [hl] + pop hl + ld bc, $0018 + add hl, bc + +jr_006_7a67: + ld a, [de] + inc de + ld b, a + or a + jr z, jr_006_7a77 + + ld a, [de] + inc de + ld c, a + +jr_006_7a70: + ld [hl], c + inc hl + dec b + jr nz, jr_006_7a70 + + jr jr_006_7a67 + +jr_006_7a77: + pop de + pop bc + pop hl + inc hl + inc hl + ret + + +Call_006_7a7d: + push hl + push bc + push de + ld a, [hl+] + ld h, [hl] + ld l, a + ld de, $d089 + call $2e89 + pop hl + ld de, $d089 + +jr_006_7a8d: + ld a, [de] + ld [hl+], a + or a + jr z, jr_006_7a95 + + inc de + jr jr_006_7a8d + +jr_006_7a95: + pop bc + pop hl + inc hl + inc hl + ret + + + xor a + ld [$d0a6], a + ld a, $01 + +jr_006_7aa0: + call Call_006_7ae4 + ret nc + + sla a + cp $10 + jr z, jr_006_7aac + + jr jr_006_7aa0 + +jr_006_7aac: + ld a, $03 + call Call_006_7ae4 + ret nc + + ld a, $05 + call Call_006_7ae4 + ret nc + + ld a, $09 + call Call_006_7ae4 + ret nc + + ld a, $06 + call Call_006_7ae4 + ret nc + + ld a, $0a + call Call_006_7ae4 + ret nc + + ld a, $0c + call Call_006_7ae4 + ret nc + + ld a, $f7 + +jr_006_7ad2: + call Call_006_7ae4 + ret nc + + sra a + cp $ff + jr z, jr_006_7ade + + jr jr_006_7ad2 + +jr_006_7ade: + call Call_006_7ae4 + ret nc + + scf + ret + + +Call_006_7ae4: + push af + ld hl, $d088 + ld b, [hl] + rst $28 + ld [bc], a + dec h + db $76 + jr c, jr_006_7af5 + + pop af + ld [$d0a6], a + or a + ret + + +jr_006_7af5: + pop af + scf + ret + + INCROM $1baf8, $1c000 \ No newline at end of file diff --git a/src/wram.asm b/src/wram.asm index 5d22c69..7039f14 100644 --- a/src/wram.asm +++ b/src/wram.asm @@ -1459,9 +1459,15 @@ wcfda:: ; cfda ds $7 wcfe3:: ; cfe3 - ds $1 + ds $4 - ds $1c +; name buffer in naming screen +wNameBuffer:: ; cfe7 + ds $18 + +; current name length in naming screen +wNameLength:: ; cfff + ds $1 SECTION "WRAM1", WRAMX -- cgit v1.2.3 From 218885d0e33412e249eba132ddfa4ffcc5056a0b Mon Sep 17 00:00:00 2001 From: jidoc01 Date: Mon, 24 Jun 2019 20:22:25 +0900 Subject: [Bank 6] All data seperation. Func call labeled. --- src/engine/bank01.asm | 1 + src/engine/bank06.asm | 5438 +++++++++++++------------------------------------ src/engine/home.asm | 2 +- src/wram.asm | 36 +- 4 files changed, 1419 insertions(+), 4058 deletions(-) (limited to 'src') diff --git a/src/engine/bank01.asm b/src/engine/bank01.asm index 1fca015..4647146 100644 --- a/src/engine/bank01.asm +++ b/src/engine/bank01.asm @@ -3695,6 +3695,7 @@ DisplayCardPageOnLeftOrRightPressed: ; 57cd (1:57cd) ret ; 0x57df +Func_57df: INCROM $57df, $5892 ; display the previous valid card page diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm index bf0a55e..a4a577d 100644 --- a/src/engine/bank06.asm +++ b/src/engine/bank06.asm @@ -266,32 +266,33 @@ Func_1a61f: ; 1a61f (6:661f) call SetupText pop af or a - jr nz, .asm_1a640 + jr nz, .else ld a, $40 - call $663b + call .legendary_card_text ld a, $5f - call $663b + call .legendary_card_text ld a, $76 - call $663b + call .legendary_card_text ld a, $c1 +.legendary_card_text ldtx hl, ReceivedLegendaryCardText - jr .asm_1a660 -.asm_1a640 + jr .print_text +.else ldtx hl, ReceivedCardText cp $1e - jr z, .asm_1a660 + jr z, .print_text cp $43 - jr z, .asm_1a660 + jr z, .print_text ldtx hl, ReceivedPromotionalFlyingPikachuText cp $64 - jr z, .asm_1a660 + jr z, .print_text ldtx hl, ReceivedPromotionalSurfingPikachuText cp $65 - jr z, .asm_1a660 + jr z, .print_text cp $66 - jr z, .asm_1a660 + jr z, .print_text ldtx hl, ReceivedPromotionalCardText -.asm_1a660 +.print_text push hl ld e, a ld d, $0 @@ -307,4107 +308,1440 @@ Func_1a61f: ; 1a61f (6:661f) ld a, PLAYER_TURN ldh [hWhoseTurn], a pop hl - bank1call $5e5f -.asm_1a680 + bank1call _DisplayCardDetailScreen +.loop call AssertSongFinished or a - jr nz, .asm_1a680 + jr nz, .loop call ResumeSong - bank1call $5773 + bank1call OpenCardPage_FromHand ret ; 0x1a68d + ld a, $c2 + ldh [$97], a + ld h, a + ld l, $00 - ld a, $c2 - ldh [$97], a - ld h, a - ld l, $00 - -jr_006_6694: - xor a - ld [hl+], a - ld a, l - cp $3c - jr c, jr_006_6694 +.asm_006_6694 + xor a + ld [hli], a + ld a, l + cp $3c + jr c, .asm_006_6694 - xor a - ld hl, $c400 - ld de, $c510 - ld c, $00 + xor a + ld hl, wBoosterCardsDrawn + ld de, wDuelTempList + ld c, $00 -jr_006_66a4: - ld a, [hl+] - or a - jr z, jr_006_66ae +.asm_006_66a4 + ld a, [hli] + or a + jr z, .asm_006_66ae - ld a, c - ld [de], a - inc de - inc c - jr jr_006_66a4 + ld a, c + ld [de], a + inc de + inc c + jr .asm_006_66a4 -jr_006_66ae: - ld a, $ff - ld [de], a - ld de, $389f - call $2275 - rst $18 - sbc d - ld d, l - ld hl, $0056 - ld de, $0196 - rst $18 - add b - ld d, l - ld a, $09 - ld [$cbd6], a - rst $18 - ldh a, [rHDMA5] +.asm_006_66ae + ld a, $ff + ld [de], a + lb de, $38, $9f + call SetupText + bank1call InitAndDrawCardListScreenLayout + ld hl, $0056 + ld de, $0196 + bank1call SetCardListHeaderText + ld a, A_BUTTON | START + ld [wNoItemSelectionMenuKeys], a + bank1call DisplayCardList ret CommentedOut_1a6cc: ; 1a6cc (6:66cc) - ret - - ldh a, [$81] - or a - ret nz - - push hl - push de - push bc - ld hl, $a100 - ld bc, $0250 - ld a, [$a00b] - ld e, a - -jr_006_66de: - ld a, [hl+] - xor e - ld e, a - dec bc - ld a, c - or b - jr nz, jr_006_66de + ret - ld a, e - pop bc - pop de - pop hl - or a - ret z + ldh a, [$81] + or a + ret nz - xor a - ld [$cab6], a - ld hl, $cad3 - ld [hl+], a - ld [hl], a - ldh [$92], a - ldh [$93], a - rst $18 - sub b - ld e, c - call $04a2 - call $2119 - rst $18 - db $eb - ld e, d - ld a, [$cab4] - cp $01 - jr nz, jr_006_6719 + push hl + push de + push bc + ld hl, $a100 + ld bc, $0250 + ld a, [$a00b] + ld e, a - ld a, $e4 - ld [$cabd], a - ld [$cabc], a - ld a, $01 - ld [$cabf], a +.asm_006_66de + ld a, [hli] + xor e + ld e, a + dec bc + ld a, c + or b + jr nz, .asm_006_66de -jr_006_6719: - ld de, $389f - call $2275 - ld hl, $00a3 - rst $18 - rst $18 - ld d, a - ld a, $0a - ld [$0000], a - xor a - ldh [$81], a - ld [$4000], a - ld [$a000], a - ld [$0000], a - jp $051b + ld a, e + pop bc + pop de + pop hl + or a + ret z + xor a + ld [wTileMapFill], a + ld hl, wDoFrameFunction + ld [hli], a + ld [hl], a + ldh [$92], a + ldh [$93], a + bank1call ZeroObjectPositionsAndToggleOAMCopy + call EmptyScreen + call LoadSymbolsFont + bank1call SetDefaultPalettes + ld a, [wConsole] + cp $01 + jr nz, .asm_006_6719 + + ld a, $e4 + ld [wOBP0], a + ld [wBGP], a + ld a, $01 + ld [wFlushPaletteFlags], a + +.asm_006_6719 + lb de, $38, $9f + call SetupText + ld hl, $00a3 + bank1call Func_57df + ld a, $0a + ld [$0000], a + xor a + ldh [$81], a + ld [$4000], a + ld [$a000], a + ld [$0000], a + jp Reset - ret + ret + ldh a, [$81] + or a + ret nz - ldh a, [$81] - or a - ret nz + push hl + push de + push bc + ld hl, $a100 + ld bc, $0250 + ld e, $00 - push hl - push de - push bc - ld hl, $a100 - ld bc, $0250 - ld e, $00 +.asm_006_6749 + ld a, [hli] + xor e + ld e, a + dec bc + ld a, c + or b + jr nz, .asm_006_6749 -jr_006_6749: - ld a, [hl+] - xor e - ld e, a - dec bc - ld a, c - or b - jr nz, jr_006_6749 + ld a, $0a + ld [$0000], a + ld a, e + ld [$a00b], a + pop bc + pop de + pop hl + ret - ld a, $0a - ld [$0000], a - ld a, e - ld [$a00b], a - pop bc - pop de - pop hl - ret +Unknown_1a75e: + INCROM $1a75e,$1a787 +; set zero from hl in b bytes +ClearMemory: + push af + push bc + push hl + ld b, a + xor a - ld bc, $1e01 - ld [bc], a - rst $38 - ld [bc], a - ld bc, $022b - ld c, $01 - add hl, de - ld [bc], a - rst $38 - ld [bc], a - ld bc, $022c - ld c, $01 - add hl, de - ld [bc], a - rst $38 - ld [bc], a - ld bc, $022d - ld c, $01 - add hl, de - ld [bc], a - rst $38 - ld [bc], a - ld bc, $022e - ld c, $01 - add hl, de - ld [bc], a - rst $38 +.loop + ld [hli], a + dec b + jr nz, .loop -Call_006_6787: - push af - push bc - push hl - ld b, a - xor a + pop hl + pop bc + pop af + ret -jr_006_678c: - ld [hl+], a - dec b - jr nz, jr_006_678c +Func_006_6794: + push af + inc a + jr z, .asm_006_679c - pop hl - pop bc - pop af - ret + ld a, $02 + jr .asm_006_679e +.asm_006_679c + ld a, $03 -Call_006_6794: - push af - inc a - jr z, jr_006_679c +.asm_006_679e + call PlaySFX + pop af + ret - ld a, $02 - jr jr_006_679e + ld e, l + ld d, h + ld a, $0c + ld hl, Unknown_1a75e + ld bc, $0c01 + call Func_006_6846 + call Set_OBJ_8x8 + xor a + ld [wTileMapFill], a + call EmptyScreen + call ZeroObjectPositions + ld a, $01 + ld [wVBlankOAMCopyToggle], a + call LoadSymbolsFont + lb de, $38, $bf + call SetupText + call Func_006_6a65 + ld a, $02 + ld [wd009], a + call Func_006_6892 + xor a + ld [wd006], a + ld [wcea4], a + ld a, $09 + ld [wd005], a + ld a, $06 + ld [wcea9], a + ld a, $0f + ld [wceaa], a + ld a, $00 + ld [wceab], a + +.asm_006_67f1 + ld a, $01 + ld [wVBlankOAMCopyToggle], a + call DoFrame + call UpdateRNGSources + ldh a, [$8f] + and $08 + jr z, .asm_006_6819 + + ld a, $01 + call Func_006_6794 + call Func_006_6a07 + ld a, $06 + ld [wd006], a + ld a, $05 + ld [wcea4], a + call Func_006_6a23 + jr .asm_006_67f1 + +.asm_006_6819 + call Func_006_6908 + jr nc, .asm_006_67f1 + + cp $ff + jr z, .asm_006_682b + + call Func_006_6a87 + jr nc, .asm_006_67f1 + + call Func_006_6880 + ret -jr_006_679c: - ld a, $03 +.asm_006_682b + ld a, [wNamingScreenBufferLength] + or a + jr z, .asm_006_67f1 -jr_006_679e: - call $3796 - pop af - ret + ld e, a + ld d, $00 + ld hl, wNamingScreenBuffer + add hl, de + dec hl + dec hl + ld [hl], $00 + ld hl, wNamingScreenBufferLength + dec [hl] + dec [hl] + call Func_006_68cb + jr .asm_006_67f1 + +Func_006_6846: + ld [wd004], a + push hl + ld hl, wd007 + ld [hl], b + inc hl + ld [hl], c + pop hl + ld b, h + ld c, l + ld hl, wd002 + ld [hl], c + inc hl + ld [hl], b + ld hl, wd000 + ld [hl], e + inc hl + ld [hl], d + ld a, $18 + ld hl, wNamingScreenBuffer + call ClearMemory + ld hl, wNamingScreenBuffer + ld a, [wd004] + ld b, a + inc b +.asm_006_686f + ld a, [de] + inc de + ld [hli], a + dec b + jr nz, Func_006_6846.asm_006_686f - ld e, l - ld d, h - ld a, $0c - ld hl, $675e - ld bc, $0c01 - call Call_006_6846 - call Set_OBJ_8x8 - xor a - ld [$cab6], a - call EmptyScreen - call ZeroObjectPositions - ld a, $01 - ld [$cac0], a - call LoadSymbolsFont - ld de, $38bf - call SetupText - call Call_006_6a65 - ld a, $02 - ld [$d009], a - call Call_006_6892 - xor a - ld [$d006], a - ld [$cea4], a - ld a, $09 - ld [$d005], a - ld a, $06 - ld [$cea9], a - ld a, $0f - ld [$ceaa], a - ld a, $00 - ld [$ceab], a + ld hl, wNamingScreenBuffer + call GetTextSizeInTiles + ld a, c + ld [wNamingScreenBufferLength], a + ret -jr_006_67f1: - ld a, $01 - ld [$cac0], a - call DoFrame - call UpdateRNGSources - ldh a, [$8f] - and $08 - jr z, jr_006_6819 +Func_006_6880: + ld hl, wd000 + ld e, [hl] + inc hl + ld d, [hl] + ld l, e + ld h, d + ld de, wNamingScreenBuffer + ld a, [wd004] + ld b, a + inc b + jr Func_006_6846.asm_006_686f - ld a, $01 - call Call_006_6794 - call Call_006_6a07 - ld a, $06 - ld [$d006], a - ld a, $05 - ld [$cea4], a - call Call_006_6a23 - jr jr_006_67f1 +Func_006_6892: + call Func_006_68c1 + call Func_006_68cb + ld hl, wd002 + ld c, [hl] + inc hl + ld a, [hl] + ld h, a + or c + jr z, .asm_006_68a6 + + ld l, c + call PlaceTextItems + +.asm_006_68a6 + ld hl, .data + call PlaceTextItems + ld hl, $0221 + ld de, $0204 + call InitTextPrinting + call ProcessTextFromID + call EnableLCD + ret -jr_006_6819: - call Call_006_6908 - jr nc, jr_006_67f1 +.data + db $0f, $10, $1d, $02, $ff - cp $ff - jr z, jr_006_682b +Func_006_68c1: + ld de, $0003 + ld bc, $140f + call DrawRegularTextBox + ret - call Call_006_6a87 - jr nc, jr_006_67f1 +Func_006_68cb: + ld hl, wd007 + ld d, [hl] + inc hl + ld e, [hl] + push de + call InitTextPrinting + ld a, [wd004] + ld e, a + ld a, $14 + sub e + inc a + ld e, a + ld d, $00 + ld hl, .char_underbar + add hl, de + call ProcessText + pop de + call InitTextPrinting + ld hl, wNamingScreenBuffer + call ProcessText + ret +.char_underbar +rept $a + db $56, $03 ; "_" +endr + db $56, $00 - call Call_006_6880 - ret +Func_006_6908: + xor a + ld [wcfe3], a + ldh a, [$8f] + or a + jp z, .asm_006_69d9 + ld b, a + ld a, [wcea9] + ld c, a + ld a, [wd006] + ld h, a + ld a, [wcea4] + ld l, a + bit 6, b + jr z, .asm_006_692c + dec a + bit 7, a + jr z, .asm_006_69a7 + ld a, c + dec a + jr .asm_006_69a7 +.asm_006_692c + bit 7, b + jr z, .asm_006_6937 + inc a + cp c + jr c, .asm_006_69a7 + xor a + jr .asm_006_69a7 +.asm_006_6937 + ld a, [wd005] + ld c, a + ld a, h + bit 5, b + jr z, .asm_006_6974 + ld d, a + ld a, $06 + cp l + ld a, d + jr nz, .asm_006_696b + push hl + push bc + push af + call Func_006_6b93 + inc hl + inc hl + inc hl + inc hl + inc hl + ld a, [hl] + dec a + ld d, a + pop af + pop bc + pop hl + sub d + cp $ff + jr nz, .asm_006_6962 + ld a, c + sub $02 + jr .asm_006_69aa +.asm_006_6962 + cp $fe + jr nz, .asm_006_696b + ld a, c + sub $03 + jr .asm_006_69aa +.asm_006_696b + dec a + bit 7, a + jr z, .asm_006_69aa + ld a, c + dec a + jr .asm_006_69aa +.asm_006_6974 + bit 4, b + jr z, .asm_006_69d9 + ld d, a + ld a, $06 + cp l + ld a, d + jr nz, .asm_006_6990 + push hl + push bc + push af + call Func_006_6b93 + inc hl + inc hl + inc hl + inc hl + ld a, [hl] + dec a + ld d, a + pop af + pop bc + pop hl + add d +.asm_006_6990 + inc a + cp c + jr c, .asm_006_69aa + inc c + cp c + jr c, .asm_006_69a4 + inc c + cp c + jr c, .asm_006_69a0 + ld a, $02 + jr .asm_006_69aa +.asm_006_69a0 + ld a, $01 + jr .asm_006_69aa +.asm_006_69a4 + xor a + jr .asm_006_69aa +.asm_006_69a7 + ld l, a + jr .asm_006_69ab +.asm_006_69aa + ld h, a +.asm_006_69ab + push hl + call Func_006_6b93 + inc hl + inc hl + inc hl + ld a, [wd009] + cp $02 + jr nz, .asm_006_69bb + inc hl + inc hl +.asm_006_69bb + ld d, [hl] + push de + call Func_006_6a07 + pop de + pop hl + ld a, l + ld [wcea4], a + ld a, h + ld [wd006], a + xor a + ld [wcea3], a + ld a, $06 + cp d + jp z, Func_006_6908 + ld a, $01 + ld [wcfe3], a +.asm_006_69d9 + ldh a, [$91] + and $03 + jr z, .asm_006_69ef + and $01 + jr nz, .asm_006_69e5 + ld a, $ff +.asm_006_69e5 + call Func_006_6794 + push af + call Func_006_6a23 + pop af + scf + ret +.asm_006_69ef + ld a, [wcfe3] + or a + jr z, .asm_006_69f8 + call PlaySFX +.asm_006_69f8 + ld hl, wcea3 + ld a, [hl] + inc [hl] + and $0f + ret nz + ld a, [wceaa] + bit 4, [hl] + jr z, Func_006_6a07.asm_006_6a0a + +Func_006_6a07: + ld a, [wceab] +.asm_006_6a0a + ld e, a + ld a, [wd006] + ld h, a + ld a, [wcea4] + ld l, a + call Func_006_6b93 + ld a, [hli] + ld c, a + ld b, [hl] + dec b + ld a, e + call Func_006_6a28 + call WriteByteToBGMap0 + or a + ret +Func_006_6a23: + ld a, [wceaa] + jr Func_006_6a07.asm_006_6a0a -jr_006_682b: - ld a, [wNameLength] - or a - jr z, jr_006_67f1 +Func_006_6a28: + push af + push bc + push de + push hl + push af + call ZeroObjectPositions + pop af + ld b, a + ld a, [wceab] + cp b + jr z, .asm_006_6a60 + ld a, [wNamingScreenBufferLength] + srl a + ld d, a + ld a, [wd004] + srl a + ld e, a + ld a, d + cp e + jr nz, .asm_006_6a49 + dec a +.asm_006_6a49 + ld hl, wd007 + add [hl] + ld d, a + ld h, $08 + ld l, d + call HtimesL + ld a, l + add $08 + ld d, a + ld e, $18 + ld bc, $0000 + call SetOneObjectAttributes +.asm_006_6a60 + pop hl + pop de + pop bc + pop af + ret - ld e, a - ld d, $00 - ld hl, wNameBuffer - add hl, de - dec hl - dec hl - ld [hl], $00 - ld hl, wNameLength - dec [hl] - dec [hl] - call Call_006_68cb - jr jr_006_67f1 +Func_006_6a65: + ld hl, v0Tiles0 + ld de, .data + ld b, $00 +.asm_006_6a6d + ld a, $10 + cp b + ret z + inc b + ld a, [de] + inc de + ld [hli], a + jr .asm_006_6a6d +.data +rept $6a87-$6a77 + db $ff +endr -Call_006_6846: - ld [$d004], a - push hl - ld hl, $d007 - ld [hl], b - inc hl - ld [hl], c - pop hl - ld b, h - ld c, l - ld hl, $d002 - ld [hl], c - inc hl - ld [hl], b - ld hl, $d000 - ld [hl], e - inc hl - ld [hl], d - ld a, $18 - ld hl, wNameBuffer - call Call_006_6787 - ld hl, wNameBuffer - ld a, [$d004] - ld b, a - inc b +; bc = xy coordinate(by each tile) in the naming screen +; hl = the pointer to its character information(by 6bytes) +; info. structure: (1) / (1) / (1) / character code(2) / (1) +Func_006_6a87: + ld a, [wd006] + ld h, a + ld a, [wcea4] + ld l, a + call Func_006_6b93 + inc hl + inc hl + ld e, [hl] + inc hl + ld a, [hli] + ld d, a + cp $09 + jp z, .asm_006_6b5f + cp $07 + jr nz, .asm_006_6ab8 + ld a, [wd009] + or a + jr nz, .asm_006_6aac + ld a, $01 + jp .asm_006_6ace +.asm_006_6aac + dec a + jr nz, .asm_006_6ab4 + ld a, $02 + jp .asm_006_6ace +.asm_006_6ab4 + xor a + jp .asm_006_6ace +.asm_006_6ab8 + cp $08 + jr nz, .asm_006_6ad6 + ld a, [wd009] + or a + jr nz, .asm_006_6ac6 + ld a, $02 + jr .asm_006_6ace +.asm_006_6ac6 + dec a + jr nz, .asm_006_6acc + xor a + jr .asm_006_6ace +.asm_006_6acc + ld a, $01 +.asm_006_6ace + ld [wd009], a + call Func_006_6892 + or a + ret +.asm_006_6ad6 + ld a, [wd009] + cp $02 + jr z, .read_char + ld bc, $0359 + ld a, d + cp b + jr nz, .asm_006_6af4 + ld a, e + cp c + jr nz, .asm_006_6af4 + push hl + ld hl, $6cf9 + call Func_006_6b61 + pop hl + jr c, .asm_006_6b5d + jr .asm_006_6b09 +.asm_006_6af4 + ld bc, $035b + ld a, d + cp b + jr nz, .asm_006_6b1d + ld a, e + cp c + jr nz, .asm_006_6b1d + push hl + ld hl, $6d5f + call Func_006_6b61 + pop hl + jr c, .asm_006_6b5d +.asm_006_6b09 + ld a, [wNamingScreenBufferLength] ; cfff: current player name length(by byte). + dec a + dec a + ld [wNamingScreenBufferLength], a + ld hl, wNamingScreenBuffer ; cfe7: temporary buffer for player name. + push de + ld d, $00 + ld e, a + add hl, de + pop de + ld a, [hl] + jr .asm_006_6b37 +.asm_006_6b1d + ld a, d + or a + jr nz, .asm_006_6b37 + ld a, [wd009] + or a + jr nz, .asm_006_6b2b + ld a, $0e + jr .asm_006_6b37 +.asm_006_6b2b + ld a, $0f + jr .asm_006_6b37 +; read character code from info. to register. +; hl: pointer. +.read_char + ld e, [hl] + inc hl + ld a, [hl] ; a: first byte of the code. + or a + ; if 2 bytes code, jump. + jr nz, .asm_006_6b37 + ; if 1 byte code(ascii), + ; set first byte to $0e. + ld a, $0e +; on 2 bytes code. +.asm_006_6b37 + ld d, a ; de: character code. + ld hl, wNamingScreenBufferLength + ld a, [hl] + ld c, a + push hl + ld hl, wd004 + cp [hl] + pop hl + jr nz, .asm_006_6b4c + ; if the buffer is full + ; just change the last character of it. + ld hl, wNamingScreenBuffer + dec hl + dec hl + jr .asm_006_6b51 +; increase name length before add the character. +.asm_006_6b4c + inc [hl] ; hl: wNamingScreenBufferLength => name length + inc [hl] + ld hl, wNamingScreenBuffer +; write 2 bytes character codes to the name buffer. +; de: 2 bytes character codes. +; hl: dest. +.asm_006_6b51 + ld b, $00 + add hl, bc + ld [hl], d + inc hl + ld [hl], e + inc hl + ld [hl], $00 ; null terminator. + call Func_006_68cb +.asm_006_6b5d + or a + ret +.asm_006_6b5f + scf + ret -jr_006_686f: - ld a, [de] - inc de - ld [hl+], a - dec b - jr nz, jr_006_686f +Func_006_6b61: + ld a, [wNamingScreenBufferLength] + or a + jr z, .asm_006_6b91 + dec a + dec a + push hl + ld hl, wNamingScreenBuffer + ld d, $00 + ld e, a + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld a, $0f + cp e + jr nz, .asm_006_6b7a + dec e +.asm_006_6b7a + pop hl +.asm_006_6b7b + ld a, [hli] + or a + jr z, .asm_006_6b91 + cp d + jr nz, .asm_006_6b8c + ld a, [hl] + cp e + jr nz, .asm_006_6b8c + inc hl + ld e, [hl] + inc hl + ld d, [hl] + or a + ret +.asm_006_6b8c + inc hl + inc hl + inc hl + jr .asm_006_6b7b +.asm_006_6b91 + scf + ret - ld hl, wNameBuffer - call GetTextSizeInTiles - ld a, c - ld [wNameLength], a - ret +Func_006_6b93: + push de + ld e, l + ld d, h + ld a, [wcea9] + ld l, a + call HtimesL + ld a, l + add e + ld hl, .data + pop de + or a + ret z +.asm_006_6ba5 + inc hl + inc hl + inc hl + inc hl + inc hl + inc hl + dec a + jr nz, .asm_006_6ba5 + ret +.data + INCROM $1abaf,$1ad89 +Func_1ad89: ; 1ad89 (6:6d89) + push af + ld a, [de] + or a + jr nz, .asm_006_6d91 + ld a, $06 + ld [de], a +.asm_006_6d91 + pop af + inc a + call Func_006_6846 + call Set_OBJ_8x8 + xor a + ld [wTileMapFill], a + call EmptyScreen + call ZeroObjectPositions + ld a, $01 + ld [wVBlankOAMCopyToggle], a + call LoadSymbolsFont + ld de, $38bf + call SetupText + call Func_006_6e37 + xor a + ld [wd009], a + call Func_006_6e99 + xor a + ld [wd006], a + ld [wcea4], a + ld a, $09 + ld [wd005], a + ld a, $07 + ld [wcea9], a + ld a, $0f + ld [wceaa], a + ld a, $00 + ld [wceab], a +.asm_006_6dd6 + ld a, $01 + ld [wVBlankOAMCopyToggle], a + call DoFrame + call UpdateRNGSources + ldh a, [$8f] + and $08 + jr z, .asm_006_6dfc + ld a, $01 + call Func_006_6794 + call Func_006_6fa1 + ld a, $06 + ld [wd006], a + ld [wcea4], a + call Func_006_6fbd + jr .asm_006_6dd6 +.asm_006_6dfc + call Func_006_6efb + jr nc, .asm_006_6dd6 + cp $ff + jr z, .asm_006_6e1c + call Func_006_6ec3 + jr nc, .asm_006_6dd6 + call Func_006_6880 + ld hl, wd000 + ld a, [hli] + ld h, [hl] + ld l, a + inc hl + ld a, [hl] + or a + jr nz, .asm_006_6e1b + dec hl + ld [hl], $00 +.asm_006_6e1b + ret +.asm_006_6e1c + ld a, [wNamingScreenBufferLength] + cp $02 + jr c, .asm_006_6dd6 + ld e, a + ld d, $00 + ld hl, wNamingScreenBuffer + add hl, de + dec hl + ld [hl], $00 + ld hl, wNamingScreenBufferLength + dec [hl] + call Func_006_6e59 + jp .asm_006_6dd6 + +Func_006_6e37: + ld hl, v0Tiles0 + ld de, .data + ld b, $00 +.asm_006_6e3f + ld a, $10 + cp b + ret z + inc b + ld a, [de] + inc de + ld [hli], a + jr .asm_006_6e3f +.data +rept $6e58-$6e48 + db $f0 +endr + +Func_006_6e59: + ld hl, wd007 + ld d, [hl] + inc hl + ld e, [hl] + call InitTextPrinting + ld hl, .data + ld de, wDefaultText +.asm_006_6e68 + ld a, [hli] + ld [de], a + inc de + or a + jr nz, .asm_006_6e68 + ld hl, wNamingScreenBuffer + ld de, wDefaultText +.asm_006_6e74 + ld a, [hli] + or a + jr z, .asm_006_6e7c + ld [de], a + inc de + jr .asm_006_6e74 +.asm_006_6e7c + ld hl, wDefaultText + call ProcessText + ret +.data + INCROM $1ae83,$1ae99 + +Func_006_6e99: + call Func_006_68c1 + call Func_006_6e59 + ld hl, wd002 + ld c, [hl] + inc hl + ld a, [hl] + ld h, a + or c + jr z, .asm_006_6ead + ld l, c + call PlaceTextItems +.asm_006_6ead + ld hl, $68bc + call PlaceTextItems + ld hl, $0222 + ld de, $0204 + call InitTextPrinting + call ProcessTextFromID + call EnableLCD + ret -Call_006_6880: - ld hl, $d000 - ld e, [hl] - inc hl - ld d, [hl] - ld l, e - ld h, d - ld de, wNameBuffer - ld a, [$d004] - ld b, a - inc b - jr jr_006_686f - -Call_006_6892: - call Call_006_68c1 - call Call_006_68cb - ld hl, $d002 - ld c, [hl] - inc hl - ld a, [hl] - ld h, a - or c - jr z, jr_006_68a6 - - ld l, c - call PlaceTextItems - -jr_006_68a6: - ld hl, $68bc - call PlaceTextItems - ld hl, $0221 - ld de, $0204 - call InitTextPrinting - call ProcessTextFromID - call EnableLCD - ret - - - rrca - db $10 - dec e - ld [bc], a - rst $38 - -Call_006_68c1: - ld de, $0003 - ld bc, $140f - call $1e7c - ret - - -Call_006_68cb: - ld hl, $d007 - ld d, [hl] - inc hl - ld e, [hl] - push de - call $22ae - ld a, [$d004] - ld e, a - ld a, $14 - sub e - inc a - ld e, a - ld d, $00 - ld hl, $68f2 - add hl, de - call $21c5 - pop de - call $22ae - ld hl, wNameBuffer - call $21c5 - ret - - - ld d, [hl] - inc bc - ld d, [hl] - inc bc - ld d, [hl] - inc bc - ld d, [hl] - inc bc - ld d, [hl] - inc bc - ld d, [hl] - inc bc - ld d, [hl] - inc bc - ld d, [hl] - inc bc - ld d, [hl] - inc bc - ld d, [hl] - inc bc - ld d, [hl] - nop - -Call_006_6908: -Jump_006_6908: - xor a - ld [$cfe3], a - ldh a, [$8f] - or a - jp z, Jump_006_69d9 - - ld b, a - ld a, [$cea9] - ld c, a - ld a, [$d006] - ld h, a - ld a, [$cea4] - ld l, a - bit 6, b - jr z, jr_006_692c - - dec a - bit 7, a - jr z, jr_006_69a7 - - ld a, c - dec a - jr jr_006_69a7 - -jr_006_692c: - bit 7, b - jr z, jr_006_6937 - - inc a - cp c - jr c, jr_006_69a7 - - xor a - jr jr_006_69a7 - -jr_006_6937: - ld a, [$d005] - ld c, a - ld a, h - bit 5, b - jr z, jr_006_6974 - - ld d, a - ld a, $06 - cp l - ld a, d - jr nz, jr_006_696b - - push hl - push bc - push af - call Call_006_6b93 - inc hl - inc hl - inc hl - inc hl - inc hl - ld a, [hl] - dec a - ld d, a - pop af - pop bc - pop hl - sub d - cp $ff - jr nz, jr_006_6962 - - ld a, c - sub $02 - jr jr_006_69aa - -jr_006_6962: - cp $fe - jr nz, jr_006_696b - - ld a, c - sub $03 - jr jr_006_69aa - -jr_006_696b: - dec a - bit 7, a - jr z, jr_006_69aa - - ld a, c - dec a - jr jr_006_69aa - -jr_006_6974: - bit 4, b - jr z, jr_006_69d9 - - ld d, a - ld a, $06 - cp l - ld a, d - jr nz, jr_006_6990 - - push hl - push bc - push af - call Call_006_6b93 - inc hl - inc hl - inc hl - inc hl - ld a, [hl] - dec a - ld d, a - pop af - pop bc - pop hl - add d - -jr_006_6990: - inc a - cp c - jr c, jr_006_69aa - - inc c - cp c - jr c, jr_006_69a4 - - inc c - cp c - jr c, jr_006_69a0 - - ld a, $02 - jr jr_006_69aa - -jr_006_69a0: - ld a, $01 - jr jr_006_69aa - -jr_006_69a4: - xor a - jr jr_006_69aa - -jr_006_69a7: - ld l, a - jr jr_006_69ab - -jr_006_69aa: - ld h, a - -jr_006_69ab: - push hl - call Call_006_6b93 - inc hl - inc hl - inc hl - ld a, [$d009] - cp $02 - jr nz, jr_006_69bb - - inc hl - inc hl - -jr_006_69bb: - ld d, [hl] - push de - call Call_006_6a07 - pop de - pop hl - ld a, l - ld [$cea4], a - ld a, h - ld [$d006], a - xor a - ld [$cea3], a - ld a, $06 - cp d - jp z, Jump_006_6908 - - ld a, $01 - ld [$cfe3], a - -Jump_006_69d9: -jr_006_69d9: - ldh a, [$91] - and $03 - jr z, jr_006_69ef - - and $01 - jr nz, jr_006_69e5 - - ld a, $ff - -jr_006_69e5: - call Call_006_6794 - push af - call Call_006_6a23 - pop af - scf - ret - - -jr_006_69ef: - ld a, [$cfe3] - or a - jr z, jr_006_69f8 - - call $3796 - -jr_006_69f8: - ld hl, $cea3 - ld a, [hl] - inc [hl] - and $0f - ret nz - - ld a, [$ceaa] - bit 4, [hl] - jr z, jr_006_6a0a - -Call_006_6a07: - ld a, [$ceab] - -jr_006_6a0a: - ld e, a - ld a, [$d006] - ld h, a - ld a, [$cea4] - ld l, a - call Call_006_6b93 - ld a, [hl+] - ld c, a - ld b, [hl] - dec b - ld a, e - call Call_006_6a28 - call $06c3 - or a - ret - - -Call_006_6a23: - ld a, [$ceaa] - jr jr_006_6a0a - -Call_006_6a28: - push af - push bc - push de - push hl - push af - call $099c - pop af - ld b, a - ld a, [$ceab] - cp b - jr z, jr_006_6a60 - - ld a, [wNameLength] - srl a - ld d, a - ld a, [$d004] - srl a - ld e, a - ld a, d - cp e - jr nz, jr_006_6a49 - - dec a - -jr_006_6a49: - ld hl, $d007 - add [hl] - ld d, a - ld h, $08 - ld l, d - call $0879 - ld a, l - add $08 - ld d, a - ld e, $18 - ld bc, $0000 - call $097f - -jr_006_6a60: - pop hl - pop de - pop bc - pop af - ret - - -Call_006_6a65: - ld hl, $8000 - ld de, $6a77 - ld b, $00 - -jr_006_6a6d: - ld a, $10 - cp b - ret z - - inc b - ld a, [de] - inc de - ld [hl+], a - jr jr_006_6a6d - - rst $38 - rst $38 - rst $38 - rst $38 - rst $38 - rst $38 - rst $38 - rst $38 - rst $38 - rst $38 - rst $38 - rst $38 - rst $38 - rst $38 - rst $38 - rst $38 - -; bc = xy coordinate(by each tile) in the naming screen -; hl = the pointer to its character information(by 6bytes) -; info. structure: (1) / (1) / (1) / character code(2) / (1) -Call_006_6a87: - ld a, [$d006] - ld h, a - ld a, [$cea4] - ld l, a - call Call_006_6b93 - inc hl - inc hl - ld e, [hl] - inc hl - ld a, [hl+] - ld d, a - cp $09 - jp z, Jump_006_6b5f - - cp $07 - jr nz, .jr_006_6ab8 - - ld a, [$d009] - or a - jr nz, .jr_006_6aac - - ld a, $01 - jp .jr_006_6ace - - -.jr_006_6aac - dec a - jr nz, .jr_006_6ab4 - - ld a, $02 - jp .jr_006_6ace - - -.jr_006_6ab4 - xor a - jp .jr_006_6ace - - -.jr_006_6ab8 - cp $08 - jr nz, .jr_006_6ad6 - - ld a, [$d009] - or a - jr nz, .jr_006_6ac6 - - ld a, $02 - jr .jr_006_6ace - -.jr_006_6ac6 - dec a - jr nz, .jr_006_6acc - - xor a - jr .jr_006_6ace - -.jr_006_6acc - ld a, $01 - -.jr_006_6ace - ld [$d009], a - call Call_006_6892 - or a - ret - - -.jr_006_6ad6 - ld a, [$d009] - cp $02 - jr z, .read_char - - ld bc, $0359 - ld a, d - cp b - jr nz, .jr_006_6af4 - - ld a, e - cp c - jr nz, .jr_006_6af4 - - push hl - ld hl, $6cf9 - call Call_006_6b61 - pop hl - jr c, jr_006_6b5d - - jr .jr_006_6b09 - -.jr_006_6af4 - ld bc, $035b - ld a, d - cp b - jr nz, .jr_006_6b1d - - ld a, e - cp c - jr nz, .jr_006_6b1d - - push hl - ld hl, $6d5f - call Call_006_6b61 - pop hl - jr c, jr_006_6b5d - -.jr_006_6b09 - ld a, [wNameLength] ; cfff: current player name length(by byte). - dec a - dec a - ld [wNameLength], a - ld hl, wNameBuffer ; cfe7: temporary buffer for player name. - push de - ld d, $00 - ld e, a - add hl, de - pop de - ld a, [hl] - jr jr_006_6b37 - -.jr_006_6b1d - ld a, d - or a - jr nz, jr_006_6b37 - - ld a, [$d009] - or a - jr nz, .jr_006_6b2b - - ld a, $0e - jr jr_006_6b37 - -.jr_006_6b2b - ld a, $0f - jr jr_006_6b37 - -; read character code from info. to register. -; [input] -; hl: pointer. -.read_char - ld e, [hl] - inc hl - ld a, [hl] ; a: first byte of the code. - or a - ; if 2byte code. - jr nz, jr_006_6b37 - ; if 1byte code(ascii) - ; set first byte to $0e. - ld a, $0e - -; on 2byte code. -jr_006_6b37: - ld d, a ; de: character code. - ld hl, wNameLength - ld a, [hl] - ld c, a - push hl - ld hl, $d004 - cp [hl] - pop hl - jr nz, jr_006_6b4c - - ; if the buffer is full - ; just change the last character of it. - ld hl, wNameBuffer - dec hl - dec hl - jr jr_006_6b51 - -; increase name length before add the character. -jr_006_6b4c: - inc [hl] ; hl: wNameLength => name length - inc [hl] - ld hl, wNameBuffer - -; write 2byte character codes from user input. -; de: 2byte character codes. -; hl: dest. -jr_006_6b51: - ld b, $00 - add hl, bc - - ld [hl], d - inc hl - ld [hl], e - inc hl - ld [hl], $00 ; null terminator. - - call Call_006_68cb - -jr_006_6b5d: - or a - ret - - -Jump_006_6b5f: - scf - ret - - -Call_006_6b61: - ld a, [wNameLength] - or a - jr z, jr_006_6b91 - - dec a - dec a - push hl - ld hl, wNameBuffer - ld d, $00 - ld e, a - add hl, de - ld e, [hl] - inc hl - ld d, [hl] - ld a, $0f - cp e - jr nz, jr_006_6b7a - - dec e - -jr_006_6b7a: - pop hl - -jr_006_6b7b: - ld a, [hl+] - or a - jr z, jr_006_6b91 - - cp d - jr nz, jr_006_6b8c - - ld a, [hl] - cp e - jr nz, jr_006_6b8c - - inc hl - ld e, [hl] - inc hl - ld d, [hl] - or a - ret - - -jr_006_6b8c: - inc hl - inc hl - inc hl - jr jr_006_6b7b - -jr_006_6b91: - scf - ret - - -Call_006_6b93: - push de - ld e, l - ld d, h - ld a, [$cea9] - ld l, a - call $0879 - ld a, l - add e - ld hl, $6baf - pop de - or a - ret z - -jr_006_6ba5: - inc hl - inc hl - inc hl - inc hl - inc hl - inc hl - dec a - jr nz, jr_006_6ba5 - - ret - - - inc b - ld [bc], a - ld de, $3000 - inc bc - ld b, $02 - ld [de], a - nop - add hl, sp - inc bc - ld [$1302], sp - nop - ld b, d - inc bc - ld a, [bc] - ld [bc], a - inc d - nop - ld l, a - nop - inc c - ld [bc], a - dec d - nop - ld h, h - nop - db $10 - rrca - ld bc, $0009 - nop - inc b - inc b - ld d, $00 - ld sp, $0603 - inc b - rla - nop - ld a, [hl-] - inc bc - ld [$1804], sp - nop - ld b, e - inc bc - ld a, [bc] - inc b - add hl, de - nop - ld e, l - inc bc - inc c - inc b - ld a, [de] - nop - ld h, l - nop - db $10 - rrca - ld bc, $0009 - nop - inc b - ld b, $1b - nop - ld [hl-], a - inc bc - ld b, $06 - inc e - nop - dec sp - inc bc - ld [$1d06], sp - nop - ld b, h - inc bc - ld a, [bc] - ld b, $1e - nop - ld l, d - nop - inc c - ld b, $1f - nop - ld h, [hl] - nop - db $10 - rrca - ld bc, $0009 - nop - inc b - ld [$0020], sp - inc sp - inc bc - ld b, $08 - ld hl, $3c00 - inc bc - ld [$2208], sp - nop - ld b, l - inc bc - ld a, [bc] - ld [$0023], sp - ld l, e - nop - inc c - ld [$0024], sp - ld h, a - nop - db $10 - rrca - ld bc, $0009 - nop - inc b - ld a, [bc] - dec h - nop - inc [hl] - inc bc - ld b, $0a - ld h, $00 - dec a - inc bc - ld [$270a], sp - nop - ld b, [hl] - inc bc - ld a, [bc] - ld a, [bc] - jr z, jr_006_6c55 - -jr_006_6c55: - ld [hl], a - nop - inc c - ld a, [bc] - add hl, hl - nop - ld l, b - nop - db $10 - rrca - ld bc, $0009 - nop - inc b - inc c - ld a, [hl+] - nop - dec [hl] - inc bc - ld b, $0c - dec hl - nop - ld a, $03 - ld [$2c0c], sp - nop - ld b, a - inc bc - ld a, [bc] - inc c - dec l - nop - ld h, b - nop - inc c - inc c - ld l, $00 - ld l, c - nop - db $10 - rrca - ld bc, $0009 - nop - inc b - ld c, $2f - nop - ld [hl], $03 - ld b, $0e - jr nc, jr_006_6c91 - -jr_006_6c91: - ccf - inc bc - ld [$310e], sp - nop - ld c, b - inc bc - ld a, [bc] - ld c, $32 - nop - ld h, c - nop - inc c - ld c, $33 - nop - inc de - dec b - db $10 - rrca - ld bc, $0009 - nop - inc b - db $10 - inc [hl] - nop - scf - inc bc - ld b, $10 - dec [hl] - nop - ld b, b - inc bc - ld [$3610], sp - nop - ld c, c - inc bc - ld a, [bc] - db $10 - inc a - nop - ld h, d - nop - inc c - db $10 - dec a - nop - ld de, $1005 - rrca - ld bc, $0009 - nop - inc b - ld [de], a - scf - nop - jr c, @+$05 - - ld b, $12 - jr c, jr_006_6cd9 - -jr_006_6cd9: - ld b, c - inc bc - ld [$3912], sp - nop - ld l, [hl] - nop - ld a, [bc] - ld [de], a - ld a, [hl-] - nop - ld h, e - nop - inc c - ld [de], a - dec sp - nop - ld [hl], b - nop - db $10 - rrca - ld bc, $0009 - nop - nop - nop - nop - nop - nop - nop - ld d, $0e - ld a, $00 - rla - ld c, $3f - nop - jr jr_006_6d11 - - ld b, b - nop - add hl, de - ld c, $41 - nop - ld a, [de] - ld c, $42 - nop - dec de - ld c, $43 - nop - -jr_006_6d11: - inc e - ld c, $44 - nop - dec e - ld c, $45 - nop - ld e, $0e - ld b, [hl] - nop - rra - ld c, $47 - nop - jr nz, jr_006_6d31 - - ld c, b - nop - ld hl, $490e - nop - ld [hl+], a - ld c, $4a - nop - inc hl - ld c, $4b - nop - -jr_006_6d31: - inc h - ld c, $4c - nop - ld a, [hl+] - ld c, $4d - nop - dec hl - ld c, $4e - nop - inc l - ld c, $4f - nop - dec l - ld c, $50 - nop - ld l, $0e - ld d, c - nop - ld d, d - ld c, $4d - nop - ld d, e - ld c, $4e - nop - ld d, h - ld c, $4f - nop - ld d, l - ld c, $50 - nop - ld d, [hl] - ld c, $51 - nop - nop - nop - ld a, [hl+] - ld c, $52 - nop - dec hl - ld c, $53 - nop - inc l - ld c, $54 - nop - dec l - ld c, $55 - nop - ld l, $0e - ld d, [hl] - nop - ld c, l - ld c, $52 - nop - ld c, [hl] - ld c, $53 - nop - ld c, a - ld c, $54 - nop - ld d, b - ld c, $55 - nop - ld d, c - ld c, $56 - nop - nop - nop - -Func_1ad89: ; 1ad89 (6:6d89) - push af - ld a, [de] - or a - jr nz, jr_006_6d91 - - ld a, $06 - ld [de], a - -jr_006_6d91: - pop af - inc a - call Call_006_6846 - call $02b9 - xor a - ld [$cab6], a - call $04a2 - call $099c - ld a, $01 - ld [$cac0], a - call $2119 - ld de, $38bf - call $2275 - call Call_006_6e37 - xor a - ld [$d009], a - call Call_006_6e99 - xor a - ld [$d006], a - ld [$cea4], a - ld a, $09 - ld [$d005], a - ld a, $07 - ld [$cea9], a - ld a, $0f - ld [$ceaa], a - ld a, $00 - ld [$ceab], a - -Jump_006_6dd6: -jr_006_6dd6: - ld a, $01 - ld [$cac0], a - call $053f - call $089b - ldh a, [$8f] - and $08 - jr z, jr_006_6dfc - - ld a, $01 - call Call_006_6794 - call Call_006_6fa1 - ld a, $06 - ld [$d006], a - ld [$cea4], a - call Call_006_6fbd - jr jr_006_6dd6 - -jr_006_6dfc: - call Call_006_6efb - jr nc, jr_006_6dd6 - - cp $ff - jr z, jr_006_6e1c - - call Call_006_6ec3 - jr nc, jr_006_6dd6 - - call Call_006_6880 - ld hl, $d000 - ld a, [hl+] - ld h, [hl] - ld l, a - inc hl - ld a, [hl] - or a - jr nz, jr_006_6e1b - - dec hl - ld [hl], $00 - -jr_006_6e1b: - ret - - -jr_006_6e1c: - ld a, [wNameLength] - cp $02 - jr c, jr_006_6dd6 - - ld e, a - ld d, $00 - ld hl, wNameBuffer - add hl, de - dec hl - ld [hl], $00 - ld hl, wNameLength - dec [hl] - call Call_006_6e59 - jp Jump_006_6dd6 - - -Call_006_6e37: - ld hl, $8000 - ld de, $6e49 - ld b, $00 - -jr_006_6e3f: - ld a, $10 - cp b - ret z - - inc b - ld a, [de] - inc de - ld [hl+], a - jr jr_006_6e3f - - ldh a, [$f0] - ldh a, [$f0] - ldh a, [$f0] - ldh a, [$f0] - ldh a, [$f0] - ldh a, [$f0] - ldh a, [$f0] - ldh a, [$f0] - -Call_006_6e59: - ld hl, $d007 - ld d, [hl] - inc hl - ld e, [hl] - call $22ae - ld hl, $6e83 - ld de, $c590 - -jr_006_6e68: - ld a, [hl+] - ld [de], a - inc de - or a - jr nz, jr_006_6e68 - - ld hl, wNameBuffer - ld de, $c590 - -jr_006_6e74: - ld a, [hl+] - or a - jr z, jr_006_6e7c - - ld [de], a - inc de - jr jr_006_6e74 - -jr_006_6e7c: - ld hl, $c590 - call $21c5 - ret - - - ld b, $5f - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - ld e, a - nop - -Call_006_6e99: - call Call_006_68c1 - call Call_006_6e59 - ld hl, $d002 - ld c, [hl] - inc hl - ld a, [hl] - ld h, a - or c - jr z, jr_006_6ead - - ld l, c - call $2c08 - -jr_006_6ead: - ld hl, $68bc - call $2c08 - ld hl, $0222 - ld de, $0204 - call $22ae - call $2c29 - call $0277 - ret - - -Call_006_6ec3: - ld a, [$d006] - ld h, a - ld a, [$cea4] - ld l, a - call Call_006_7000 - inc hl - inc hl - ld a, [hl] - cp $01 - jr nz, jr_006_6ed7 - - scf - ret - - -jr_006_6ed7: - ld d, a - ld hl, wNameLength - ld a, [hl] - ld c, a - push hl - ld hl, $d004 - cp [hl] - pop hl - jr nz, jr_006_6eeb - - ld hl, wNameBuffer - dec hl - jr jr_006_6eef - -jr_006_6eeb: - inc [hl] - ld hl, wNameBuffer - -jr_006_6eef: - ld b, $00 - add hl, bc - ld [hl], d - inc hl - ld [hl], $00 - call Call_006_6e59 - or a - ret - - -Call_006_6efb: -Jump_006_6efb: - xor a - ld [$cfe3], a - ldh a, [$8f] - or a - jp z, Jump_006_6f73 - - ld b, a - ld a, [$cea9] - ld c, a - ld a, [$d006] - ld h, a - ld a, [$cea4] - ld l, a - bit 6, b - jr z, jr_006_6f1f - - dec a - bit 7, a - jr z, jr_006_6f4b - - ld a, c - dec a - jr jr_006_6f4b - -jr_006_6f1f: - bit 7, b - jr z, jr_006_6f2a - - inc a - cp c - jr c, jr_006_6f4b - - xor a - jr jr_006_6f4b - -jr_006_6f2a: - cp $06 - jr z, jr_006_6f73 - - ld a, [$d005] - ld c, a - ld a, h - bit 5, b - jr z, jr_006_6f40 - - dec a - bit 7, a - jr z, jr_006_6f4e - - ld a, c - dec a - jr jr_006_6f4e - -jr_006_6f40: - bit 4, b - jr z, jr_006_6f73 - - inc a - cp c - jr c, jr_006_6f4e - - xor a - jr jr_006_6f4e - -jr_006_6f4b: - ld l, a - jr jr_006_6f4f - -jr_006_6f4e: - ld h, a - -jr_006_6f4f: - push hl - call Call_006_7000 - inc hl - inc hl - ld d, [hl] - push de - call Call_006_6fa1 - pop de - pop hl - ld a, l - ld [$cea4], a - ld a, h - ld [$d006], a - xor a - ld [$cea3], a - ld a, $02 - cp d - jp z, Jump_006_6efb - - ld a, $01 - ld [$cfe3], a - -Jump_006_6f73: -jr_006_6f73: - ldh a, [$91] - and $03 - jr z, jr_006_6f89 - - and $01 - jr nz, jr_006_6f7f - - ld a, $ff - -jr_006_6f7f: - call Call_006_6794 - push af - call Call_006_6fbd - pop af - scf - ret - - -jr_006_6f89: - ld a, [$cfe3] - or a - jr z, jr_006_6f92 - - call $3796 - -jr_006_6f92: - ld hl, $cea3 - ld a, [hl] - inc [hl] - and $0f - ret nz - - ld a, [$ceaa] - bit 4, [hl] - jr z, jr_006_6fa4 - -Call_006_6fa1: - ld a, [$ceab] - -jr_006_6fa4: - ld e, a - ld a, [$d006] - ld h, a - ld a, [$cea4] - ld l, a - call Call_006_7000 - ld a, [hl+] - ld c, a - ld b, [hl] - dec b - ld a, e - call Call_006_6fc2 - call $06c3 - or a - ret - - -Call_006_6fbd: - ld a, [$ceaa] - jr jr_006_6fa4 - -Call_006_6fc2: - push af - push bc - push de - push hl - push af - call $099c - pop af - ld b, a - ld a, [$ceab] - cp b - jr z, jr_006_6ffb - - ld a, [wNameLength] - ld d, a - ld a, [$d004] - ld e, a - ld a, d - cp e - jr nz, jr_006_6fdf - - dec a - -jr_006_6fdf: - dec a - ld d, a - ld hl, $d007 - ld a, [hl] - sla a - add d - ld d, a - ld h, $04 - ld l, d - call $0879 - ld a, l - add $08 - ld d, a - ld e, $18 - ld bc, $0000 - call $097f - -jr_006_6ffb: - pop hl - pop de - pop bc - pop af - ret - - -Call_006_7000: - push de - ld e, l - ld d, h - ld a, [$cea9] - ld l, a - call $0879 - ld a, l - add e - ld hl, $7019 - pop de - or a - ret z - -jr_006_7012: - inc hl - inc hl - inc hl - dec a - jr nz, jr_006_7012 - - ret - - - inc b - ld [bc], a - ld b, c - ld b, $02 - ld c, d - ld [$5302], sp - ld a, [bc] - ld [bc], a - ccf - inc c - ld [bc], a - inc [hl] - ld c, $02 - ld [bc], a - db $10 - rrca - ld bc, $0404 - ld b, d - ld b, $04 - ld c, e - ld [$5404], sp - ld a, [bc] - inc b - ld h, $0c - inc b - dec [hl] - ld c, $04 - ld [bc], a - db $10 - rrca - ld bc, $0604 - ld b, e - ld b, $06 - ld c, h - ld [$5506], sp - ld a, [bc] - ld b, $2b - inc c - ld b, $36 - ld c, $06 - ld [bc], a - db $10 - rrca - ld bc, $0804 - ld b, h - ld b, $08 - ld c, l - ld [$5608], sp - ld a, [bc] - ld [$0c2d], sp - ld [$0e37], sp - ld [$1002], sp - rrca - ld bc, $0a04 - ld b, l - ld b, $0a - ld c, [hl] - ld [$570a], sp - ld a, [bc] - ld a, [bc] - daa - inc c - ld a, [bc] - jr c, jr_006_708b - - ld a, [bc] - ld [bc], a - db $10 - rrca - ld bc, $0c04 - ld b, [hl] - ld b, $0c - ld c, a - ld [$580c], sp - -jr_006_708b: - ld a, [bc] - inc c - jr nc, @+$0e - - inc c - add hl, sp - ld c, $0c - ld [bc], a - db $10 - rrca - ld bc, $0e04 - ld b, a - ld b, $0e - ld d, b - ld [$590e], sp - ld a, [bc] - ld c, $31 - inc c - ld c, $20 - ld c, $0e - ld [bc], a - db $10 - rrca - ld bc, $1004 - ld c, b - ld b, $10 - ld d, c - ld [$5a10], sp - ld a, [bc] - db $10 - ld [hl-], a - inc c - db $10 - jr nz, jr_006_70ca - - db $10 - ld [bc], a - db $10 - rrca - ld bc, $1204 - ld c, c - ld b, $12 - ld d, d - ld [$2112], sp - -jr_006_70ca: - ld a, [bc] - ld [de], a - inc sp - inc c - ld [de], a - jr nz, @+$10 - - ld [de], a - ld [bc], a - db $10 - rrca - ld bc, $0000 - nop - nop - ld a, [de] - dec b - ld [bc], a - ld [hl], a - ld bc, $0278 - ld a, c - ld bc, $027a - ld a, e - ld bc, $037c - ld a, l - ld [bc], a - ld a, [hl] - ld bc, $027f - add b - ld bc, $0181 - add d - ld bc, $0283 - add h - ld bc, $0185 - add a - ld bc, $0288 - adc c - ld bc, $018a - jp $c502 - - - ld bc, $02d2 - db $dd - nop - inc c - inc b - ld c, $05 - inc b - ld l, l - ld [bc], a - ld l, a - ld [bc], a - ld [hl], h - inc b - add a - ld [bc], a - adc b - inc b - or c - ld bc, $02c3 - push bc - ld bc, $02c6 - call $d202 - ld bc, $02d5 - ret c - - ld [bc], a - reti - - - ld bc, $01da - db $db - ld bc, $00e1 - jr jr_006_7139 - - ld [bc], a - rlca - inc bc - ld a, e - inc b - -jr_006_7139: - ld a, l - inc bc - ld a, [hl] - ld [bc], a - add a - ld [bc], a - adc b - inc bc - or c - ld [bc], a - or e - inc bc - cp a - ld [bc], a - ret nz - - ld bc, $01c2 - jp $d803 - - - inc bc - reti - - - ld [bc], a - db $dd - nop - ld [$0402], sp - inc b - rrca - dec b - inc b - dec sp - ld [bc], a - ld [hl], c - inc bc - ld a, e - ld [bc], a - ld a, h - inc bc - add a - inc bc - adc b - ld [bc], a - cp c - ld [bc], a - rst $08 - ld [bc], a - push de - inc bc - ret c - - ld [bc], a - reti - - - inc bc - db $dd - ld [bc], a - rst $18 - nop - add hl, de - dec b - inc b - ld a, l - inc bc - ld a, [hl] - ld [bc], a - ld a, a - ld [bc], a - adc b - inc b - add a - inc b - ld a, e - ld bc, $027c - db $dd - ld [bc], a - reti - - - ld [bc], a - ret c - - ld [bc], a - jp nc, $db03 - - inc b - push bc - nop - ld [$0f04], sp - dec b - ld [bc], a - rlca - ld [bc], a - ld h, b - ld [bc], a - ld h, c - ld bc, $0167 - ld l, b - inc b - ld [hl], a - inc bc - ld a, b - inc b - and a - inc bc - xor b - ld bc, $02c3 - push bc - ld bc, $02c9 - call $d601 - inc bc - ret c - - ld [bc], a - reti - - - ld [bc], a - db $dd - ld bc, $00de - add hl, de - dec b - inc b - ld a, c - inc bc - ld a, d - inc b - add e - inc bc - adc c - ld [bc], a - adc d - ld [bc], a - cp c - ld bc, $01ba - cp [hl] - ld bc, $02c3 - push bc - ld [bc], a - ret - - - inc bc - jp nc, $d904 - - inc bc - db $dd - nop - jr jr_006_71e0 - - inc bc - ld [hl], a - ld [bc], a - ld a, b - inc bc - -jr_006_71e0: - add b - ld [bc], a - add c - ld bc, $0482 - add e - inc b - add h - ld bc, $0285 - add [hl] - ld [bc], a - adc c - ld bc, $028a - push bc - ld bc, $02c6 - call nc, $d701 - inc bc - reti - - - ld [bc], a - ld [c], a - nop - rrca - dec b - ld [$0303], sp - ld c, l - ld bc, $034e - ld e, h - ld [bc], a - ld e, l - inc b - ld [hl], a - ld [bc], a - ld a, b - inc bc - add h - ld bc, $0386 - adc b - ld [bc], a - adc e - ld bc, $028c - adc l - ld [bc], a - jp $c502 - - - ld [bc], a - jp z, $cc04 - - nop - jr jr_006_722a - - ld [bc], a - rlca - inc b - ld a, c - ld [bc], a - -jr_006_722a: - ld a, d - inc b - add b - inc bc - add c - ld [bc], a - add d - inc bc - add e - inc bc - adc c - ld [bc], a - jp $ca01 - - - ld [bc], a - ret nc - - ld [bc], a - jp nc, $d601 - - ld [bc], a - reti - - - ld bc, $02de - db $dd - nop - add hl, de - inc bc - ld [bc], a - ld b, h - ld bc, $0245 - ld b, [hl] - ld bc, $0147 - ld c, b - ld [bc], a - ld c, e - ld bc, $024c - ld c, l - ld bc, $024e - ld c, a - ld bc, $0250 - ld d, c - ld bc, $0152 - ld d, a - ld bc, $0158 - ld e, c - ld bc, $015c - ld e, l - ld bc, $015e - jp $c502 - - - ld bc, $02c9 - call z, $cf01 - ld bc, $01d4 - db $dd - ld bc, $00de - db $10 - inc bc - ld a, [bc] - dec b - ld [bc], a - ld c, e - ld bc, $034c - ld c, l - ld [bc], a - ld c, [hl] - inc bc - ld c, a - ld [bc], a - ld d, b - inc bc - ld d, l - ld [bc], a - ld d, [hl] - inc bc - ld [hl], a - ld [bc], a - ld a, b - ld [bc], a - push bc - ld [bc], a - call $d002 - ld [bc], a - db $db - inc bc - db $dd - nop - ld [$0e01], sp - inc bc - inc b - rlca - inc bc - inc c - ld [bc], a - dec c - inc bc - ld b, c - ld [bc], a - ld b, d - inc bc - ld c, l - ld [bc], a - ld c, [hl] - inc b - ld d, l - inc bc - ld d, [hl] - ld [bc], a - jp $c502 - - - ld [bc], a - ret c - - ld [bc], a - reti - - - inc b - db $dd - nop - rrca - inc bc - ld [$0306], sp - rlca - inc bc - ld b, h - ld [bc], a - ld b, l - inc b - ld b, [hl] - inc bc - ld b, a - ld [bc], a - ld c, b - inc b - sub l - inc bc - sub [hl] - inc bc - cp a - ld [bc], a - ret nz - - ld bc, $01c3 - push bc - ld bc, $02c7 - rst $08 - ld [bc], a - ret nc - - ld bc, $00d1 - jr jr_006_72ed - - inc b - ld b, c - inc bc - -jr_006_72ed: - ld b, d - ld [bc], a - ld b, e - inc b - ld d, e - inc bc - ld d, h - inc bc - ld d, c - ld [bc], a - ld d, d - ld [bc], a - ld e, c - ld [bc], a - jp $ca01 - - - ld bc, $01cd - adc $02 - ret nc - - ld bc, $02d1 - jp nc, $dd02 - - ld bc, $00e3 - inc b - ld [bc], a - ld b, $03 - ld [$0204], sp - rlca - ld bc, $013e - ld e, e - ld bc, $0160 - ld h, c - ld bc, $0162 - ld h, e - ld bc, $0164 - ld h, l - ld bc, $0166 - ld h, a - ld bc, $0168 - ld [hl], e - ld [bc], a - xor e - ld bc, $01ac - xor l - ld [bc], a - xor [hl] - ld bc, $02af - or b - inc b - cp h - ld [bc], a - jp $c503 - - - ld [bc], a - rlc d - push de - ld bc, $01d6 - ret c - - ld bc, $03d9 - db $dd - nop - add hl, bc - inc bc - inc c - inc b - ld [bc], a - ld d, l - ld [bc], a - ld e, c - inc bc - ld h, b - ld bc, $0267 - ld l, c - inc bc - ld [hl], c - ld [bc], a - and a - ld bc, $02a8 - jp $c504 - - - inc bc - ret nc - - ld bc, $03d6 - ret c - - ld [bc], a - jp c, $db04 - - inc b - ld [c], a - nop - ld a, [de] - inc b - ld [bc], a - ld h, b - ld bc, $0161 - ld h, a - ld bc, $0268 - ld l, c - ld bc, $016a - ld l, e - ld bc, $036c - ld l, l - ld bc, $016e - ld l, a - ld bc, $0170 - ld [hl], c - ld bc, $0172 - ld [hl], e - ld bc, $0174 - ld [hl], l - inc bc - cp h - ld bc, $02cd - ret nc - - ld [bc], a - call nc, $d802 - ld [bc], a - reti - - - ld bc, $00db - jr jr_006_73aa - - ld bc, $0207 - ld h, c - -jr_006_73aa: - ld bc, $0162 - ld h, e - ld [bc], a - ld h, a - ld [bc], a - ld l, c - ld [bc], a - ld l, d - ld [bc], a - ld l, e - inc b - ld l, l - inc bc - ld l, a - ld bc, $0375 - cp l - ld [bc], a - call $d802 - inc bc - reti - - - ld [bc], a - jp c, $db03 - - nop - jr jr_006_73cf - - ld [bc], a - rlca - inc b - ld l, c - -jr_006_73cf: - inc bc - ld l, e - inc b - ld l, l - ld [bc], a - ld l, [hl] - inc b - ld [hl], c - ld [bc], a - cp c - ld bc, $01ba - jp $c502 - - - ld [bc], a - jp nc, $d904 - - ld bc, $04db - db $dd - nop - jr jr_006_73eb - - inc bc - -jr_006_73eb: - inc c - ld [bc], a - dec c - ld bc, $030e - rrca - ld [bc], a - db $10 - ld bc, $0411 - rra - inc bc - jr nz, @+$04 - - ld hl, $2201 - ld bc, $012e - cpl - ld [bc], a - push bc - ld [bc], a - jp z, $d202 - - ld [bc], a - call nc, $d702 - ld [bc], a - db $dd - nop - add hl, de - ld bc, $0701 - ld [bc], a - ld [de], a - ld bc, $0213 - ld a, [de] - ld bc, $021b - inc e - ld bc, $011d - ld e, $02 - rra - ld bc, $0220 - ld hl, $2201 - ld [bc], a - inc hl - ld bc, $0124 - dec h - ld bc, $012f - or a - ld bc, $02b9 - push bc - ld bc, $01d2 - call nc, $d802 - ld [bc], a - reti - - - ld [bc], a - db $dd - ld bc, $00df - jr jr_006_7447 - - ld [bc], a - -jr_006_7447: - rlca - inc bc - ld [$0902], sp - ld [bc], a - dec bc - inc bc - inc e - ld [bc], a - dec e - ld [bc], a - ld e, $02 - inc hl - ld bc, $0124 - dec h - ld [bc], a - inc l - ld bc, $022d - or a - ld [bc], a - ret - - - inc bc - jp z, $cf01 - - ld [bc], a - jp nc, $dd02 - - ld bc, $00df - ld a, [bc] - ld bc, $0204 - inc b - inc bc - inc b - inc b - inc bc - rlca - inc bc - ld hl, $2202 - ld bc, $013d - ld a, $01 - ld e, d - ld bc, $015b - ld [hl], d - ld bc, $0473 - cp e - inc b - cp h - inc b - cp l - ld [bc], a - push bc - ld [bc], a - add $02 - rst $08 - inc b - jp nc, $db02 - - nop - ld [de], a - ld bc, $0604 - inc b - ld [$0903], sp - ld [bc], a - dec bc - inc b - inc e - inc bc - dec e - ld [bc], a - ld e, $04 - jr z, @+$05 - - add hl, hl - ld [bc], a - jp $c503 - - - ld [bc], a - jp z, $cd02 - - ld [bc], a - jp nc, $dd02 - - nop - add hl, de - ld b, $03 - adc [hl] - ld [bc], a - adc a - ld bc, $0290 - sub d - ld bc, $0193 - sub h - ld [bc], a - sub l - ld bc, $0196 - sub a - ld bc, $0298 - sbc c - ld bc, $019a - sbc e - ld bc, $019c - sbc l - ld bc, $01a2 - xor e - ld bc, $01ac - cp [hl] - ld [bc], a - jp $c901 - - - ld bc, $02ca - jp nc, $d301 - - ld [bc], a - ret c - - ld bc, $00dc - rlca - ld bc, $0611 - inc bc - ld a, [de] - ld [bc], a - dec de - inc b - sub h - ld bc, $0296 - sub a - ld [bc], a - sbc b - inc bc - sbc c - ld [bc], a - sbc d - ld [bc], a - xor a - ld [bc], a - or d - ld [bc], a - jp $c502 - - - ld [bc], a - call $ce01 - ld [bc], a - jp nc, $d601 - - inc bc - ldh [$FF00], a - rla - ld b, $04 - sub d - inc bc - sub e - inc bc - sbc h - ld [bc], a - sbc l - ld [bc], a - and d - ld [bc], a - xor [hl] - ld [bc], a - xor a - ld [bc], a - cp h - ld [bc], a - call $d003 - ld [bc], a - ret c - - inc bc - reti - - - inc bc - db $dd - inc b - db $e4 - nop - add hl, de - ld b, $01 - rlca - inc bc - sub c - ld [bc], a - sub e - inc b - sbc c - inc bc - sbc d - ld [bc], a - sbc e - ld [bc], a - sbc h - ld bc, $02a0 - and d - ld [bc], a - or a - ld bc, $02be - ret - - - ld [bc], a - call $d002 - ld bc, $02d1 - ret c - - ld bc, $01da - db $db - ld bc, $00df - ld d, $06 - inc b - adc [hl] - inc bc - adc a - ld [bc], a - sub b - ld [bc], a - sbc e - inc bc - cp b - inc bc - cp c - ld [bc], a - cp [hl] - ld [bc], a - jp $d302 - - - inc bc - ret nc - - inc bc - db $db - inc b - push de - inc b - jp nc, $e301 - - nop - inc d - ld bc, $1404 - inc bc - dec d - ld [bc], a - ld d, $04 - rla - inc b - jr jr_006_758f - - add hl, de - inc bc - or a - ld [bc], a - -jr_006_758f: - jp $c903 - - - inc bc - jp z, $cd02 - - inc bc - jp nc, $d601 - - ld [bc], a - jp c, $1a00 - - ld bc, $1202 - ld bc, $0213 - inc d - ld bc, $0115 - ld d, $03 - rla - ld [bc], a - jr jr_006_75af - - add hl, de - -jr_006_75af: - ld [bc], a - ld a, [de] - ld bc, $021b - ld h, $01 - daa - ld [bc], a - ld a, [hl+] - ld bc, $022b - or d - ld bc, $01b3 - jp $c501 - - - ld bc, $01c9 - jp z, $dd01 - - ld bc, $01df - pop hl - ld bc, $01e3 - db $e4 - nop - dec c - ld bc, $040a - ld [bc], a - rlca - inc b - ld a, [de] - inc bc - dec de - ld [bc], a - ld h, h - inc b - and e - inc bc - and h - ld bc, $01a5 - and [hl] - inc b - xor c - inc bc - xor d - ld [bc], a - call nz, $c702 - ld [bc], a - push bc - inc b - db $dd - nop - jr jr_006_75f6 - - inc bc - -jr_006_75f6: - rrca - ld [bc], a - db $10 - ld bc, $0411 - ld [de], a - inc bc - inc de - inc b - rla - inc bc - jr jr_006_7606 - - add hl, de - inc bc - -jr_006_7606: - ld a, [hl+] - ld [bc], a - dec hl - ld bc, $02c3 - call nz, $ca01 - ld [bc], a - db $dd - ld [bc], a - rst $18 - ld bc, $00e3 - rrca - ld bc, $0608 - inc b - ld h, $03 - daa - inc b - ld a, [hl+] - inc bc - dec hl - ld [bc], a - sbc l - ld bc, $019f - sbc [hl] - ld [bc], a - cp l - ld bc, $02c4 - jp $c502 - - - ld [bc], a - rst $08 - ld [bc], a - jp nc, $d602 - - ld [bc], a - rst $10 - ld [bc], a - pop hl - ld [bc], a - rst $18 - nop - jr jr_006_7641 - - inc b - inc sp - -jr_006_7641: - ld [bc], a - inc [hl] - ld bc, $0435 - ld [hl], $01 - scf - ld bc, $0438 - and e - inc bc - and h - ld bc, $01a5 - and [hl] - inc bc - or l - ld [bc], a - or [hl] - ld [bc], a - jp $c402 - - - ld [bc], a - rst $00 - inc bc - db $db - nop - inc c - ld bc, $020a - inc b - ld [$0903], sp - ld [bc], a - dec bc - inc b - jr nc, jr_006_7670 - - ld sp, $3202 - -jr_006_7670: - inc bc - dec a - inc b - cp h - ld [bc], a - push bc - inc bc - ret - - - inc bc - jp z, $cd02 - - ld bc, $02d0 - db $dd - nop - ld a, [bc] - ld [bc], a - ld [$0803], sp - inc b - inc bc - jr nc, @+$04 - - ld sp, $3903 - ld [bc], a - ld a, [hl-] - ld [bc], a - dec a - ld [bc], a - ld e, d - ld [bc], a - ld h, b - inc bc - ld l, l - ld [bc], a - ld l, a - ld [bc], a - ld [hl], d - inc b - cp h - ld [bc], a - rst $08 - ld [bc], a - jp nc, $d803 - - nop - jr jr_006_76a8 - - ld [bc], a - rlca - -jr_006_76a8: - inc bc - jr nc, @+$04 - - ld sp, $3201 - inc bc - inc sp - ld bc, $0134 - dec [hl] - ld [bc], a - ld [hl], $01 - jr c, @+$04 - - add hl, sp - ld bc, $013a - dec sp - ld bc, $013c - dec a - ld bc, $013e - ccf - inc bc - cp h - ld bc, $02c3 - push bc - ld bc, $01c9 - jp z, $cd01 - - ld bc, $01ce - jp nc, $db01 - - nop - dec d - ld [bc], a - inc b - rlca - inc b - ld [hl], $03 - jr c, jr_006_76e4 - - dec sp - inc bc - -jr_006_76e4: - xor l - ld bc, $01af - or b - ld [bc], a - cp b - ld [bc], a - cp d - ld bc, $02c3 - push bc - ld [bc], a - call $d401 - ld bc, $02d6 - reti - - - inc bc - db $dd - ld bc, $03df - db $e4 - ld bc, $00e3 - ld [$0a01], sp - ld [bc], a - ld b, $03 - ld [bc], a - inc c - ld bc, $020d - inc d - ld bc, $0117 - cpl - ld [bc], a - jr nc, @+$03 - - ld sp, $3201 - ld [bc], a - ld [hl], $01 - jr c, @+$04 - - add hl, sp - ld bc, $023b - ld c, e - ld bc, $024c - ld d, e - ld bc, $0254 - and a - ld bc, $01a8 - or c - ld bc, $02c3 - push bc - ld bc, $01d2 - sub $01 - ret c - - ld [bc], a - db $dd - ld [bc], a - rst $18 - nop - ld [$0b02], sp - inc bc - ld b, $04 - ld [bc], a - jr nc, @+$03 - - ld sp, $3601 - ld bc, $0138 - dec sp - ld [bc], a - ld b, c - ld bc, $0142 - ld b, e - ld [bc], a - ld c, e - ld bc, $014C - ld d, e - ld bc, $0154 - ld d, l - ld bc, $0156 - ld e, c - ld [bc], a - ld h, b - ld bc, $0169 - ld l, e - ld bc, $0271 - and a - ld bc, $01a8 - or c - ld bc, $01c3 - push bc - ld bc, $01d2 - call nc, $d501 - ld bc, $01da - db $dd - ld bc, $00df - add hl, bc - ld bc, $0408 - ld b, $06 - ld [bc], a - ld [$0901], sp - ld bc, $020b - inc d - ld [bc], a - rla - ld bc, $0118 - dec l - ld [bc], a - ld h, b - ld bc, $0167 - ld l, c - ld bc, $0271 - adc [hl] - ld bc, $028f - sub h - ld bc, $0197 - sbc h - ld bc, $01af - or c - ld bc, $01b9 - jp $c501 - - - ld bc, $01d2 - call nc, $d802 - ld bc, $01d9 - db $db - ld [bc], a - db $dd - ld [bc], a - rst $18 - nop - inc c - dec b - inc c - ld b, $02 - ld a, c - ld bc, $027a - ld a, l - ld bc, $017e - ld a, a - ld bc, $0183 - add a - ld bc, $0288 - adc [hl] - ld bc, $018f - sub b - ld [bc], a - sub h - ld bc, $0197 - sbc b - ld bc, $019b - sbc h - ld bc, $02a2 - and e - ld bc, $01a4 - and [hl] - ld [bc], a - and a - ld bc, $01a8 - jp $c502 - - - ld bc, $01d2 - db $db - ld [bc], a - db $dd - ld bc, $00df - ld c, $01 - ld a, [bc] - inc bc - ld [bc], a - rrca - ld bc, $0110 - ld de, $1702 - ld bc, $0118 - add hl, de - ld [bc], a - inc hl - ld bc, $0124 - dec h - ld bc, $022e - ld b, [hl] - ld bc, $0147 - ld c, b - ld [bc], a - ld c, a - ld bc, $0250 - ld d, a - ld bc, $0158 - ld e, c - ld bc, $015e - or a - ld bc, $01b9 - cp d - ld bc, $02c3 - push bc - ld bc, $01cd - rst $08 - ld bc, $01d2 - ret c - - ld bc, $00df - add hl, de - ld [bc], a - inc b - inc sp - inc bc - dec [hl] - inc b - ld [hl], $02 - jr c, jr_006_7848 - - dec sp - ld [bc], a - -jr_006_7848: - inc a - ld [bc], a - ccf - ld [bc], a - ld b, b - inc bc - push bc - ld [bc], a - rst $00 - ld bc, $01c9 - call $ce01 - ld [bc], a - ret nc - - ld [bc], a - jp nc, $dd01 - - ld bc, $00de - add hl, de - inc b - inc b - ld l, l - inc bc - ld l, [hl] - inc b - ld [hl], c - ld [bc], a - ld [hl], e - ld bc, $0174 - ld [hl], l - ld [bc], a - db $76 - inc bc - cp h - inc b - push bc - ld [bc], a - call $d202 - inc bc - ret c - - inc bc - db $dd - ld bc, $00e3 - add hl, de - inc bc - inc b - ld c, e - inc bc - ld c, h - inc b - ld e, c - ld [bc], a - ld e, a - ld [bc], a - ld e, [hl] - inc bc - cp b - ld [bc], a - cp e - ld [bc], a - jp $c902 - - - inc bc - call $d203 - inc b - push de - ld bc, $00e3 - inc d - inc bc - inc b - rlca - inc bc - jr nc, @+$04 - - ld sp, $3202 - inc bc - ld d, a - ld [bc], a - ld e, b - ld [bc], a - ld e, c - ld [bc], a - cp c - inc b - cp a - inc bc - ret nz - - ld [bc], a - pop bc - ld [bc], a - jp $c902 - - - ld [bc], a - jp z, $cd01 - - ld bc, $02ce - jp nc, $e301 - - nop - inc c - ld bc, $060e - inc b - ld [$0903], sp - ld [bc], a - ld a, [bc] - ld [bc], a - ld l, $04 - adc [hl] - inc bc - adc a - ld [bc], a - sub b - ld [bc], a - sbc e - ld bc, $02a0 - and c - ld bc, $02c3 - push bc - ld [bc], a - jp z, $d001 - - ld [bc], a - jp nc, $d301 - - nop - jp c, $9270 - - ld [bc], a - call nz, $0b02 - ld [hl], c - sub e - ld [bc], a - push bc - ld [bc], a - ld [hl-], a - ld [hl], c - sub h - ld [bc], a - add $02 - ld d, e - ld [hl], c - sub l - ld [bc], a - rst $00 - ld [bc], a - ld [hl], h - ld [hl], c - sub [hl] - ld [bc], a - ret z - - ld [bc], a - sub c - ld [hl], c - sub a - ld [bc], a - ret - - - ld [bc], a - cp d - ld [hl], c - sbc b - ld [bc], a - jp z, $d902 - - ld [hl], c - sbc c - ld [bc], a - rlc d - cp $71 - sbc d - ld [bc], a - call z, $2302 - ld [hl], d - sbc e - ld [bc], a - call $4602 - ld [hl], d - sbc h - ld [bc], a - adc $02 - ld a, a - ld [hl], d - sbc l - ld [bc], a - rst $08 - ld [bc], a - and d - ld [hl], d - sbc [hl] - ld [bc], a - ret nc - - ld [bc], a - jp $9f72 - - - ld [bc], a - pop de - ld [bc], a - add sp, $72 - and b - ld [bc], a - jp nc, $0d02 - - ld [hl], e - and c - ld [bc], a - db $d3 - ld [bc], a - ld c, h - ld [hl], e - and d - ld [bc], a - call nc, $7102 - ld [hl], e - and e - ld [bc], a - push de - ld [bc], a - and h - ld [hl], e - and h - ld [bc], a - sub $02 - ret - - - ld [hl], e - and l - ld [bc], a - rst $10 - ld [bc], a - add sp, $73 - and [hl] - ld [bc], a - ret c - - ld [bc], a - rrca - ld [hl], h - and a - ld [bc], a - reti - - - ld [bc], a - ld b, h - ld [hl], h - xor b - ld [bc], a - jp c, $6d02 - - ld [hl], h - xor c - ld [bc], a - db $db - ld [bc], a - sbc b - ld [hl], h - xor d - ld [bc], a - call c, $b902 - ld [hl], h - xor e - ld [bc], a - db $dd - ld [bc], a - ldh a, [$74] - xor h - ld [bc], a - sbc $02 - rla - ld [hl], l - xor l - ld [bc], a - rst $18 - ld [bc], a - ld [hl], $75 - xor [hl] - ld [bc], a - ldh [rSC], a - ld e, a - ld [hl], l - xor a - ld [bc], a - pop hl - ld [bc], a - ld a, [hl] - ld [hl], l - or b - ld [bc], a - ld [c], a - ld [bc], a - sbc l - ld [hl], l - or c - ld [bc], a - db $e3 - ld [bc], a - jp nc, $b275 - - ld [bc], a - db $e4 - ld [bc], a - di - ld [hl], l - or e - ld [bc], a - push hl - ld [bc], a - ld d, $76 - or h - ld [bc], a - and $02 - dec a - db $76 - or l - ld [bc], a - rst $20 - ld [bc], a - ld h, b - db $76 - or [hl] - ld [bc], a - add sp, $02 - add c - db $76 - or a - ld [bc], a - jp hl - - - ld [bc], a - and h - db $76 - cp b - ld [bc], a - ld [$d902], a - db $76 - cp c - ld [bc], a - db $eb - ld [bc], a - ld [bc], a - ld [hl], a - cp d - ld [bc], a - db $ec - ld [bc], a - dec a - ld [hl], a - cp e - ld [bc], a - db $ed - ld [bc], a - add b - ld [hl], a - cp h - ld [bc], a - xor $02 - cp a - ld [hl], a - cp l - ld [bc], a - rst $28 - ld [bc], a - db $fc - ld [hl], a - cp [hl] - ld [bc], a - ldh a, [rSC] - dec sp - ld a, b - cp a - ld [bc], a - pop af - ld [bc], a - ld h, b - ld a, b - ret nz - - ld [bc], a - ld a, [c] - ld [bc], a - ld a, a - ld a, b - pop bc - ld [bc], a - di - ld [bc], a - sbc h - ld a, b - jp nz, $f402 - - ld [bc], a - jp $c378 - - - ld [bc], a - push af - ld [bc], a - call $07b6 - ld a, [$d0a9] - ld l, a - ld h, $1e - call $0879 - ld bc, $78e8 - add hl, bc - ld b, $00 - -jr_006_7a26: - call Call_006_7a4c - call Call_006_7a5b - call Call_006_7a7d - push hl - ld de, $d0aa - ld h, b - ld l, $02 - call $0879 - add hl, de - ld d, h - ld e, l - pop hl - ld a, [hl+] - ld [de], a - inc de - ld a, [hl+] - ld [de], a - inc b - ld a, b - cp $05 - jr nz, jr_006_7a26 - - call $07be - ret - - -Call_006_7a4c: - push hl - ld l, b - ld h, $54 - call $0879 - ld de, $a350 - add hl, de - ld d, h - ld e, l - pop hl - ret - - -Call_006_7a5b: - push hl - push bc - push de - push de - ld e, [hl] - inc hl - ld d, [hl] - pop hl - ld bc, $0018 - add hl, bc - -jr_006_7a67: - ld a, [de] - inc de - ld b, a - or a - jr z, jr_006_7a77 - - ld a, [de] - inc de - ld c, a - -jr_006_7a70: - ld [hl], c - inc hl - dec b - jr nz, jr_006_7a70 - - jr jr_006_7a67 - -jr_006_7a77: - pop de - pop bc - pop hl - inc hl - inc hl - ret - - -Call_006_7a7d: - push hl - push bc - push de - ld a, [hl+] - ld h, [hl] - ld l, a - ld de, $d089 - call $2e89 - pop hl - ld de, $d089 - -jr_006_7a8d: - ld a, [de] - ld [hl+], a - or a - jr z, jr_006_7a95 - - inc de - jr jr_006_7a8d - -jr_006_7a95: - pop bc - pop hl - inc hl - inc hl - ret - - - xor a - ld [$d0a6], a - ld a, $01 - -jr_006_7aa0: - call Call_006_7ae4 - ret nc - - sla a - cp $10 - jr z, jr_006_7aac - - jr jr_006_7aa0 - -jr_006_7aac: - ld a, $03 - call Call_006_7ae4 - ret nc - - ld a, $05 - call Call_006_7ae4 - ret nc - - ld a, $09 - call Call_006_7ae4 - ret nc - - ld a, $06 - call Call_006_7ae4 - ret nc - - ld a, $0a - call Call_006_7ae4 - ret nc - - ld a, $0c - call Call_006_7ae4 - ret nc +Func_006_6ec3: + ld a, [wd006] + ld h, a + ld a, [wcea4] + ld l, a + call Func_006_7000 + inc hl + inc hl + ld a, [hl] + cp $01 + jr nz, .asm_006_6ed7 + scf + ret +.asm_006_6ed7 + ld d, a + ld hl, wNamingScreenBufferLength + ld a, [hl] + ld c, a + push hl + ld hl, wd004 + cp [hl] + pop hl + jr nz, .asm_006_6eeb + ld hl, wNamingScreenBuffer + dec hl + jr .asm_006_6eef +.asm_006_6eeb + inc [hl] + ld hl, wNamingScreenBuffer +.asm_006_6eef + ld b, $00 + add hl, bc + ld [hl], d + inc hl + ld [hl], $00 + call Func_006_6e59 + or a + ret - ld a, $f7 +Func_006_6efb: + xor a + ld [wcfe3], a + ldh a, [$8f] + or a + jp z, .asm_006_6f73 + ld b, a + ld a, [wcea9] + ld c, a + ld a, [wd006] + ld h, a + ld a, [wcea4] + ld l, a + bit 6, b + jr z, .asm_006_6f1f + dec a + bit 7, a + jr z, .asm_006_6f4b + ld a, c + dec a + jr .asm_006_6f4b +.asm_006_6f1f + bit 7, b + jr z, .asm_006_6f2a + inc a + cp c + jr c, .asm_006_6f4b + xor a + jr .asm_006_6f4b +.asm_006_6f2a + cp $06 + jr z, .asm_006_6f73 + ld a, [wd005] + ld c, a + ld a, h + bit 5, b + jr z, .asm_006_6f40 + dec a + bit 7, a + jr z, .asm_006_6f4e + ld a, c + dec a + jr .asm_006_6f4e +.asm_006_6f40 + bit 4, b + jr z, .asm_006_6f73 + inc a + cp c + jr c, .asm_006_6f4e + xor a + jr .asm_006_6f4e +.asm_006_6f4b + ld l, a + jr .asm_006_6f4f +.asm_006_6f4e + ld h, a +.asm_006_6f4f + push hl + call Func_006_7000 + inc hl + inc hl + ld d, [hl] + push de + call Func_006_6fa1 + pop de + pop hl + ld a, l + ld [wcea4], a + ld a, h + ld [wd006], a + xor a + ld [wcea3], a + ld a, $02 + cp d + jp z, Func_006_6efb + ld a, $01 + ld [wcfe3], a +.asm_006_6f73 + ldh a, [$91] + and $03 + jr z, .asm_006_6f89 + and $01 + jr nz, .asm_006_6f7f + ld a, $ff +.asm_006_6f7f + call Func_006_6794 + push af + call Func_006_6fbd + pop af + scf + ret +.asm_006_6f89 + ld a, [wcfe3] + or a + jr z, .asm_006_6f92 + call PlaySFX +.asm_006_6f92 + ld hl, wcea3 + ld a, [hl] + inc [hl] + and $0f + ret nz + ld a, [wceaa] + bit 4, [hl] + jr z, Func_006_6fa1.asm_006_6fa4 + +Func_006_6fa1: + ld a, [wceab] +.asm_006_6fa4 + ld e, a + ld a, [wd006] + ld h, a + ld a, [wcea4] + ld l, a + call Func_006_7000 + ld a, [hli] + ld c, a + ld b, [hl] + dec b + ld a, e + call Func_006_6fc2 + call WriteByteToBGMap0 + or a + ret -jr_006_7ad2: - call Call_006_7ae4 - ret nc +Func_006_6fbd: + ld a, [wceaa] + jr Func_006_6fa1.asm_006_6fa4 - sra a - cp $ff - jr z, jr_006_7ade +Func_006_6fc2: + push af + push bc + push de + push hl + push af + call ZeroObjectPositions + pop af + ld b, a + ld a, [wceab] + cp b + jr z, .asm_006_6ffb + ld a, [wNamingScreenBufferLength] + ld d, a + ld a, [wd004] + ld e, a + ld a, d + cp e + jr nz, .asm_006_6fdf + dec a +.asm_006_6fdf + dec a + ld d, a + ld hl, wd007 + ld a, [hl] + sla a + add d + ld d, a + ld h, $04 + ld l, d + call HtimesL + ld a, l + add $08 + ld d, a + ld e, $18 + ld bc, $0000 + call SetOneObjectAttributes +.asm_006_6ffb + pop hl + pop de + pop bc + pop af + ret - jr jr_006_7ad2 +Func_006_7000: + push de + ld e, l + ld d, h + ld a, [wcea9] + ld l, a + call HtimesL + ld a, l + add e + ld hl, Unknown_006_7019 + pop de + or a + ret z +.asm_006_7012 + inc hl + inc hl + inc hl + dec a + jr nz, .asm_006_7012 + ret -jr_006_7ade: - call Call_006_7ae4 - ret nc +; a bunch of data +Unknown_006_7019: + INCROM $1b019,$1ba12 - scf - ret +Func_006_7a12: ; 1ba12 + push af + ld [bc], a + call EnableSRAM + ld a, [wd0a9] + ld l, a + ld h, $1e + call HtimesL + ld bc, $78e8 + add hl, bc + ld b, $00 +.asm_006_7a26 + call Func_006_7a4c + call Func_006_7a5b + call Func_006_7a7d + push hl + ld de, $d0aa + ld h, b + ld l, $02 + call HtimesL + add hl, de + ld d, h + ld e, l + pop hl + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + inc b + ld a, b + cp $05 + jr nz, .asm_006_7a26 + call DisableSRAM + ret +Func_006_7a4c: + push hl + ld l, b + ld h, $54 + call HtimesL + ld de, $a350 + add hl, de + ld d, h + ld e, l + pop hl + ret -Call_006_7ae4: - push af - ld hl, $d088 - ld b, [hl] - rst $28 - ld [bc], a - dec h - db $76 - jr c, jr_006_7af5 +Func_006_7a5b: + push hl + push bc + push de + push de + ld e, [hl] + inc hl + ld d, [hl] + pop hl + ld bc, $0018 + add hl, bc +.asm_006_7a67 + ld a, [de] + inc de + ld b, a + or a + jr z, .asm_006_7a77 - pop af - ld [$d0a6], a - or a - ret + ld a, [de] + inc de + ld c, a +.asm_006_7a70 + ld [hl], c + inc hl + dec b + jr nz, .asm_006_7a70 + jr .asm_006_7a67 +.asm_006_7a77 + pop de + pop bc + pop hl + inc hl + inc hl + ret +Func_006_7a7d: + push hl + push bc + push de + ld a, [hli] + ld h, [hl] + ld l, a + ld de, $d089 + call CopyText + pop hl + ld de, $d089 +.asm_006_7a8d + ld a, [de] + ld [hli], a + or a + jr z, .asm_006_7a95 + inc de + jr .asm_006_7a8d +.asm_006_7a95 + pop bc + pop hl + inc hl + inc hl + ret + xor a + ld [$d0a6], a + ld a, $01 +.asm_006_7aa0 + call Func_006_7ae4 + ret nc + sla a + cp $10 + jr z, .asm_006_7aac + jr .asm_006_7aa0 +.asm_006_7aac + ld a, $03 + call Func_006_7ae4 + ret nc + ld a, $05 + call Func_006_7ae4 + ret nc + ld a, $09 + call Func_006_7ae4 + ret nc + ld a, $06 + call Func_006_7ae4 + ret nc + ld a, $0a + call Func_006_7ae4 + ret nc + ld a, $0c + call Func_006_7ae4 + ret nc + ld a, $f7 +.asm_006_7ad2 + call Func_006_7ae4 + ret nc + sra a + cp $ff + jr z, .asm_006_7ade + jr .asm_006_7ad2 +.asm_006_7ade + call Func_006_7ae4 + ret nc + scf + ret -jr_006_7af5: - pop af - scf - ret +Func_006_7ae4: + push af + ld hl, $d088 + ld b, [hl] + rst $28 + ld [bc], a + dec h + db $76 + jr c, .asm_006_7af5 + pop af + ld [$d0a6], a + or a + ret +.asm_006_7af5 + pop af + scf + ret - INCROM $1baf8, $1c000 \ No newline at end of file +rept $508 + db $ff +endr \ No newline at end of file diff --git a/src/engine/home.asm b/src/engine/home.asm index 0046286..72aedcf 100644 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -1704,7 +1704,7 @@ SetManyObjectsAttributes: ; 950 (0:950) ; for the sprite at wOAM + [wOAMOffset] / 4, set its attributes from registers e, d, c, b ; return carry if [wOAMOffset] > 40 * 4 (beyond the end of wOAM) -SetOneObjectAttributes: ; 97f (0:97f) +SetOneObjectAttributes: ; 097f (0:097f) push hl ld a, [wOAMOffset] ld l, a diff --git a/src/wram.asm b/src/wram.asm index 7039f14..050059c 100644 --- a/src/wram.asm +++ b/src/wram.asm @@ -1386,12 +1386,20 @@ wcea1:: ; cea1 wcea3:: ; cea3 ds $1 - ds $5 +wcea4:: ; cea4 + ds $1 + +wcea5:: ; cea5 + ds $4 wcea9:: ; cea9 ds $1 - ds $5 +wceaa:: ; ceaa + ds $1 + +wceab:: ; ceab + ds $4 wceaf:: ; ceaf ds $1 @@ -1462,16 +1470,34 @@ wcfe3:: ; cfe3 ds $4 ; name buffer in naming screen -wNameBuffer:: ; cfe7 +wNamingScreenBuffer:: ; cfe7 ds $18 ; current name length in naming screen -wNameLength:: ; cfff +wNamingScreenBufferLength:: ; cfff ds $1 SECTION "WRAM1", WRAMX +wd000:: ; d000 + ds $2 - ds $d +wd002:: ; d002 + ds $2 + +wd004:: ; d004 + ds $1 + +wd005:: ; d005 + ds $1 + +wd006:: ; d006 + ds $1 + +wd007:: ; d007 + ds $2 + +wd009:: ; d009 + ds $4 wd00d:: ; d00d ds $1 -- cgit v1.2.3 From 0919ad412409085f88ab0bc00ba36c8e833f286d Mon Sep 17 00:00:00 2001 From: jidoc01 Date: Wed, 26 Jun 2019 23:37:35 +0900 Subject: [Bank 6] Edit some other banks related to bank 6. --- src/engine/bank01.asm | 4 +- src/engine/bank04.asm | 43 ++++++++++++- src/engine/bank06.asm | 151 ++++++++++++++++++++-------------------------- src/text/text2.asm | 2 +- src/text/text_offsets.asm | 2 +- src/wram.asm | 12 +++- 6 files changed, 119 insertions(+), 95 deletions(-) (limited to 'src') diff --git a/src/engine/bank01.asm b/src/engine/bank01.asm index 4647146..2df1e9d 100644 --- a/src/engine/bank01.asm +++ b/src/engine/bank01.asm @@ -7774,12 +7774,12 @@ Func_758f: ; 758f (1:758f) INCROM $758f, $7594 Func_7594: ; 7594 (1:7594) - farcall $6, $661f + farcall Func_1a61f ret ; 0x7599 Func_7599: ; 7599 (1:7599) - farcall $6, $668d + farcall Func_006_668d ret ; 0x759e diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm index 6d29486..36e17a7 100644 --- a/src/engine/bank04.asm +++ b/src/engine/bank04.asm @@ -1110,7 +1110,7 @@ MainMenuFunctionTable: MainMenu_NewGame: ; 12704 (4:6704) farcall Func_c1b1 - call Func_128a9 + call InputPlayerName farcall Func_1996e call EnableSRAM ld a, [s0a007] @@ -1180,8 +1180,45 @@ Func_12871: ; 12871 (4:6871) Func_1288c: ; 1288c (4:688c) INCROM $1288c, $128a9 -Func_128a9: ; 128a9 (4:68a9) - INCROM $128a9, $1296e +InputPlayerName:: ; 128a9 (4:68a9) + ld hl, wc500 + ld bc, $0010 + ld a, $00 + call FillMemoryWithA + ld hl, wc500 + ; get player's name from the user + ; into hl. + farcall OnNamingScreen + farcall Func_c1a4 + call DoFrameIfLCDEnabled + call DisableLCD + ld hl, wc500 + ; get the first byte of the name buffer. + ld a, [hl] + or a + ; check if anything typed. + jr nz, .no_name + ld hl, .data +.no_name + ; set the default name. + ld de, sPlayerName + ld bc, $0010 + call EnableSRAM + call CopyDataHLtoDE_SaveRegisters + ; it seems for integrity checking. + call UpdateRNGSources + ld [sPlayerName+$e], a + call UpdateRNGSources + ld [sPlayerName+$f], a + call DisableSRAM + ret +.data + ; "MARK": default player name. + ; last two bytes are reserved for RNG. + db $03, $3C, $03, $30, $03, $41, $03, $3A + db $00, $00, $00, $00, $00, $00, $10, $12 +Unknown_128fb: ; 128fb + INCROM $128fb, $1296e Func_1296e: ; 1296e (4:696e) INCROM $1296e, $1299f diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm index a4a577d..4b72c64 100644 --- a/src/engine/bank06.asm +++ b/src/engine/bank06.asm @@ -183,7 +183,7 @@ Func_1996e: ; 1996e (6:596e) ld [hl], a inc l jr nz, .asm_199a2 - ld hl, $bc00 + ld hl, sCurrentDuel xor a ld [hli], a ld [hli], a @@ -319,34 +319,30 @@ Func_1a61f: ; 1a61f (6:661f) ret ; 0x1a68d - ld a, $c2 - ldh [$97], a +Func_006_668d: + ld a, $c2 ; player's turn + ldh [hWhoseTurn], a ld h, a ld l, $00 - .asm_006_6694 xor a ld [hli], a ld a, l cp $3c jr c, .asm_006_6694 - xor a ld hl, wBoosterCardsDrawn ld de, wDuelTempList ld c, $00 - .asm_006_66a4 ld a, [hli] or a jr z, .asm_006_66ae - ld a, c ld [de], a inc de inc c jr .asm_006_66a4 - .asm_006_66ae ld a, $ff ld [de], a @@ -364,18 +360,17 @@ Func_1a61f: ; 1a61f (6:661f) CommentedOut_1a6cc: ; 1a6cc (6:66cc) ret - ldh a, [$81] +Func_006_66cd: ; (6:66cd) + ldh a, [hBankSRAM] or a ret nz - push hl push de push bc - ld hl, $a100 + ld hl, sCardCollection ld bc, $0250 - ld a, [$a00b] + ld a, [$s0a000 + $b] ld e, a - .asm_006_66de ld a, [hli] xor e @@ -384,21 +379,19 @@ CommentedOut_1a6cc: ; 1a6cc (6:66cc) ld a, c or b jr nz, .asm_006_66de - ld a, e pop bc pop de pop hl or a ret z - xor a ld [wTileMapFill], a ld hl, wDoFrameFunction ld [hli], a ld [hl], a - ldh [$92], a - ldh [$93], a + ldh [hSCX], a + ldh [hSCY], a bank1call ZeroObjectPositionsAndToggleOAMCopy call EmptyScreen call LoadSymbolsFont @@ -406,13 +399,11 @@ CommentedOut_1a6cc: ; 1a6cc (6:66cc) ld a, [wConsole] cp $01 jr nz, .asm_006_6719 - ld a, $e4 ld [wOBP0], a ld [wBGP], a ld a, $01 ld [wFlushPaletteFlags], a - .asm_006_6719 lb de, $38, $9f call SetupText @@ -421,25 +412,23 @@ CommentedOut_1a6cc: ; 1a6cc (6:66cc) ld a, $0a ld [$0000], a xor a - ldh [$81], a + ldh [hBankSRAM], a ld [$4000], a ld [$a000], a ld [$0000], a jp Reset - ret - ldh a, [$81] +Func_006_673a: ; (6:673a) + ldh a, [hBankSRAM] or a ret nz - push hl push de push bc - ld hl, $a100 + ld hl, sCardCollection ld bc, $0250 ld e, $00 - .asm_006_6749 ld a, [hli] xor e @@ -448,7 +437,6 @@ CommentedOut_1a6cc: ; 1a6cc (6:66cc) ld a, c or b jr nz, .asm_006_6749 - ld a, $0a ld [$0000], a ld a, e @@ -458,43 +446,41 @@ CommentedOut_1a6cc: ; 1a6cc (6:66cc) pop hl ret -Unknown_1a75e: - INCROM $1a75e,$1a787 +Unknown_1a75e: ; data + INCROM $1a75e, $1a787 -; set zero from hl in b bytes -ClearMemory: +; set each byte zero from hl for b bytes +ClearMemory: ; (6:6787) push af push bc push hl ld b, a xor a - .loop ld [hli], a dec b jr nz, .loop - pop hl pop bc pop af ret -Func_006_6794: +Func_006_6794: ; (6:6794) push af inc a jr z, .asm_006_679c - ld a, $02 jr .asm_006_679e - .asm_006_679c ld a, $03 - .asm_006_679e call PlaySFX pop af ret +; enter when naming starts, +; leave when naming ends. +OnNamingScreen: ; (6:67a3) ld e, l ld d, h ld a, $0c @@ -526,16 +512,14 @@ Func_006_6794: ld [wceaa], a ld a, $00 ld [wceab], a - .asm_006_67f1 ld a, $01 ld [wVBlankOAMCopyToggle], a call DoFrame call UpdateRNGSources - ldh a, [$8f] - and $08 - jr z, .asm_006_6819 - + ldh a, [hDPadHeld] + and START + jr z, .on_start ld a, $01 call Func_006_6794 call Func_006_6a07 @@ -545,25 +529,19 @@ Func_006_6794: ld [wcea4], a call Func_006_6a23 jr .asm_006_67f1 - -.asm_006_6819 +.on_start call Func_006_6908 jr nc, .asm_006_67f1 - cp $ff jr z, .asm_006_682b - call Func_006_6a87 jr nc, .asm_006_67f1 - call Func_006_6880 ret - .asm_006_682b ld a, [wNamingScreenBufferLength] or a jr z, .asm_006_67f1 - ld e, a ld d, $00 ld hl, wNamingScreenBuffer @@ -576,7 +554,7 @@ Func_006_6794: dec [hl] call Func_006_68cb jr .asm_006_67f1 - + Func_006_6846: ld [wd004], a push hl @@ -602,14 +580,12 @@ Func_006_6846: ld a, [wd004] ld b, a inc b - .asm_006_686f ld a, [de] inc de ld [hli], a dec b - jr nz, Func_006_6846.asm_006_686f - + jr nz, .asm_006_686f ld hl, wNamingScreenBuffer call GetTextSizeInTiles ld a, c @@ -639,10 +615,8 @@ Func_006_6892: ld h, a or c jr z, .asm_006_68a6 - ld l, c call PlaceTextItems - .asm_006_68a6 ld hl, .data call PlaceTextItems @@ -652,9 +626,9 @@ Func_006_6892: call ProcessTextFromID call EnableLCD ret - .data - db $0f, $10, $1d, $02, $ff + textitem $0f, $10, Text021d ; "End" + db $ff Func_006_68c1: ld de, $0003 @@ -685,7 +659,7 @@ Func_006_68cb: call ProcessText ret .char_underbar -rept $a +rept 10 db $56, $03 ; "_" endr db $56, $00 @@ -693,7 +667,7 @@ endr Func_006_6908: xor a ld [wcfe3], a - ldh a, [$8f] + ldh a, [hDPadHeld] or a jp z, .asm_006_69d9 ld b, a @@ -839,7 +813,7 @@ Func_006_6908: ld a, $01 ld [wcfe3], a .asm_006_69d9 - ldh a, [$91] + ldh a, [hKeysPressed] and $03 jr z, .asm_006_69ef and $01 @@ -1178,7 +1152,7 @@ Func_006_6b93: jr nz, .asm_006_6ba5 ret .data - INCROM $1abaf,$1ad89 + INCROM $1abaf, $1ad89 Func_1ad89: ; 1ad89 (6:6d89) push af @@ -1199,9 +1173,9 @@ Func_1ad89: ; 1ad89 (6:6d89) ld a, $01 ld [wVBlankOAMCopyToggle], a call LoadSymbolsFont - ld de, $38bf + lb de, $38, $bf call SetupText - call Func_006_6e37 + call FillVramWithF0 xor a ld [wd009], a call Func_006_6e99 @@ -1221,9 +1195,9 @@ Func_1ad89: ; 1ad89 (6:6d89) ld [wVBlankOAMCopyToggle], a call DoFrame call UpdateRNGSources - ldh a, [$8f] - and $08 - jr z, .asm_006_6dfc + ldh a, [hDPadHeld] + and START + jr z, .on_start ld a, $01 call Func_006_6794 call Func_006_6fa1 @@ -1232,7 +1206,7 @@ Func_1ad89: ; 1ad89 (6:6d89) ld [wcea4], a call Func_006_6fbd jr .asm_006_6dd6 -.asm_006_6dfc +.on_start call Func_006_6efb jr nc, .asm_006_6dd6 cp $ff @@ -1267,7 +1241,9 @@ Func_1ad89: ; 1ad89 (6:6d89) call Func_006_6e59 jp .asm_006_6dd6 -Func_006_6e37: +; fill v0Tiles0 for 0x10 tiles +; with 0xF0. +FillVramWithF0: ld hl, v0Tiles0 ld de, .data ld b, $00 @@ -1281,7 +1257,7 @@ Func_006_6e37: ld [hli], a jr .asm_006_6e3f .data -rept $6e58-$6e48 +rept $10 db $f0 endr @@ -1313,7 +1289,11 @@ Func_006_6e59: call ProcessText ret .data - INCROM $1ae83,$1ae99 + db $06 +rept $14 + db $5f +endr + db $00 Func_006_6e99: call Func_006_68c1 @@ -1328,9 +1308,9 @@ Func_006_6e99: ld l, c call PlaceTextItems .asm_006_6ead - ld hl, $68bc + ld hl, Func_006_6892.data call PlaceTextItems - ld hl, $0222 + ldtx hl, NamingScreenKeyboardText ; "A B C D..." ld de, $0204 call InitTextPrinting call ProcessTextFromID @@ -1379,7 +1359,7 @@ Func_006_6ec3: Func_006_6efb: xor a ld [wcfe3], a - ldh a, [$8f] + ldh a, [hDPadHeld] or a jp z, .asm_006_6f73 ld b, a @@ -1454,7 +1434,7 @@ Func_006_6efb: ld a, $01 ld [wcfe3], a .asm_006_6f73 - ldh a, [$91] + ldh a, [hKeysPressed] and $03 jr z, .asm_006_6f89 and $01 @@ -1572,7 +1552,7 @@ Func_006_7000: ; a bunch of data Unknown_006_7019: - INCROM $1b019,$1ba12 + INCROM $1b019, $1ba12 Func_006_7a12: ; 1ba12 push af @@ -1590,7 +1570,7 @@ Func_006_7a12: ; 1ba12 call Func_006_7a5b call Func_006_7a7d push hl - ld de, $d0aa + ld de, wd0aa ld h, b ld l, $02 call HtimesL @@ -1615,7 +1595,7 @@ Func_006_7a4c: ld l, b ld h, $54 call HtimesL - ld de, $a350 + ld de, s0a350 add hl, de ld d, h ld e, l @@ -1639,7 +1619,6 @@ Func_006_7a5b: ld b, a or a jr z, .asm_006_7a77 - ld a, [de] inc de ld c, a @@ -1664,10 +1643,10 @@ Func_006_7a7d: ld a, [hli] ld h, [hl] ld l, a - ld de, $d089 + ld de, wd089 call CopyText pop hl - ld de, $d089 + ld de, wd089 .asm_006_7a8d ld a, [de] ld [hli], a @@ -1681,8 +1660,11 @@ Func_006_7a7d: inc hl inc hl ret + +; pointed from 0xb87e: [06|9A|7A] +Func_006_7a9a: ; (6:7a9a) xor a - ld [$d0a6], a + ld [wd0a6], a ld a, $01 .asm_006_7aa0 call Func_006_7ae4 @@ -1726,15 +1708,12 @@ Func_006_7a7d: Func_006_7ae4: push af - ld hl, $d088 + ld hl, wd088 ld b, [hl] - rst $28 - ld [bc], a - dec h - db $76 + farcall $2, $7625 jr c, .asm_006_7af5 pop af - ld [$d0a6], a + ld [wd0a6], a or a ret .asm_006_7af5 diff --git a/src/text/text2.asm b/src/text/text2.asm index 6a37642..e573cd6 100644 --- a/src/text/text2.asm +++ b/src/text/text2.asm @@ -1580,7 +1580,7 @@ Text0221: ; 3b8f2 (e:78f2) textfw0 " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " " done -Text0222: ; 3b97b (e:797b) +NamingScreenKeyboardText: ; 3b97b (e:797b) textfw3 "A", " ", "B", " ", "C", " ", "D", " ", "E", " ", "F", " ", "G", " ", "H", " ", "I" line "" textfw3 "J", " ", "K", " ", "L", " ", "M", " ", "N", " ", "O", " ", "P", " ", "Q", " ", "R" diff --git a/src/text/text_offsets.asm b/src/text/text_offsets.asm index bd1da35..3f981c6 100644 --- a/src/text/text_offsets.asm +++ b/src/text/text_offsets.asm @@ -547,7 +547,7 @@ TextOffsets:: ; 34000 (d:4000) textpointer Text021f ; 0x021f textpointer Text0220 ; 0x0220 textpointer Text0221 ; 0x0221 - textpointer Text0222 ; 0x0222 + textpointer NamingScreenKeyboardText ; 0x0222 textpointer NewDeckText ; 0x0223 textpointer PleaseSelectDeckText ; 0x0224 textpointer Text0225 ; 0x0225 diff --git a/src/wram.asm b/src/wram.asm index 050059c..c765831 100644 --- a/src/wram.asm +++ b/src/wram.asm @@ -1513,7 +1513,11 @@ wd087:: ; d087 wd088:: ; d088 ds $1 - ds $19 +wd089:: ; d089 + ds $1 + +wd08a:: ; d08a + ds $18 wd0a2:: ; d0a2 ds $2 @@ -1524,7 +1528,11 @@ wd0a4:: ; d0a4 wd0a5:: ; d0a5 ds $1 - ds $3 +wd0a6:: ; d0a6 + ds $1 + +dw0a7:: ; d0a7 + ds $2 wd0a9:: ; d0a9 ds $1 -- cgit v1.2.3 From 1b3be55e0cbcda15bb7f2a1cebb72b56d9967fb8 Mon Sep 17 00:00:00 2001 From: jidoc01 Date: Thu, 27 Jun 2019 18:18:32 +0900 Subject: [Bank 6] Add new text items & etc. --- src/engine/bank04.asm | 11 ++++--- src/engine/bank06.asm | 81 ++++++++++++++++++++++++++++++++--------------- src/sram.asm | 6 ++-- src/text/text2.asm | 4 +-- src/text/text_offsets.asm | 4 +-- 5 files changed, 71 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm index 36e17a7..9907b97 100644 --- a/src/engine/bank04.asm +++ b/src/engine/bank04.asm @@ -1181,14 +1181,17 @@ Func_1288c: ; 1288c (4:688c) INCROM $1288c, $128a9 InputPlayerName:: ; 128a9 (4:68a9) - ld hl, wc500 + ; clear name buffer. + ld hl, wc500 ; c500: name buffer. ld bc, $0010 ld a, $00 call FillMemoryWithA + + ; get player's name + ; from the user into hl. ld hl, wc500 - ; get player's name from the user - ; into hl. farcall OnNamingScreen + farcall Func_c1a4 call DoFrameIfLCDEnabled call DisableLCD @@ -1215,7 +1218,7 @@ InputPlayerName:: ; 128a9 (4:68a9) .data ; "MARK": default player name. ; last two bytes are reserved for RNG. - db $03, $3C, $03, $30, $03, $41, $03, $3A + textfw3 "M", "A", "R", "K" db $00, $00, $00, $00, $00, $00, $10, $12 Unknown_128fb: ; 128fb INCROM $128fb, $1296e diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm index 4b72c64..d834732 100644 --- a/src/engine/bank06.asm +++ b/src/engine/bank06.asm @@ -369,7 +369,7 @@ Func_006_66cd: ; (6:66cd) push bc ld hl, sCardCollection ld bc, $0250 - ld a, [$s0a000 + $b] + ld a, [s0a000 + $b] ld e, a .asm_006_66de ld a, [hli] @@ -440,14 +440,31 @@ Func_006_673a: ; (6:673a) ld a, $0a ld [$0000], a ld a, e - ld [$a00b], a + ld [s0a00b], a pop bc pop de pop hl ret Unknown_1a75e: ; data - INCROM $1a75e, $1a787 + textitem 1, 1, WhatIsYourNameText + db $ff + + textitem 2, 1, Text022b + textitem 14, 1, Text0219 + db $ff + + textitem 2, 1, Text022c + textitem 14, 1, Text0219 + db $ff + + textitem 2, 1, Text022d + textitem 14, 1, Text0219 + db $ff + + textitem 2, 1, Text022e + textitem 14, 1, Text0219 + db $ff ; set each byte zero from hl for b bytes ClearMemory: ; (6:6787) @@ -480,6 +497,8 @@ Func_006_6794: ; (6:6794) ; enter when naming starts, ; leave when naming ends. +; [input] +; hl: dest. buffer. OnNamingScreen: ; (6:67a3) ld e, l ld d, h @@ -497,7 +516,7 @@ OnNamingScreen: ; (6:67a3) call LoadSymbolsFont lb de, $38, $bf call SetupText - call Func_006_6a65 + call SetVram0xFF ld a, $02 ld [wd009], a call Func_006_6892 @@ -552,9 +571,12 @@ OnNamingScreen: ; (6:67a3) ld hl, wNamingScreenBufferLength dec [hl] dec [hl] - call Func_006_68cb + call PrintPlayerNameFromInput jr .asm_006_67f1 +; a: length +; de: dest. pointer +; hl: data pointer Func_006_6846: ld [wd004], a push hl @@ -580,12 +602,13 @@ Func_006_6846: ld a, [wd004] ld b, a inc b -.asm_006_686f +.loop + ; copy data from de to hl. ld a, [de] inc de ld [hli], a dec b - jr nz, .asm_006_686f + jr nz, .loop ld hl, wNamingScreenBuffer call GetTextSizeInTiles ld a, c @@ -603,21 +626,21 @@ Func_006_6880: ld a, [wd004] ld b, a inc b - jr Func_006_6846.asm_006_686f + jr Func_006_6846.loop Func_006_6892: - call Func_006_68c1 - call Func_006_68cb + call DrawTextboxForKeyboard + call PrintPlayerNameFromInput ld hl, wd002 ld c, [hl] inc hl ld a, [hl] ld h, a or c - jr z, .asm_006_68a6 + jr z, .put_text_end ld l, c call PlaceTextItems -.asm_006_68a6 +.put_text_end ld hl, .data call PlaceTextItems ld hl, $0221 @@ -627,16 +650,16 @@ Func_006_6892: call EnableLCD ret .data - textitem $0f, $10, Text021d ; "End" + textitem $0f, $10, EndText ; "End" db $ff -Func_006_68c1: - ld de, $0003 - ld bc, $140f +DrawTextboxForKeyboard: + ld de, $0003 ; x, y + ld bc, $140f ; w, h call DrawRegularTextBox ret -Func_006_68cb: +PrintPlayerNameFromInput: ld hl, wd007 ld d, [hl] inc hl @@ -650,19 +673,23 @@ Func_006_68cb: inc a ld e, a ld d, $00 + ; print the underbars + ; before print the input. ld hl, .char_underbar add hl, de call ProcessText pop de call InitTextPrinting + ; print the input from the user. ld hl, wNamingScreenBuffer call ProcessText ret .char_underbar + db $56 rept 10 - db $56, $03 ; "_" + textfw3 "_" endr - db $56, $00 + db $00 ; null Func_006_6908: xor a @@ -906,11 +933,15 @@ Func_006_6a28: pop af ret -Func_006_6a65: +SetVram0xFF: ld hl, v0Tiles0 ld de, .data ld b, $00 -.asm_006_6a6d +.loop + ; copy data from de to hl + ; for 0x10 bytes. + ; and de has all of 0xff data, + ; which means that it puts only 0xff. ld a, $10 cp b ret z @@ -918,7 +949,7 @@ Func_006_6a65: ld a, [de] inc de ld [hli], a - jr .asm_006_6a6d + jr .loop .data rept $6a87-$6a77 db $ff @@ -1062,7 +1093,7 @@ Func_006_6a87: jr .asm_006_6b51 ; increase name length before add the character. .asm_006_6b4c - inc [hl] ; hl: wNamingScreenBufferLength => name length + inc [hl] inc [hl] ld hl, wNamingScreenBuffer ; write 2 bytes character codes to the name buffer. @@ -1076,7 +1107,7 @@ Func_006_6a87: ld [hl], e inc hl ld [hl], $00 ; null terminator. - call Func_006_68cb + call PrintPlayerNameFromInput .asm_006_6b5d or a ret @@ -1296,7 +1327,7 @@ endr db $00 Func_006_6e99: - call Func_006_68c1 + call DrawTextboxForKeyboard call Func_006_6e59 ld hl, wd002 ld c, [hl] diff --git a/src/sram.asm b/src/sram.asm index fa58d07..c69e4c0 100644 --- a/src/sram.asm +++ b/src/sram.asm @@ -19,8 +19,10 @@ s0a009:: ; a009 ds $1 s0a00a:: ; a00a ds $1 - - ds $5 +s0a00b:: ; a00b + ds $1 +s0a00c:: ; a00c + ds $4 sPlayerName:: ; a010 ds $10 diff --git a/src/text/text2.asm b/src/text/text2.asm index e573cd6..27ccff9 100644 --- a/src/text/text2.asm +++ b/src/text/text2.asm @@ -1523,11 +1523,11 @@ Text021c: ; 3b7f9 (e:77f9) textfw3 "A", "B", "C" done -Text021d: ; 3b800 (e:7800) +EndText: ; 3b800 (e:7800) text "End" done -Text021e: ; 3b805 (e:7805) +WhatIsYourNameText: ; 3b805 (e:7805) text "What is your name?" done diff --git a/src/text/text_offsets.asm b/src/text/text_offsets.asm index 3f981c6..65dab94 100644 --- a/src/text/text_offsets.asm +++ b/src/text/text_offsets.asm @@ -542,8 +542,8 @@ TextOffsets:: ; 34000 (d:4000) textpointer Text021a ; 0x021a textpointer Text021b ; 0x021b textpointer Text021c ; 0x021c - textpointer Text021d ; 0x021d - textpointer Text021e ; 0x021e + textpointer EndText ; 0x021d + textpointer WhatIsYourNameText ; 0x021e textpointer Text021f ; 0x021f textpointer Text0220 ; 0x0220 textpointer Text0221 ; 0x0221 -- cgit v1.2.3 From e9febd5e485ca6efd6d5a2dd7f97a6df0dadd22f Mon Sep 17 00:00:00 2001 From: jidoc01 Date: Thu, 27 Jun 2019 22:49:08 +0900 Subject: [Bank 6] Analyze Keyboard Data & Add Macro. --- src/engine/bank02.asm | 4 +- src/engine/bank04.asm | 6 +- src/engine/bank06.asm | 360 +++++++++++++++++++++++++++++++++----------------- src/macros/data.asm | 5 + src/wram.asm | 14 +- 5 files changed, 255 insertions(+), 134 deletions(-) (limited to 'src') diff --git a/src/engine/bank02.asm b/src/engine/bank02.asm index 509a1e9..9c92b52 100644 --- a/src/engine/bank02.asm +++ b/src/engine/bank02.asm @@ -272,7 +272,7 @@ Func_8f05: ; 8f05 (2:4f05) ld a, $14 ld bc, $0401 ld de, wcfb9 - farcall Func_1ad89 + farcall InputDeckName ld a, [wcfb9] or a ret nz @@ -935,7 +935,7 @@ Func_ba04: ; ba04 (2:7a04) ldtx hl, PleaseSelectDeckText call DrawWideTextBox_PrintText ld a, $5 - ld [wcea9], a + ld [wNamingScreenKeyboardHeight], a ld hl, $73fe ld d, h ld a, l diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm index 9907b97..2c417cc 100644 --- a/src/engine/bank04.asm +++ b/src/engine/bank04.asm @@ -1110,7 +1110,7 @@ MainMenuFunctionTable: MainMenu_NewGame: ; 12704 (4:6704) farcall Func_c1b1 - call InputPlayerName + call OnPlayerNamingScreen farcall Func_1996e call EnableSRAM ld a, [s0a007] @@ -1180,7 +1180,7 @@ Func_12871: ; 12871 (4:6871) Func_1288c: ; 1288c (4:688c) INCROM $1288c, $128a9 -InputPlayerName:: ; 128a9 (4:68a9) +OnPlayerNamingScreen:: ; 128a9 (4:68a9) ; clear name buffer. ld hl, wc500 ; c500: name buffer. ld bc, $0010 @@ -1190,7 +1190,7 @@ InputPlayerName:: ; 128a9 (4:68a9) ; get player's name ; from the user into hl. ld hl, wc500 - farcall OnNamingScreen + farcall InputPlayerName farcall Func_c1a4 call DoFrameIfLCDEnabled diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm index d834732..05dff85 100644 --- a/src/engine/bank06.asm +++ b/src/engine/bank06.asm @@ -446,7 +446,7 @@ Func_006_673a: ; (6:673a) pop hl ret -Unknown_1a75e: ; data +WhatIsYourNameData: ; data textitem 1, 1, WhatIsYourNameText db $ff @@ -482,7 +482,8 @@ ClearMemory: ; (6:6787) pop af ret -Func_006_6794: ; (6:6794) +; play different sfx by a. +PlaySFXByA: ; (6:6794) push af inc a jr z, .asm_006_679c @@ -495,17 +496,15 @@ Func_006_6794: ; (6:6794) pop af ret -; enter when naming starts, -; leave when naming ends. -; [input] -; hl: dest. buffer. -OnNamingScreen: ; (6:67a3) +; get player name from the user +; into hl +InputPlayerName: ; (6:67a3) ld e, l ld d, h ld a, $0c - ld hl, Unknown_1a75e - ld bc, $0c01 - call Func_006_6846 + ld hl, WhatIsYourNameData + lb bc, $0c, $01 + call InitializeInputName call Set_OBJ_8x8 xor a ld [wTileMapFill], a @@ -519,48 +518,53 @@ OnNamingScreen: ; (6:67a3) call SetVram0xFF ld a, $02 ld [wd009], a - call Func_006_6892 + call DrawNamingScreenBG xor a - ld [wd006], a - ld [wcea4], a + ld [wNamingScreenCursorX], a + ld [wNamingScreenCursorY], a ld a, $09 ld [wd005], a ld a, $06 - ld [wcea9], a + ld [wNamingScreenKeyboardHeight], a ld a, $0f ld [wceaa], a ld a, $00 ld [wceab], a -.asm_006_67f1 +.loop ld a, $01 ld [wVBlankOAMCopyToggle], a call DoFrame call UpdateRNGSources ldh a, [hDPadHeld] and START - jr z, .on_start + jr z, .else + ; if pressed start button. ld a, $01 - call Func_006_6794 + call PlaySFXByA call Func_006_6a07 ld a, $06 - ld [wd006], a + ld [wNamingScreenCursorX], a ld a, $05 - ld [wcea4], a + ld [wNamingScreenCursorY], a call Func_006_6a23 - jr .asm_006_67f1 -.on_start - call Func_006_6908 - jr nc, .asm_006_67f1 + jr .loop +.else + call NamingScreen_CheckButtonState + jr nc, .loop ; if not pressed, go back to the loop. cp $ff - jr z, .asm_006_682b - call Func_006_6a87 - jr nc, .asm_006_67f1 - call Func_006_6880 + jr z, .on_b_button + ; on A button. + call NamingScreen_ProcessInput + jr nc, .loop + ; if the player selected the end button, + ; end its naming. + call FinalizeInputName ret -.asm_006_682b +.on_b_button + ; erase one character. ld a, [wNamingScreenBufferLength] or a - jr z, .asm_006_67f1 + jr z, .loop ld e, a ld d, $00 ld hl, wNamingScreenBuffer @@ -572,13 +576,14 @@ OnNamingScreen: ; (6:67a3) dec [hl] dec [hl] call PrintPlayerNameFromInput - jr .asm_006_67f1 + jr .loop -; a: length -; de: dest. pointer -; hl: data pointer -Func_006_6846: - ld [wd004], a +; it's called when naming(either player's or deck's) starts. +; a: maximum length of name. +; de: dest. pointer. +; hl: pointer to text item of the question. +InitializeInputName: + ld [wNamingScreenBufferMaxLength], a push hl ld hl, wd007 ld [hl], b @@ -587,23 +592,27 @@ Func_006_6846: pop hl ld b, h ld c, l - ld hl, wd002 + ; set the question string. + ld hl, wNamingScreenQuestionPointer ld [hl], c inc hl ld [hl], b - ld hl, wd000 + ; set the destination buffer. + ld hl, wNamingScreenDestPointer ld [hl], e inc hl ld [hl], d + ; clear the name buffer. ld a, $18 ld hl, wNamingScreenBuffer call ClearMemory ld hl, wNamingScreenBuffer - ld a, [wd004] + ld a, [wNamingScreenBufferMaxLength] ld b, a inc b .loop - ; copy data from de to hl. + ; copy data from de to hl + ; for b bytes. ld a, [de] inc de ld [hli], a @@ -615,32 +624,37 @@ Func_006_6846: ld [wNamingScreenBufferLength], a ret -Func_006_6880: - ld hl, wd000 +FinalizeInputName: + ld hl, wNamingScreenDestPointer ld e, [hl] inc hl ld d, [hl] ld l, e ld h, d ld de, wNamingScreenBuffer - ld a, [wd004] + ld a, [wNamingScreenBufferMaxLength] ld b, a inc b - jr Func_006_6846.loop + jr InitializeInputName.loop -Func_006_6892: +; draws the keyboard frame +; and the question if it exists. +DrawNamingScreenBG: call DrawTextboxForKeyboard call PrintPlayerNameFromInput - ld hl, wd002 + ld hl, wNamingScreenQuestionPointer ld c, [hl] inc hl ld a, [hl] ld h, a or c jr z, .put_text_end + ; print the question string. + ; ex) "What is your name?" ld l, c call PlaceTextItems .put_text_end + ; print "End". ld hl, .data call PlaceTextItems ld hl, $0221 @@ -666,7 +680,7 @@ PrintPlayerNameFromInput: ld e, [hl] push de call InitTextPrinting - ld a, [wd004] + ld a, [wNamingScreenBufferMaxLength] ld e, a ld a, $14 sub e @@ -691,30 +705,35 @@ rept 10 endr db $00 ; null -Func_006_6908: +; check if button pressed. +; if pressed, set the carry bit on. +NamingScreen_CheckButtonState: xor a ld [wcfe3], a ldh a, [hDPadHeld] or a - jp z, .asm_006_69d9 + jp z, .no_press + ; detected any button press. ld b, a - ld a, [wcea9] + ld a, [wNamingScreenKeyboardHeight] ld c, a - ld a, [wd006] + ld a, [wNamingScreenCursorX] ld h, a - ld a, [wcea4] + ld a, [wNamingScreenCursorY] ld l, a - bit 6, b + bit D_UP_F, b jr z, .asm_006_692c + ; up dec a - bit 7, a + bit D_DOWN_F, a jr z, .asm_006_69a7 ld a, c dec a jr .asm_006_69a7 .asm_006_692c - bit 7, b + bit D_DOWN_F, b jr z, .asm_006_6937 + ; down inc a cp c jr c, .asm_006_69a7 @@ -724,8 +743,9 @@ Func_006_6908: ld a, [wd005] ld c, a ld a, h - bit 5, b + bit D_LEFT_F, b jr z, .asm_006_6974 + ; left ld d, a ld a, $06 cp l @@ -734,7 +754,7 @@ Func_006_6908: push hl push bc push af - call Func_006_6b93 + call GetCharacterInfoFromCursorPos inc hl inc hl inc hl @@ -760,14 +780,14 @@ Func_006_6908: jr .asm_006_69aa .asm_006_696b dec a - bit 7, a + bit D_DOWN_F, a jr z, .asm_006_69aa ld a, c dec a jr .asm_006_69aa .asm_006_6974 - bit 4, b - jr z, .asm_006_69d9 + bit D_RIGHT_F, b + jr z, .no_press ld d, a ld a, $06 cp l @@ -776,7 +796,7 @@ Func_006_6908: push hl push bc push af - call Func_006_6b93 + call GetCharacterInfoFromCursorPos inc hl inc hl inc hl @@ -813,7 +833,7 @@ Func_006_6908: ld h, a .asm_006_69ab push hl - call Func_006_6b93 + call GetCharacterInfoFromCursorPos inc hl inc hl inc hl @@ -829,25 +849,25 @@ Func_006_6908: pop de pop hl ld a, l - ld [wcea4], a + ld [wNamingScreenCursorY], a ld a, h - ld [wd006], a + ld [wNamingScreenCursorX], a xor a ld [wcea3], a ld a, $06 cp d - jp z, Func_006_6908 + jp z, NamingScreen_CheckButtonState ld a, $01 ld [wcfe3], a -.asm_006_69d9 +.no_press ldh a, [hKeysPressed] - and $03 + and A_BUTTON | B_BUTTON jr z, .asm_006_69ef - and $01 + and A_BUTTON jr nz, .asm_006_69e5 ld a, $ff .asm_006_69e5 - call Func_006_6794 + call PlaySFXByA push af call Func_006_6a23 pop af @@ -872,11 +892,11 @@ Func_006_6a07: ld a, [wceab] .asm_006_6a0a ld e, a - ld a, [wd006] + ld a, [wNamingScreenCursorX] ld h, a - ld a, [wcea4] + ld a, [wNamingScreenCursorY] ld l, a - call Func_006_6b93 + call GetCharacterInfoFromCursorPos ld a, [hli] ld c, a ld b, [hl] @@ -906,7 +926,7 @@ Func_006_6a28: ld a, [wNamingScreenBufferLength] srl a ld d, a - ld a, [wd004] + ld a, [wNamingScreenBufferMaxLength] srl a ld e, a ld a, d @@ -955,15 +975,13 @@ rept $6a87-$6a77 db $ff endr -; bc = xy coordinate(by each tile) in the naming screen -; hl = the pointer to its character information(by 6bytes) -; info. structure: (1) / (1) / (1) / character code(2) / (1) -Func_006_6a87: - ld a, [wd006] +; set the carry bit on if "End" was selected. +NamingScreen_ProcessInput: + ld a, [wNamingScreenCursorX] ld h, a - ld a, [wcea4] + ld a, [wNamingScreenCursorY] ld l, a - call Func_006_6b93 + call GetCharacterInfoFromCursorPos inc hl inc hl ld e, [hl] @@ -971,7 +989,7 @@ Func_006_6a87: ld a, [hli] ld d, a cp $09 - jp z, .asm_006_6b5f + jp z, .on_end cp $07 jr nz, .asm_006_6ab8 ld a, [wd009] @@ -1004,7 +1022,7 @@ Func_006_6a87: ld a, $01 .asm_006_6ace ld [wd009], a - call Func_006_6892 + call DrawNamingScreenBG or a ret .asm_006_6ad6 @@ -1019,7 +1037,7 @@ Func_006_6a87: cp c jr nz, .asm_006_6af4 push hl - ld hl, $6cf9 + ld hl, KeyboardData + ($6cf9 - $6baf) call Func_006_6b61 pop hl jr c, .asm_006_6b5d @@ -1033,16 +1051,16 @@ Func_006_6a87: cp c jr nz, .asm_006_6b1d push hl - ld hl, $6d5f + ld hl, KeyboardData + ($6d5f - $6baf) call Func_006_6b61 pop hl jr c, .asm_006_6b5d .asm_006_6b09 - ld a, [wNamingScreenBufferLength] ; cfff: current player name length(by byte). + ld a, [wNamingScreenBufferLength] dec a dec a ld [wNamingScreenBufferLength], a - ld hl, wNamingScreenBuffer ; cfe7: temporary buffer for player name. + ld hl, wNamingScreenBuffer push de ld d, $00 ld e, a @@ -1081,7 +1099,7 @@ Func_006_6a87: ld a, [hl] ld c, a push hl - ld hl, wd004 + ld hl, wNamingScreenBufferMaxLength cp [hl] pop hl jr nz, .asm_006_6b4c @@ -1111,7 +1129,7 @@ Func_006_6a87: .asm_006_6b5d or a ret -.asm_006_6b5f +.on_end scf ret @@ -1159,20 +1177,26 @@ Func_006_6b61: scf ret -Func_006_6b93: +; given the position of the current cursor, +; it returns the pointer to the proper information. +; h: position x. +; l: position y. +GetCharacterInfoFromCursorPos: push de + ; (information index) = (x) * (height) + (y) + ; (height) = 0x05(Deck) or 0x06(Player) ld e, l ld d, h - ld a, [wcea9] + ld a, [wNamingScreenKeyboardHeight] ld l, a call HtimesL ld a, l add e - ld hl, .data + ld hl, KeyboardData pop de or a ret z -.asm_006_6ba5 +.loop inc hl inc hl inc hl @@ -1180,12 +1204,99 @@ Func_006_6b93: inc hl inc hl dec a - jr nz, .asm_006_6ba5 + jr nz, .loop ret -.data - INCROM $1abaf, $1ad89 -Func_1ad89: ; 1ad89 (6:6d89) +; a set of keyboard datum. +; unit: 6 bytes. +; structure: +; unk 1 (1) / unk 2 (1) / type 1 (1) / type 2 (1) / character code(2) +; - some of one byte characters have 0x0e in their high byte. +; - unused data contains its character code as zero. +KeyboardData: ; (6:6baf) + kbitem $04, $02, $11, $00, $0330 + kbitem $06, $02, $12, $00, $0339 + kbitem $08, $02, $13, $00, $0342 + kbitem $0a, $02, $14, $00, $006f + kbitem $0c, $02, $15, $00, $0064 + kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $04, $16, $00, $0331 + kbitem $06, $04, $17, $00, $033a + kbitem $08, $04, $18, $00, $0343 + kbitem $0a, $04, $19, $00, $035d + kbitem $0c, $04, $1a, $00, $0065 + kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $06, $1b, $00, $0332 + kbitem $06, $06, $1c, $00, $033b + kbitem $08, $06, $1d, $00, $0344 + kbitem $0a, $06, $1e, $00, $006a + kbitem $0c, $06, $1f, $00, $0066 + kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $08, $20, $00, $0333 + kbitem $06, $08, $21, $00, $033c + kbitem $08, $08, $22, $00, $0345 + kbitem $0a, $08, $23, $00, $006b + kbitem $0c, $08, $24, $00, $0067 + kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $0a, $25, $00, $0334 + kbitem $06, $0a, $26, $00, $033d + kbitem $08, $0a, $27, $00, $0346 + kbitem $0a, $0a, $28, $00, $0077 + kbitem $0c, $0a, $29, $00, $0068 + kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $0c, $2a, $00, $0335 + kbitem $06, $0c, $2b, $00, $033e + kbitem $08, $0c, $2c, $00, $0347 + kbitem $0a, $0c, $2d, $00, $0060 + kbitem $0c, $0c, $2e, $00, $0069 + kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $0e, $2f, $00, $0336 + kbitem $06, $0e, $30, $00, $033f + kbitem $08, $0e, $31, $00, $0348 + kbitem $0a, $0e, $32, $00, $0061 + kbitem $0c, $0e, $33, $00, $0513 + kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $10, $34, $00, $0337 + kbitem $06, $10, $35, $00, $0340 + kbitem $08, $10, $36, $00, $0349 + kbitem $0a, $10, $3c, $00, $0062 + kbitem $0c, $10, $3d, $00, $0511 + kbitem $10, $0f, $01, $09, $0000 + kbitem $04, $12, $37, $00, $0338 + kbitem $06, $12, $38, $00, $0341 + kbitem $08, $12, $39, $00, $006e + kbitem $0a, $12, $3a, $00, $0063 + kbitem $0c, $12, $3b, $00, $0070 + kbitem $10, $0f, $01, $09, $0000 + kbitem $00, $00, $00, $00, $0000 + kbitem $16, $0e, $3e, $00, $0e17 + kbitem $3f, $00, $18, $0e, $0040 + kbitem $19, $0e, $41, $00, $0e1a + kbitem $42, $00, $1b, $0e, $0043 + kbitem $1c, $0e, $44, $00, $0e1d + kbitem $45, $00, $1e, $0e, $0046 + kbitem $1f, $0e, $47, $00, $0e20 + kbitem $48, $00, $21, $0e, $0049 + kbitem $22, $0e, $4a, $00, $0e23 + kbitem $4b, $00, $24, $0e, $004c + kbitem $2a, $0e, $4d, $00, $0e2b + kbitem $4e, $00, $2c, $0e, $004f + kbitem $2d, $0e, $50, $00, $0e2e + kbitem $51, $00, $52, $0e, $004d + kbitem $53, $0e, $4e, $00, $0e54 + kbitem $4f, $00, $55, $0e, $0050 + kbitem $56, $0e, $51, $00, $0000 + kbitem $2a, $0e, $52, $00, $0e2b + kbitem $53, $00, $2c, $0e, $0054 + kbitem $2d, $0e, $55, $00, $0e2e + kbitem $56, $00, $4d, $0e, $0052 + kbitem $4e, $0e, $53, $00, $0e4f + kbitem $54, $00, $50, $0e, $0055 + kbitem $51, $0e, $56, $00, $0000 + +; get deck name from the user +; into de. +InputDeckName: ; 1ad89 (6:6d89) push af ld a, [de] or a @@ -1195,7 +1306,7 @@ Func_1ad89: ; 1ad89 (6:6d89) .asm_006_6d91 pop af inc a - call Func_006_6846 + call InitializeInputName call Set_OBJ_8x8 xor a ld [wTileMapFill], a @@ -1206,17 +1317,17 @@ Func_1ad89: ; 1ad89 (6:6d89) call LoadSymbolsFont lb de, $38, $bf call SetupText - call FillVramWithF0 + call FillVramWith0xF0 xor a ld [wd009], a call Func_006_6e99 xor a - ld [wd006], a - ld [wcea4], a + ld [wNamingScreenCursorX], a + ld [wNamingScreenCursorY], a ld a, $09 ld [wd005], a ld a, $07 - ld [wcea9], a + ld [wNamingScreenKeyboardHeight], a ld a, $0f ld [wceaa], a ld a, $00 @@ -1230,11 +1341,11 @@ Func_1ad89: ; 1ad89 (6:6d89) and START jr z, .on_start ld a, $01 - call Func_006_6794 + call PlaySFXByA call Func_006_6fa1 ld a, $06 - ld [wd006], a - ld [wcea4], a + ld [wNamingScreenCursorX], a + ld [wNamingScreenCursorY], a call Func_006_6fbd jr .asm_006_6dd6 .on_start @@ -1244,8 +1355,8 @@ Func_1ad89: ; 1ad89 (6:6d89) jr z, .asm_006_6e1c call Func_006_6ec3 jr nc, .asm_006_6dd6 - call Func_006_6880 - ld hl, wd000 + call FinalizeInputName + ld hl, wNamingScreenDestPointer ld a, [hli] ld h, [hl] ld l, a @@ -1274,7 +1385,7 @@ Func_1ad89: ; 1ad89 (6:6d89) ; fill v0Tiles0 for 0x10 tiles ; with 0xF0. -FillVramWithF0: +FillVramWith0xF0: ld hl, v0Tiles0 ld de, .data ld b, $00 @@ -1329,18 +1440,21 @@ endr Func_006_6e99: call DrawTextboxForKeyboard call Func_006_6e59 - ld hl, wd002 + ld hl, wNamingScreenQuestionPointer ld c, [hl] inc hl ld a, [hl] ld h, a or c - jr z, .asm_006_6ead + jr z, .print + ; print the question string. ld l, c call PlaceTextItems -.asm_006_6ead - ld hl, Func_006_6892.data +.print + ; print "End" + ld hl, DrawNamingScreenBG.data call PlaceTextItems + ; print the keyboard characters. ldtx hl, NamingScreenKeyboardText ; "A B C D..." ld de, $0204 call InitTextPrinting @@ -1349,9 +1463,9 @@ Func_006_6e99: ret Func_006_6ec3: - ld a, [wd006] + ld a, [wNamingScreenCursorX] ld h, a - ld a, [wcea4] + ld a, [wNamingScreenCursorY] ld l, a call Func_006_7000 inc hl @@ -1367,7 +1481,7 @@ Func_006_6ec3: ld a, [hl] ld c, a push hl - ld hl, wd004 + ld hl, wNamingScreenBufferMaxLength cp [hl] pop hl jr nz, .asm_006_6eeb @@ -1394,11 +1508,11 @@ Func_006_6efb: or a jp z, .asm_006_6f73 ld b, a - ld a, [wcea9] + ld a, [wNamingScreenKeyboardHeight] ld c, a - ld a, [wd006] + ld a, [wNamingScreenCursorX] ld h, a - ld a, [wcea4] + ld a, [wNamingScreenCursorY] ld l, a bit 6, b jr z, .asm_006_6f1f @@ -1454,9 +1568,9 @@ Func_006_6efb: pop de pop hl ld a, l - ld [wcea4], a + ld [wNamingScreenCursorY], a ld a, h - ld [wd006], a + ld [wNamingScreenCursorX], a xor a ld [wcea3], a ld a, $02 @@ -1472,7 +1586,7 @@ Func_006_6efb: jr nz, .asm_006_6f7f ld a, $ff .asm_006_6f7f - call Func_006_6794 + call PlaySFXByA push af call Func_006_6fbd pop af @@ -1497,9 +1611,9 @@ Func_006_6fa1: ld a, [wceab] .asm_006_6fa4 ld e, a - ld a, [wd006] + ld a, [wNamingScreenCursorX] ld h, a - ld a, [wcea4] + ld a, [wNamingScreenCursorY] ld l, a call Func_006_7000 ld a, [hli] @@ -1530,7 +1644,7 @@ Func_006_6fc2: jr z, .asm_006_6ffb ld a, [wNamingScreenBufferLength] ld d, a - ld a, [wd004] + ld a, [wNamingScreenBufferMaxLength] ld e, a ld a, d cp e @@ -1564,7 +1678,7 @@ Func_006_7000: push de ld e, l ld d, h - ld a, [wcea9] + ld a, [wNamingScreenKeyboardHeight] ld l, a call HtimesL ld a, l diff --git a/src/macros/data.asm b/src/macros/data.asm index 53926da..e059b28 100644 --- a/src/macros/data.asm +++ b/src/macros/data.asm @@ -89,3 +89,8 @@ textitem: MACRO db \1, \2 tx \3 ENDM + +kbitem: MACRO + db \1, \2, \3, \4 + dw \5 +ENDM \ No newline at end of file diff --git a/src/wram.asm b/src/wram.asm index c765831..3901be0 100644 --- a/src/wram.asm +++ b/src/wram.asm @@ -1386,13 +1386,13 @@ wcea1:: ; cea1 wcea3:: ; cea3 ds $1 -wcea4:: ; cea4 +wNamingScreenCursorY:: ; cea4 ds $1 wcea5:: ; cea5 ds $4 -wcea9:: ; cea9 +wNamingScreenKeyboardHeight:: ; cea9 ds $1 wceaa:: ; ceaa @@ -1478,19 +1478,21 @@ wNamingScreenBufferLength:: ; cfff ds $1 SECTION "WRAM1", WRAMX -wd000:: ; d000 +wNamingScreenDestPointer:: ; d000 ds $2 -wd002:: ; d002 +wNamingScreenQuestionPointer:: ; d002 ds $2 -wd004:: ; d004 +; max length of name buffer. +; it's given for limiting the player's input. +wNamingScreenBufferMaxLength:: ; d004 ds $1 wd005:: ; d005 ds $1 -wd006:: ; d006 +wNamingScreenCursorX:: ; d006 ds $1 wd007:: ; d007 -- cgit v1.2.3 From 363950dd33fdc8e0ebc47afda79ae9bd414e797c Mon Sep 17 00:00:00 2001 From: jidoc01 Date: Thu, 27 Jun 2019 23:13:29 +0900 Subject: [Bank 6] Fix error in labels. --- src/engine/bank02.asm | 22 +++++----------------- src/engine/bank06.asm | 23 ++++++++++++++--------- 2 files changed, 19 insertions(+), 26 deletions(-) (limited to 'src') diff --git a/src/engine/bank02.asm b/src/engine/bank02.asm index 9c92b52..c58895c 100644 --- a/src/engine/bank02.asm +++ b/src/engine/bank02.asm @@ -254,20 +254,20 @@ Func_8f05: ; 8f05 (2:4f05) ld a, [wceb1] or a jr nz, .asm_8f10 - ld hl, Unknown_a763 + ld hl, Deck1Data jr .asm_8f23 .asm_8f10 dec a jr nz, .asm_8f18 - ld hl, Unknown_a76c + ld hl, Deck2Data jr .asm_8f23 .asm_8f18 dec a jr nz, .asm_8f20 - ld hl, Unknown_a775 + ld hl, Deck3Data jr .asm_8f23 .asm_8f20 - ld hl, Unknown_a77e + ld hl, Deck4Data .asm_8f23 ld a, $14 ld bc, $0401 @@ -789,19 +789,7 @@ Func_9e41: ; 9e41 (2:5e41) INCROM $9e41, $a288 Func_a288: ; a288 (2:6288) - INCROM $a288, $a763 - -Unknown_a763: ; a763 (2:6763) - INCROM $a763, $a76c - -Unknown_a76c: ; a76c (2:676c) - INCROM $a76c, $a775 - -Unknown_a775: ; a775 (2:6775) - INCROM $a775, $a77e - -Unknown_a77e: ; a77e (2:677e) - INCROM $a77e, $b177 + INCROM $a288, $b177 Func_b177: ; b177 (2:7177) INCROM $b177, $b19d diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm index 05dff85..74f8140 100644 --- a/src/engine/bank06.asm +++ b/src/engine/bank06.asm @@ -446,22 +446,26 @@ Func_006_673a: ; (6:673a) pop hl ret -WhatIsYourNameData: ; data +WhatIsYourNameData: ; (6:675e) textitem 1, 1, WhatIsYourNameText db $ff - +; [Deck1Data ~ Deck4Data] +; These are directed from (2:4f05), +; without any bank description. +; That is, the developers hard-coded it. -_-;; +Deck1Data: ; (6:6763) textitem 2, 1, Text022b textitem 14, 1, Text0219 db $ff - +Deck2Data: ; (6:676c) textitem 2, 1, Text022c textitem 14, 1, Text0219 db $ff - +Deck3Data: ; (6:6775) textitem 2, 1, Text022d textitem 14, 1, Text0219 db $ff - +Deck4Data: ; (6:677e) textitem 2, 1, Text022e textitem 14, 1, Text0219 db $ff @@ -1210,7 +1214,7 @@ GetCharacterInfoFromCursorPos: ; a set of keyboard datum. ; unit: 6 bytes. ; structure: -; unk 1 (1) / unk 2 (1) / type 1 (1) / type 2 (1) / character code(2) +; unk 1 (1) / unk 2 (1) / type 1 (1) / type 2 (1) / character (2) ; - some of one byte characters have 0x0e in their high byte. ; - unused data contains its character code as zero. KeyboardData: ; (6:6baf) @@ -1696,10 +1700,11 @@ Func_006_7000: ret ; a bunch of data -Unknown_006_7019: - INCROM $1b019, $1ba12 +Unknown_006_7019: ; (6:7019) + INCROM $1b019, $1b8e8 + INCROM $1b8e8, $1ba12 -Func_006_7a12: ; 1ba12 +Func_006_7a12: ; (6:7a12) push af ld [bc], a call EnableSRAM -- cgit v1.2.3 From 8e3a765cf57229d1f3ba1f303ebfaabfd82e24cf Mon Sep 17 00:00:00 2001 From: jidoc01 Date: Fri, 28 Jun 2019 16:03:54 +0900 Subject: [Bank 6] Disassemble more. --- src/engine/bank01.asm | 2 +- src/engine/bank06.asm | 1084 ++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 1064 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/engine/bank01.asm b/src/engine/bank01.asm index 2df1e9d..fb96bd0 100644 --- a/src/engine/bank01.asm +++ b/src/engine/bank01.asm @@ -7749,7 +7749,7 @@ Func_7494: ; 7494 (1:7494) ld a, $02 ld [wLoadedMoveAnimation], a .asm_74d1 - farcall $6, $4f9c + farcall Func_006_49fc pop bc pop de pop hl diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm index 74f8140..7a89465 100644 --- a/src/engine/bank06.asm +++ b/src/engine/bank06.asm @@ -148,11 +148,1051 @@ Func_18086: ; 18086 (6:4086) ; 0x180d5 Func_180d5: ; 180d5 (6:40d5) - INCROM $180d5, $186f7 + ld a, $05 + ld [$ce52], a +.asm_006_40da + xor a + ld [wcea3], a + rst $28 + ld [bc], a + adc $42 + call EnableLCD + call IsClairvoyanceActive + jr c, .asm_006_40ef + ld de, $42db + jr .asm_006_40f2 +.asm_006_40ef + ld de, $434b +.asm_006_40f2 + ld hl, $ce53 + ld [hl], e + inc hl + ld [hl], d + ld a, [$ce52] + call .asm_006_4171 +.asm_006_40fe + ld a, $01 + ld [wVBlankOAMCopyToggle], a + call DoFrame + ldh a, [hDPadHeld] + and $08 + jr nz, .asm_006_4153 + ld a, [wce60] + or a + jr z, .asm_006_4118 + ldh a, [hDPadHeld] + and $04 + jr nz, .asm_006_4148 +.asm_006_4118 + ld a, [$ce52] + ld [$ce58], a + call Func_006_43bb + jr c, .asm_006_4139 + ld a, [$ce52] + cp $10 + jp z, .asm_006_41f8 + cp $11 + jp z, .asm_006_4210 + ld hl, $ce58 + cp [hl] + call nz, .asm_006_4171 + jr .asm_006_40fe +.asm_006_4139 + cp $ff + jr nz, .asm_006_4153 + call Func_006_44bf + ld de, $389f + call SetupText + scf + ret +.asm_006_4148 + call Func_006_44bf + ld de, $389f + call SetupText + or a + ret +.asm_006_4153 + call Func_006_44bf + ld de, $389f + call SetupText + ld a, [$ce52] + ld [$ce57], a + ld hl, .jump_table + call JumpToFunctionInTable + ld a, [$ce57] + ld [$ce52], a + jp .asm_006_40da +.asm_006_4171 ; 18171 (6:4171) + push af + ld de, $0111 + call InitTextPrinting + ldtx hl, Text0251 + call ProcessTextFromID + ld hl, hffb0 + ld [hl], $01 + ldtx hl, Text024e + call ProcessTextFromID + ld hl, hffb0 + ld [hl], $00 + ld de, $0111 + call InitTextPrinting + pop af + ld hl, Data_006_42bb + ld b, $00 + sla a + ld c, a + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, h + or a + jr nz, .asm_006_41e3 + ld a, l + cp $06 + jr nc, .asm_006_41e3 + ld a, [$ce52] + cp $06 + jr nc, .asm_006_41c2 + ld a, l + add $bb + call GetTurnDuelistVariable + cp $ff + ret z + call GetCardIDFromDeckIndex + call LoadCardDataToBuffer1_FromCardID + jr .asm_006_41d7 +.asm_006_41c2 + ld a, l + add $bb + call GetNonTurnDuelistVariable + cp $ff + ret z + call SwapTurn + call GetCardIDFromDeckIndex + call LoadCardDataToBuffer1_FromCardID + call SwapTurn +.asm_006_41d7 + ld a, $12 + call CopyCardNameAndLevel + ld hl, wDefaultText + call ProcessText + ret +.asm_006_41e3 + ld a, [$ce52] + cp $08 + jr nc, .asm_006_41ee + call PrintTextNoDelay + ret +.asm_006_41ee + call SwapTurn + call PrintTextNoDelay + call SwapTurn + ret +.asm_006_41f8 + ld de, $389f + call SetupText + ldh a, [hWhoseTurn] + push af + rst $18 + inc sp + ld b, e + pop af + ldh [hWhoseTurn], a + ld a, [$ce57] + ld [$ce52], a + jp .asm_006_40da +.asm_006_4210 + ld de, $389f + call SetupText + ldh a, [hWhoseTurn] + push af + rst $18 + add hl, hl + ld b, e + pop af + ldh [hWhoseTurn], a + ld a, [$ce57] + ld [$ce52], a + jp .asm_006_40da + +.jump_table ; (6:4228) + dw Func_006_4248 + dw Func_006_4248 + dw Func_006_4248 + dw Func_006_4248 + dw Func_006_4248 + dw Func_006_4248 + dw Func_006_4293 + dw Func_006_42a7 + dw Func_006_426a + dw Func_006_429d + dw Func_006_42b1 + dw Func_006_426a + dw Func_006_426a + dw Func_006_426a + dw Func_006_426a + dw Func_006_426a + +Func_006_4248: + ld a, [$ce52] + inc a + cp $06 + jr nz, .asm_006_4251 + xor a +.asm_006_4251 + ld [wHUDEnergyAndHPBarsX], a + add $bb + call GetTurnDuelistVariable + cp $ff + ret z + call GetCardIDFromDeckIndex + call LoadCardDataToBuffer1_FromCardID + xor a + ld [wHUDEnergyAndHPBarsY], a + rst $18 + ld l, d + ld d, a + ret + +Func_006_426a: + ld a, [$ce52] + sub $08 + or a + jr z, .asm_006_4274 + sub $02 +.asm_006_4274 + ld [wHUDEnergyAndHPBarsX], a + add $bb + call GetNonTurnDuelistVariable + cp $ff + ret z + call SwapTurn + call GetCardIDFromDeckIndex + call LoadCardDataToBuffer1_FromCardID + xor a + ld [wHUDEnergyAndHPBarsY], a + rst $18 + ld l, d + ld d, a + call SwapTurn + ret +Func_006_4293: + ldh a, [hWhoseTurn] + push af + rst $18 + ld c, [hl] + ld b, e + pop af + ldh [hWhoseTurn], a + ret + +Func_006_429d: + ldh a, [hWhoseTurn] + push af + rst $18 + ld b, l + ld b, e + pop af + ldh [hWhoseTurn], a + ret + +Func_006_42a7: + ldh a, [hWhoseTurn] + push af + rst $18 + ld b, d + ld b, e + pop af + ldh [hWhoseTurn], a + ret + +Func_006_42b1: + ldh a, [hWhoseTurn] + push af + rst $18 + add hl, sp + ld b, e + pop af + ldh [hWhoseTurn], a + ret + +Data_006_42bb: + INCROM $182bb, $183bb + +Func_006_43bb: ; 183bb (6:43bb) + xor a + ld [wcfe3], a + ld hl, $ce53 +.asm_006_43c2 + ld e, [hl] + inc hl + ld d, [hl] + ld a, [$ce52] + ld l, a +.asm_006_43c9 + ld h, $07 + call HtimesL + add hl, de + ldh a, [hDPadHeld] + or a + jp z, .asm_006_446b + inc hl + inc hl + inc hl + bit 6, a + jr z, .asm_006_43df +.asm_006_43dc + ld a, [hl] + jr .asm_006_43f5 +.asm_006_43df + inc hl + bit 7, a + jr z, .asm_006_43e7 + ld a, [hl] + jr .asm_006_43f5 +.asm_006_43e7 + inc hl + bit 4, a + jr z, .asm_006_43ef + ld a, [hl] + jr .asm_006_43f5 +.asm_006_43ef + inc hl + bit 5, a + jr z, .asm_006_446b + ld a, [hl] +.asm_006_43f5 + push af + ld a, [$ce52] + ld [$ce57], a + pop af + ld [$ce52], a + cp $05 + jr c, .asm_006_440e + cp $0b + jr c, .asm_006_4462 + cp $10 + jr c, .asm_006_4437 + jr .asm_006_4462 +.asm_006_440e + ld a, $ef + call GetTurnDuelistVariable + dec a + jr nz, .asm_006_441d + ld a, $10 + ld [$ce52], a + jr .asm_006_4462 +.asm_006_441d + ld b, a + ld a, [$ce52] + cp b + jr c, .asm_006_4462 + ldh a, [hDPadHeld] + bit 4, a + jr z, .asm_006_4430 + xor a + ld [$ce52], a + jr .asm_006_4462 +.asm_006_4430: + ld a, b + dec a + ld [$ce52], a + jr .asm_006_4462 +.asm_006_4437: + ld a, $ef + call GetNonTurnDuelistVariable + dec a + jr nz, .asm_006_4446 + ld a, $11 + ld [$ce52], a + jr .asm_006_4462 +.asm_006_4446 + ld b, a + ld a, [$ce52] + sub $0b + cp b + jr c, .asm_006_4462 + ldh a, [hDPadHeld] + bit 5, a + jr z, .asm_006_445c + ld a, $0b + ld [$ce52], a + jr .asm_006_4462 +.asm_006_445c + ld a, b + add $0a + ld [$ce52], a +.asm_006_4462 + ld a, $01 + ld [wcfe3], a + xor a + ld [wcea3], a +.asm_006_446b + ldh a, [hKeysPressed] + and $03 + jr z, .asm_006_448b + and $01 + jr nz, .asm_006_447d + ld a, $ff + rst $28 + ld [bc], a + ei + ld d, b + scf + ret +.asm_006_447d + call Func_006_44a0 + ld a, $01 + rst $28 + ld [bc], a + ei + ld d, b + ld a, [$ce52] + scf + ret +.asm_006_448b + ld a, [wcfe3] + or a + jr z, .asm_006_4494 + call PlaySFX +.asm_006_4494 + ld hl, wcea3 + ld a, [hl] + inc [hl] + and $0f + ret nz + bit 4, [hl] + jr nz, Func_006_44bf + +Func_006_44a0: ; 184a0 (6:44a0) + call ZeroObjectPositions + ld hl, $ce53 + ld e, [hl] + inc hl + ld d, [hl] + ld a, [$ce52] + ld l, a + ld h, $07 + call HtimesL + add hl, de + ld d, [hl] + inc hl + ld e, [hl] + inc hl + ld b, [hl] + ld c, $00 + call SetOneObjectAttributes + or a + ret + +Func_006_44bf: ; 184bf (6:44bf) + call ZeroObjectPositions + ld a, $01 + ld [wVBlankOAMCopyToggle], a + ret + + xor a + ld [$ce62], a + call Func_006_452b + xor a + ld [$ce52], a + ld de, $4c8e + ld hl, $ce53 + ld [hl], e + inc hl + ld [hl], d + ld a, $ff + ld [$ce55], a + xor a + ld [wcea3], a + +.asm_006_44e5 + ld a, $01 + ld [wVBlankOAMCopyToggle], a + call DoFrame + ldh a, [hKeysPressed] + and $04 + jr nz, .asm_006_4518 + rst $28 + ld [bc], a + xor [hl] + ld c, c + jr nc, .asm_006_44e5 + cp $ff + jr nz, .asm_006_4502 + rst $28 + ld [bc], a + and c + ld c, d + ret +.asm_006_4502 + push af + rst $28 + ld [bc], a + and c + ld c, d + pop af + cp $09 + jr z, .asm_006_451e + call Func_006_4598 + call Func_006_452b + xor a + ld [wcea3], a + jr .asm_006_44e5 +.asm_006_4518 + ld a, $01 + rst $28 + ld [bc], a + ei + ld d, b +.asm_006_451e + ld a, [$ce62] + xor $01 + ld [$ce62], a + call Func_006_455a + jr .asm_006_44e5 + +Func_006_452b: ; 1852b (6:452b) + xor a + ld [wTileMapFill], a + call ZeroObjectPositions + ld a, $01 + ld [wVBlankOAMCopyToggle], a + call DoFrame + call EmptyScreen + call Set_OBJ_8x8 + rst $28 + ld [bc], a + sub d + ld c, c + ld de, $0500 + call InitTextPrinting + ld hl, $02f6 + call ProcessTextFromID + call Func_006_455a + ld hl, $02f9 + call DrawWideTextBox_PrintText + ret + +Func_006_455a: ; 1855a (6:455a) + ld hl, wDefaultText + ld a, $05 + ld [hli], a + ld a, [$ce62] + add $21 + ld [hli], a + ld a, $05 + ld [hli], a + ld a, $2e + ld [hli], a + ld a, $05 + ld [hli], a + ld a, $22 + ld [hli], a + ld [hl], $00 + ld de, $1001 + call InitTextPrinting + ld hl, wDefaultText + call ProcessText + ld de, $0103 + call InitTextPrinting + ld a, [$ce62] + or a + jr nz, .asm_006_4591 + ld hl, $02f7 + jr .asm_006_4594 +.asm_006_4591 + ldtx hl, Text02f8 +.asm_006_4594 + call ProcessTextFromID + ret + +Func_006_4598: ; 18598 (6:4598) + push af + xor a + ld [wTileMapFill], a + call EmptyScreen + ld de, $0500 + call InitTextPrinting + ldtx hl, Text02f6 + call ProcessTextFromID + ld de, $0004 + ld bc, $140e + call DrawRegularTextBox + ld a, [$ce62] + or a + jr nz, .asm_006_45c0 + ld hl, Data_006_4607 + jr .asm_006_45c3 +.asm_006_45c0 + ld hl, Data_006_4634 +.asm_006_45c3 + pop af + ld c, a + ld b, $00 + add hl, bc + sla a + sla a + ld c, a + add hl, bc + ld a, [hli] + push hl + ld d, a + ld e, $02 + call InitTextPrinting + ld a, [hli] + ld h, [hl] + ld l, a + call ProcessTextFromID + pop hl + ld de, $0105 + call InitTextPrinting + inc hl + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + ld a, $01 + ld [wLineSeparation], a + call ProcessTextFromID + xor a + ld [wLineSeparation], a + call EnableLCD +.asm_006_45f7 + call DoFrame + ldh a, [hKeysPressed] + and $02 + jr z, .asm_006_45f7 + ld a, $ff + rst $28 + ld [bc], a + ei + ld d, b + ret + +Data_006_4607: + INCROM $18607, $18634 + +Data_006_4634: + INCROM $18634, $18661 + +; (6:4661) + xor a + ld [wcfe3], a + ld a, [wceaf] + ld d, a + ld a, [wceb0] + ld e, a + ldh a, [hDPadHeld] + or a + jr z, .asm_006_46a2 + bit 5, a + jr nz, .asm_006_467a + bit 4, a + jr z, .asm_006_4680 +.asm_006_467a + ld a, d + xor $01 + ld d, a + jr .asm_006_468c +.asm_006_4680 + bit 6, a + jr nz, .asm_006_4688 + bit 7, a + jr z, .asm_006_46a2 +.asm_006_4688 + ld a, e + xor $01 + ld e, a +.asm_006_468c + ld a, $01 + ld [wcfe3], a + push de + call .asm_006_46d4 + pop de + ld a, d + ld [wceaf], a + ld a, e + ld [wceb0], a + xor a + ld [wcea3], a +.asm_006_46a2 + ldh a, [hKeysPressed] + and $03 + jr z, .asm_006_46bd + and $01 + jr nz, .asm_006_46b3 + ld a, $ff + call Func_006_50fb + scf + ret +.asm_006_46b3 + call .asm_006_46f3 + ld a, $01 + call Func_006_50fb + scf + ret +.asm_006_46bd + ld a, [wcfe3] + or a + jr z, .asm_006_46c6 + call PlaySFX +.asm_006_46c6 + ld hl, wcea3 + ld a, [hl] + inc [hl] + and $0f + ret nz + ld a, $0f + bit 4, [hl] + jr z, .asm_006_46d6 +.asm_006_46d4 ; 186d4 (6:46d4) + ld a, $00 +.asm_006_46d6 + ld e, a + ld a, $0a + ld l, a + ld a, [wceaf] + ld h, a + call HtimesL + ld a, l + add $01 + ld b, a + ld a, [wceb0] + sla a + add $0e + ld c, a + ld a, e + call WriteByteToBGMap0 + or a + ret +.asm_006_46f3: ; 186f3 (6:46f3) + ld a, $0f + jr .asm_006_46d6 + +; (6:46f7) INCLUDE "data/effect_commands.asm" - INCROM $18f9c, $1996e +Func_006_49fc: ; 18f9c (6:4f9c) + ld a, [wLoadedMoveAnimation] + or a + ret z + ld l, a + ld h, $00 + add hl, hl + ld de, $51a4 +.asm_006_4fa8 + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + push de + ld hl, wce7e + ld a, [hl] + or a + jr nz, .asm_006_4fd3 + ld [hl], $01 + call Func_3b21 + pop de + push de + ld a, $00 + ld [wd4ae], a + ld a, $01 + ld [$d4b3], a + xor a + ld [wd4b0], a + ld a, [de] + cp $04 + jr z, .asm_006_4fd3 + ld a, $96 + call Func_3b6a +.asm_006_4fd3 + pop de +.asm_006_4fd4 + ld a, [de] + inc de + ld hl, PointerTable_006_508f + jp JumpToFunctionInTable + +Func_006_4fdc: + ret + +Func_006_4fdd: + ldh a, [hWhoseTurn] + ld [wd4af], a + ld a, [wDuelType] + cp $00 + jr nz, Func_006_5014 + ld a, $c2 + ld [wd4af], a + jr Func_006_5014 + +Func_006_4ff0: + call SwapTurn + ldh a, [hWhoseTurn] + ld [wd4af], a + call SwapTurn + ld a, [wDuelType] + cp $00 + jr nz, Func_006_5014 + ld a, $c3 + ld [wd4af], a + jr Func_006_5014 + +Func_006_5009: + ld a, [wce82] + and $7f + ld [wd4b0], a + jr Func_006_5014 + +Func_006_5013: + ret + +Func_006_5014: + ld a, [de] + inc de + cp $09 + jr z, .asm_006_502b + cp $fa + jr z, .asm_006_5057 + cp $fb + jr z, .asm_006_505d + cp $fc + jr z, .asm_006_5063 +.asm_006_5026 + call Func_3b6a + jr Func_006_49fc.asm_006_4fd4 +.asm_006_502b + ld a, $97 + call Func_3b6a + ld a, [wce81] + ld [$d4b3], a + push de + ld hl, wce7f + ld de, $d4b1 + ld a, [hli] + ld [de], a + inc de + ld a, [hli] + ld [de], a + pop de + ld a, $8c + call Func_3b6a + ld a, [wDuelDisplayedScreen] + cp $01 + jr nz, .asm_006_5054 + ld a, $98 + call Func_3b6a +.asm_006_5054 + jp Func_006_49fc.asm_006_4fd4 +.asm_006_5057 + ld c, $61 + ld b, $63 + jr .asm_006_5067 +.asm_006_505d + ld c, $62 + ld b, $64 + jr .asm_006_5067 +.asm_006_5063 + ld c, $63 + ld b, $61 +.asm_006_5067 + ldh a, [hWhoseTurn] + cp $c2 + ld a, c + jr z, .asm_006_5026 + ld a, [wDuelType] + cp $00 + ld a, c + jr z, .asm_006_5026 + ld a, b + jr .asm_006_5026 + +Func_006_5079: + ld a, [de] + inc de + ld [$d4b3], a + ld a, [wce82] + ld [wd4b0], a + call Func_006_509d + ld a, $96 + call Func_3b6a + jp Func_006_49fc.asm_006_4fd4 + +PointerTable_006_508f: ; (6:508f) + dw Func_006_4fdc + dw Func_006_5014 + dw Func_006_4fdd + dw Func_006_4ff0 + dw Func_006_5079 + dw Func_006_5009 + dw Func_006_5013 + +Func_006_509d: ; 1909d (6:509d) + ld a, [$d4b3] + cp $04 + jr z, .asm_006_50ad + cp $01 + ret nz + ld a, $00 + ld [wd4ae], a + ret +.asm_006_50ad + ld a, [wd4b0] + ld l, a + ld a, [wWhoseTurn] + ld h, a + cp $c2 + jr z, .asm_006_50cc + ld a, [wDuelType] + cp $00 + jr z, .asm_006_50c6 + bit 7, l + jr z, .asm_006_50e2 + jr .asm_006_50d2 +.asm_006_50c6 + bit 7, l + jr z, .asm_006_50da + jr .asm_006_50ea +.asm_006_50cc + bit 7, l + jr z, .asm_006_50d2 + jr .asm_006_50e2 +.asm_006_50d2 + ld l, $04 + ld h, $c2 + ld a, $01 + jr .asm_006_50f0 +.asm_006_50da + ld l, $04 + ld h, $c3 + ld a, $01 + jr .asm_006_50f0 +.asm_006_50e2 + ld l, $05 + ld h, $c3 + ld a, $02 + jr .asm_006_50f0 +.asm_006_50ea + ld l, $05 + ld h, $c2 + ld a, $02 +.asm_006_50f0: + ld [wd4ae], a + ret + +; this part is not perfectly analyzed. +; needs some fix. + ld a, [$d4b3] + cp $04 + jr z, Func_006_50fb.asm_006_510f +Func_006_50fb: ; 190fb (6:50fb) + cp $01 + jr nz, .asm_006_510e + ld a, $00 + ld [wd4ae], a + ld a, [wDuelDisplayedScreen] + cp $01 + jr z, .asm_006_510e + rst $18 + sbc l + ld c, a +.asm_006_510e + ret +.asm_006_510f + call Func_006_509d + ld a, [wDuelDisplayedScreen] + cp l + jr z, .asm_006_512e + ld a, l + push af + ld l, $c2 + ld a, [wDuelType] + cp $00 + jr nz, .asm_006_5127 + ld a, [wWhoseTurn] + ld l, a +.asm_006_5127 + call $30bc + pop af + ld [wDuelDisplayedScreen], a +.asm_006_512e + call DrawWideTextBox + ret + +; needs analyze. + push hl + push bc + push de + ld a, [wLoadedMoveAnimation] + cp $79 + jr z, .asm_006_5164 + cp $86 + jr z, .asm_006_5164 + ld a, [wTempNonTurnDuelistCardID] + ld e, a + ld d, $00 + call LoadCardDataToBuffer1_FromCardID + ld a, $12 + call CopyCardNameAndLevel + ld [hl], $00 + ld hl, wTxRam2 + xor a + ld [hli], a + ld [hl], a + ld hl, wce7f + ld a, [hli] + ld h, [hl] + ld l, a + call Func_006_5168 + ld a, l + or h + call nz, DrawWideTextBox_PrintText +.asm_006_5164 + pop de + pop bc + pop hl + ret + +Func_006_5168: ; 19168 (6:5168) + ld a, l + or h + jr z, .asm_006_5188 + call LoadTxRam3 + ld a, [wce81] + ld hl, $003a + and $06 + ret z + ld hl, $0038 + cp $06 + ret z + and $02 + ld hl, $0037 + ret nz + ld hl, $0036 + ret +.asm_006_5188 + call CheckNoDamageOrEffect + ret c + ld hl, $003b + ld a, [wce81] + and $04 + ret z + ld hl, $0039 + ret + +; needs analyze. + ld a, [wDuelDisplayedScreen] + cp $01 + ret nz + rst $18 + ld a, [hld] + ld d, b + ret + + INCROM $191a3, $1996e Func_1996e: ; 1996e (6:596e) call EnableSRAM @@ -450,7 +1490,7 @@ WhatIsYourNameData: ; (6:675e) textitem 1, 1, WhatIsYourNameText db $ff ; [Deck1Data ~ Deck4Data] -; These are directed from (2:4f05), +; These are directed from around (2:4f05), ; without any bank description. ; That is, the developers hard-coded it. -_-;; Deck1Data: ; (6:6763) @@ -470,7 +1510,7 @@ Deck4Data: ; (6:677e) textitem 14, 1, Text0219 db $ff -; set each byte zero from hl for b bytes +; set each byte zero from hl for b bytes. ClearMemory: ; (6:6787) push af push bc @@ -487,15 +1527,17 @@ ClearMemory: ; (6:6787) ret ; play different sfx by a. +; if a is 0xff play sfx with 0x03, +; else with 0x02. PlaySFXByA: ; (6:6794) push af inc a - jr z, .asm_006_679c + jr z, .on_three ld a, $02 - jr .asm_006_679e -.asm_006_679c + jr .on_two +.on_three ld a, $03 -.asm_006_679e +.on_two call PlaySFX pop af ret @@ -565,10 +1607,10 @@ InputPlayerName: ; (6:67a3) call FinalizeInputName ret .on_b_button - ; erase one character. ld a, [wNamingScreenBufferLength] or a - jr z, .loop + jr z, .loop ; empty string? + ; erase one character. ld e, a ld d, $00 ld hl, wNamingScreenBuffer @@ -576,14 +1618,14 @@ InputPlayerName: ; (6:67a3) dec hl dec hl ld [hl], $00 - ld hl, wNamingScreenBufferLength + ld hl, wNamingScreenBufferLength ; note that its unit is byte, not word. dec [hl] dec [hl] call PrintPlayerNameFromInput jr .loop ; it's called when naming(either player's or deck's) starts. -; a: maximum length of name. +; a: maximum length of name(depending on whether player's or deck's). ; de: dest. pointer. ; hl: pointer to text item of the question. InitializeInputName: @@ -1214,7 +2256,7 @@ GetCharacterInfoFromCursorPos: ; a set of keyboard datum. ; unit: 6 bytes. ; structure: -; unk 1 (1) / unk 2 (1) / type 1 (1) / type 2 (1) / character (2) +; abs. y pos. (1) / abs. x pos. (1) / type 1 (1) / type 2 (1) / char. code (2) ; - some of one byte characters have 0x0e in their high byte. ; - unused data contains its character code as zero. KeyboardData: ; (6:6baf) @@ -1384,7 +2426,7 @@ InputDeckName: ; 1ad89 (6:6d89) ld [hl], $00 ld hl, wNamingScreenBufferLength dec [hl] - call Func_006_6e59 + call ProcessTextWithUnderbar jp .asm_006_6dd6 ; fill v0Tiles0 for 0x10 tiles @@ -1407,13 +2449,13 @@ rept $10 db $f0 endr -Func_006_6e59: +ProcessTextWithUnderbar: ld hl, wd007 ld d, [hl] inc hl ld e, [hl] call InitTextPrinting - ld hl, .data + ld hl, .underbar_data ld de, wDefaultText .asm_006_6e68 ld a, [hli] @@ -1434,16 +2476,16 @@ Func_006_6e59: ld hl, wDefaultText call ProcessText ret -.data +.underbar_data db $06 rept $14 - db $5f + db "_" endr db $00 Func_006_6e99: call DrawTextboxForKeyboard - call Func_006_6e59 + call ProcessTextWithUnderbar ld hl, wNamingScreenQuestionPointer ld c, [hl] inc hl @@ -1501,7 +2543,7 @@ Func_006_6ec3: ld [hl], d inc hl ld [hl], $00 - call Func_006_6e59 + call ProcessTextWithUnderbar or a ret @@ -1811,7 +2853,7 @@ Func_006_7a7d: inc hl ret -; pointed from 0xb87e: [06|9A|7A] +; farcall from 0xb87e(2:787d): [EF|06|9A|7A] Func_006_7a9a: ; (6:7a9a) xor a ld [wd0a6], a -- cgit v1.2.3 From b4f2f4389fbfb47b13eaf8271ef4d8b9f8ed8ae9 Mon Sep 17 00:00:00 2001 From: jidoc01 Date: Fri, 28 Jun 2019 16:28:36 +0900 Subject: [Bank 6] Convert into bank1call, farcall. --- src/engine/bank06.asm | 84 ++++++++++++--------------------------------------- 1 file changed, 19 insertions(+), 65 deletions(-) (limited to 'src') diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm index 7a89465..7c4daf5 100644 --- a/src/engine/bank06.asm +++ b/src/engine/bank06.asm @@ -153,9 +153,7 @@ Func_180d5: ; 180d5 (6:40d5) .asm_006_40da xor a ld [wcea3], a - rst $28 - ld [bc], a - adc $42 + farcall $2, $42ce call EnableLCD call IsClairvoyanceActive jr c, .asm_006_40ef @@ -294,9 +292,7 @@ Func_180d5: ; 180d5 (6:40d5) call SetupText ldh a, [hWhoseTurn] push af - rst $18 - inc sp - ld b, e + bank1call OpenPlayAreaScreen pop af ldh [hWhoseTurn], a ld a, [$ce57] @@ -307,9 +303,7 @@ Func_180d5: ; 180d5 (6:40d5) call SetupText ldh a, [hWhoseTurn] push af - rst $18 - add hl, hl - ld b, e + bank1call OpenOpponentPlayAreaScreen pop af ldh [hWhoseTurn], a ld a, [$ce57] @@ -350,9 +344,7 @@ Func_006_4248: call LoadCardDataToBuffer1_FromCardID xor a ld [wHUDEnergyAndHPBarsY], a - rst $18 - ld l, d - ld d, a + bank1call OpenCardPage_FromCheckPlayArea ret Func_006_426a: @@ -372,18 +364,14 @@ Func_006_426a: call LoadCardDataToBuffer1_FromCardID xor a ld [wHUDEnergyAndHPBarsY], a - rst $18 - ld l, d - ld d, a + bank1call OpenCardPage_FromCheckPlayArea call SwapTurn ret Func_006_4293: ldh a, [hWhoseTurn] push af - rst $18 - ld c, [hl] - ld b, e + bank1call Func_434e pop af ldh [hWhoseTurn], a ret @@ -391,9 +379,7 @@ Func_006_4293: Func_006_429d: ldh a, [hWhoseTurn] push af - rst $18 - ld b, l - ld b, e + bank1call Func_4345 pop af ldh [hWhoseTurn], a ret @@ -401,9 +387,7 @@ Func_006_429d: Func_006_42a7: ldh a, [hWhoseTurn] push af - rst $18 - ld b, d - ld b, e + bank1call OpenPlayerDiscardPileScreen pop af ldh [hWhoseTurn], a ret @@ -411,9 +395,7 @@ Func_006_42a7: Func_006_42b1: ldh a, [hWhoseTurn] push af - rst $18 - add hl, sp - ld b, e + bank1call OpenOpponentDiscardPileScreen pop af ldh [hWhoseTurn], a ret @@ -536,19 +518,13 @@ Func_006_43bb: ; 183bb (6:43bb) and $01 jr nz, .asm_006_447d ld a, $ff - rst $28 - ld [bc], a - ei - ld d, b + farcall Func_90fb scf ret .asm_006_447d call Func_006_44a0 ld a, $01 - rst $28 - ld [bc], a - ei - ld d, b + farcall Func_90fb ld a, [$ce52] scf ret @@ -615,24 +591,15 @@ Func_006_44bf: ; 184bf (6:44bf) ldh a, [hKeysPressed] and $04 jr nz, .asm_006_4518 - rst $28 - ld [bc], a - xor [hl] - ld c, c + farcall $2, $49ae jr nc, .asm_006_44e5 cp $ff jr nz, .asm_006_4502 - rst $28 - ld [bc], a - and c - ld c, d + farcall $2, $4aa1 ret .asm_006_4502 push af - rst $28 - ld [bc], a - and c - ld c, d + farcall $2, $4aa1 pop af cp $09 jr z, .asm_006_451e @@ -643,10 +610,7 @@ Func_006_44bf: ; 184bf (6:44bf) jr .asm_006_44e5 .asm_006_4518 ld a, $01 - rst $28 - ld [bc], a - ei - ld d, b + farcall Func_90fb .asm_006_451e ld a, [$ce62] xor $01 @@ -663,10 +627,7 @@ Func_006_452b: ; 1852b (6:452b) call DoFrame call EmptyScreen call Set_OBJ_8x8 - rst $28 - ld [bc], a - sub d - ld c, c + farcall $2, $4992 ld de, $0500 call InitTextPrinting ld hl, $02f6 @@ -766,10 +727,7 @@ Func_006_4598: ; 18598 (6:4598) and $02 jr z, .asm_006_45f7 ld a, $ff - rst $28 - ld [bc], a - ei - ld d, b + farcall Func_90fb ret Data_006_4607: @@ -1096,9 +1054,7 @@ Func_006_50fb: ; 190fb (6:50fb) ld a, [wDuelDisplayedScreen] cp $01 jr z, .asm_006_510e - rst $18 - sbc l - ld c, a + bank1call DrawDuelMainScene .asm_006_510e ret .asm_006_510f @@ -1187,9 +1143,7 @@ Func_006_5168: ; 19168 (6:5168) ld a, [wDuelDisplayedScreen] cp $01 ret nz - rst $18 - ld a, [hld] - ld d, b + bank1call DrawDuelHUDs ret INCROM $191a3, $1996e -- cgit v1.2.3 From 511a7094eeb9ad799dc5e653ac29e0f6d2b4f937 Mon Sep 17 00:00:00 2001 From: jidoc01 Date: Fri, 28 Jun 2019 16:58:59 +0900 Subject: [Bank 6] Analyze glossary data. --- src/engine/bank01.asm | 2 +- src/engine/bank06.asm | 90 ++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 75 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/engine/bank01.asm b/src/engine/bank01.asm index fb96bd0..46337fb 100644 --- a/src/engine/bank01.asm +++ b/src/engine/bank01.asm @@ -7749,7 +7749,7 @@ Func_7494: ; 7494 (1:7494) ld a, $02 ld [wLoadedMoveAnimation], a .asm_74d1 - farcall Func_006_49fc + farcall Func_006_4f9c pop bc pop de pop hl diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm index 7c4daf5..68a42e5 100644 --- a/src/engine/bank06.asm +++ b/src/engine/bank06.asm @@ -684,13 +684,16 @@ Func_006_4598: ; 18598 (6:4598) call DrawRegularTextBox ld a, [$ce62] or a - jr nz, .asm_006_45c0 - ld hl, Data_006_4607 - jr .asm_006_45c3 -.asm_006_45c0 - ld hl, Data_006_4634 -.asm_006_45c3 + jr nz, .back_page + ld hl, GlossaryData1 + jr .front_page +.back_page + ld hl, GlossaryData2 +.front_page pop af + ; hl += (a + (a << 2)). + ; that is, + ; hl += (5 * a). ld c, a ld b, $00 add hl, bc @@ -730,11 +733,66 @@ Func_006_4598: ; 18598 (6:4598) farcall Func_90fb ret -Data_006_4607: - INCROM $18607, $18634 - -Data_006_4634: - INCROM $18634, $18661 +; unit: 5 bytes. +; [structure] +; horizonal align (1) / text id 1 (2) / text id 2 (2) +GlossaryData1: + db 7 + tx Text02fa + tx Text030c + db 5 + tx Text02fb + tx Text030d + db 7 + tx Text02fc + tx Text030e + db 6 + tx Text02fd + tx Text030f + db 6 + tx Text02fe + tx Text0310 + db 4 + tx Text02ff + tx Text0311 + db 5 + tx Text0300 + tx Text0312 + db 7 + tx Text0301 + tx Text0313 + db 5 + tx Text0302 + tx Text0314 + +GlossaryData2: + db 5 + tx Text0303 + tx Text0315 + db 5 + tx Text0304 + tx Text0316 + db 5 + tx Text0305 + tx Text0317 + db 5 + tx Text0306 + tx Text0318 + db 6 + tx Text0307 + tx Text0319 + db 5 + tx Text0308 + tx Text031a + db 6 + tx Text0309 + tx Text031b + db 6 + tx Text030a + tx Text031c + db 6 + tx Text030b + tx Text031d ; (6:4661) xor a @@ -833,7 +891,7 @@ Data_006_4634: ; (6:46f7) INCLUDE "data/effect_commands.asm" -Func_006_49fc: ; 18f9c (6:4f9c) +Func_006_4f9c: ; 18f9c (6:4f9c) ld a, [wLoadedMoveAnimation] or a ret z @@ -921,7 +979,7 @@ Func_006_5014: jr z, .asm_006_5063 .asm_006_5026 call Func_3b6a - jr Func_006_49fc.asm_006_4fd4 + jr Func_006_4f9c.asm_006_4fd4 .asm_006_502b ld a, $97 call Func_3b6a @@ -944,7 +1002,7 @@ Func_006_5014: ld a, $98 call Func_3b6a .asm_006_5054 - jp Func_006_49fc.asm_006_4fd4 + jp Func_006_4f9c.asm_006_4fd4 .asm_006_5057 ld c, $61 ld b, $63 @@ -977,7 +1035,7 @@ Func_006_5079: call Func_006_509d ld a, $96 call Func_3b6a - jp Func_006_49fc.asm_006_4fd4 + jp Func_006_4f9c.asm_006_4fd4 PointerTable_006_508f: ; (6:508f) dw Func_006_4fdc @@ -2211,7 +2269,7 @@ GetCharacterInfoFromCursorPos: ; unit: 6 bytes. ; structure: ; abs. y pos. (1) / abs. x pos. (1) / type 1 (1) / type 2 (1) / char. code (2) -; - some of one byte characters have 0x0e in their high byte. +; - some of one byte characters may have 0x0e in their high byte. ; - unused data contains its character code as zero. KeyboardData: ; (6:6baf) kbitem $04, $02, $11, $00, $0330 -- cgit v1.2.3 From eec7a09fa8f5768065f2a7eb4ecf2ac8a739be3b Mon Sep 17 00:00:00 2001 From: jidoc01 Date: Sun, 30 Jun 2019 13:04:29 +0900 Subject: [Bank 6] Add new constants & etc. --- src/constants.asm | 3 +- src/constants/name_constants.asm | 3 + src/engine/bank04.asm | 17 ++-- src/engine/bank06.asm | 203 +++++++++++++++++---------------------- src/wram.asm | 12 ++- 5 files changed, 111 insertions(+), 127 deletions(-) create mode 100644 src/constants/name_constants.asm (limited to 'src') diff --git a/src/constants.asm b/src/constants.asm index 926f8d6..cad6cae 100644 --- a/src/constants.asm +++ b/src/constants.asm @@ -13,4 +13,5 @@ INCLUDE "constants/npc_constants.asm" INCLUDE "constants/sgb_constants.asm" INCLUDE "constants/sprite_constants.asm" INCLUDE "constants/text_constants.asm" -INCLUDE "constants/charmaps.asm" +INCLUDE "constants/name_constants.asm" +INCLUDE "constants/charmaps.asm" \ No newline at end of file diff --git a/src/constants/name_constants.asm b/src/constants/name_constants.asm new file mode 100644 index 0000000..b16df80 --- /dev/null +++ b/src/constants/name_constants.asm @@ -0,0 +1,3 @@ +PLAYER_NAME_LENGTH EQU $10 + +NAMING_SCREEN_BUFFER_LENGTH EQU $18 \ No newline at end of file diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm index 2c417cc..d9645a5 100644 --- a/src/engine/bank04.asm +++ b/src/engine/bank04.asm @@ -1110,7 +1110,7 @@ MainMenuFunctionTable: MainMenu_NewGame: ; 12704 (4:6704) farcall Func_c1b1 - call OnPlayerNamingScreen + call DisplayPlayerNamingScreen farcall Func_1996e call EnableSRAM ld a, [s0a007] @@ -1180,11 +1180,11 @@ Func_12871: ; 12871 (4:6871) Func_1288c: ; 1288c (4:688c) INCROM $1288c, $128a9 -OnPlayerNamingScreen:: ; 128a9 (4:68a9) - ; clear name buffer. +DisplayPlayerNamingScreen:: ; 128a9 (4:68a9) + ; clear the name buffer. ld hl, wc500 ; c500: name buffer. - ld bc, $0010 - ld a, $00 + ld bc, PLAYER_NAME_LENGTH + ld a, TX_END call FillMemoryWithA ; get player's name @@ -1205,7 +1205,7 @@ OnPlayerNamingScreen:: ; 128a9 (4:68a9) .no_name ; set the default name. ld de, sPlayerName - ld bc, $0010 + ld bc, PLAYER_NAME_LENGTH call EnableSRAM call CopyDataHLtoDE_SaveRegisters ; it seems for integrity checking. @@ -1219,7 +1219,10 @@ OnPlayerNamingScreen:: ; 128a9 (4:68a9) ; "MARK": default player name. ; last two bytes are reserved for RNG. textfw3 "M", "A", "R", "K" - db $00, $00, $00, $00, $00, $00, $10, $12 +rept 6 + done +endr + db $10, $12 Unknown_128fb: ; 128fb INCROM $128fb, $1296e diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm index 68a42e5..f41cba3 100644 --- a/src/engine/bank06.asm +++ b/src/engine/bank06.asm @@ -199,19 +199,19 @@ Func_180d5: ; 180d5 (6:40d5) cp $ff jr nz, .asm_006_4153 call Func_006_44bf - ld de, $389f + lb de, $38, $9f call SetupText scf ret .asm_006_4148 call Func_006_44bf - ld de, $389f + lb de, $38, $9f call SetupText or a ret .asm_006_4153 call Func_006_44bf - ld de, $389f + lb de, $38, $9f call SetupText ld a, [$ce52] ld [$ce57], a @@ -222,7 +222,7 @@ Func_180d5: ; 180d5 (6:40d5) jp .asm_006_40da .asm_006_4171 ; 18171 (6:4171) push af - ld de, $0111 + lb de, 1, 17 call InitTextPrinting ldtx hl, Text0251 call ProcessTextFromID @@ -232,7 +232,7 @@ Func_180d5: ; 180d5 (6:40d5) call ProcessTextFromID ld hl, hffb0 ld [hl], $00 - ld de, $0111 + lb de, 1, 17 call InitTextPrinting pop af ld hl, Data_006_42bb @@ -253,25 +253,25 @@ Func_180d5: ; 180d5 (6:40d5) cp $06 jr nc, .asm_006_41c2 ld a, l - add $bb + add DUELVARS_ARENA_CARD call GetTurnDuelistVariable - cp $ff + cp -1 ret z call GetCardIDFromDeckIndex call LoadCardDataToBuffer1_FromCardID jr .asm_006_41d7 .asm_006_41c2 ld a, l - add $bb + add DUELVARS_ARENA_CARD call GetNonTurnDuelistVariable - cp $ff + cp -1 ret z call SwapTurn call GetCardIDFromDeckIndex call LoadCardDataToBuffer1_FromCardID call SwapTurn .asm_006_41d7 - ld a, $12 + ld a, 18 call CopyCardNameAndLevel ld hl, wDefaultText call ProcessText @@ -288,7 +288,7 @@ Func_180d5: ; 180d5 (6:40d5) call SwapTurn ret .asm_006_41f8 - ld de, $389f + lb de, $38, $9f call SetupText ldh a, [hWhoseTurn] push af @@ -299,7 +299,7 @@ Func_180d5: ; 180d5 (6:40d5) ld [$ce52], a jp .asm_006_40da .asm_006_4210 - ld de, $389f + lb de, $38, $9f call SetupText ldh a, [hWhoseTurn] push af @@ -336,14 +336,14 @@ Func_006_4248: xor a .asm_006_4251 ld [wHUDEnergyAndHPBarsX], a - add $bb + add DUELVARS_ARENA_CARD call GetTurnDuelistVariable - cp $ff + cp -1 ret z call GetCardIDFromDeckIndex call LoadCardDataToBuffer1_FromCardID xor a - ld [wHUDEnergyAndHPBarsY], a + ld [wCurPlayAreaY], a bank1call OpenCardPage_FromCheckPlayArea ret @@ -355,15 +355,15 @@ Func_006_426a: sub $02 .asm_006_4274 ld [wHUDEnergyAndHPBarsX], a - add $bb + add DUELVARS_ARENA_CARD call GetNonTurnDuelistVariable - cp $ff + cp -1 ret z call SwapTurn call GetCardIDFromDeckIndex call LoadCardDataToBuffer1_FromCardID xor a - ld [wHUDEnergyAndHPBarsY], a + ld [wCurPlayAreaY], a bank1call OpenCardPage_FromCheckPlayArea call SwapTurn ret @@ -423,26 +423,26 @@ Func_006_43bb: ; 183bb (6:43bb) inc hl inc hl inc hl - bit 6, a + bit D_UP_F, a jr z, .asm_006_43df .asm_006_43dc ld a, [hl] jr .asm_006_43f5 .asm_006_43df inc hl - bit 7, a + bit D_DOWN_F, a jr z, .asm_006_43e7 ld a, [hl] jr .asm_006_43f5 .asm_006_43e7 inc hl - bit 4, a + bit D_RIGHT_F, a jr z, .asm_006_43ef ld a, [hl] jr .asm_006_43f5 .asm_006_43ef inc hl - bit 5, a + bit D_LEFT_F, a jr z, .asm_006_446b ld a, [hl] .asm_006_43f5 @@ -459,7 +459,7 @@ Func_006_43bb: ; 183bb (6:43bb) jr c, .asm_006_4437 jr .asm_006_4462 .asm_006_440e - ld a, $ef + ld a, DUELVARS_NUMBER_OF_POKEMON_IN_PLAY_AREA call GetTurnDuelistVariable dec a jr nz, .asm_006_441d @@ -472,7 +472,7 @@ Func_006_43bb: ; 183bb (6:43bb) cp b jr c, .asm_006_4462 ldh a, [hDPadHeld] - bit 4, a + bit D_RIGHT_F, a jr z, .asm_006_4430 xor a ld [$ce52], a @@ -483,7 +483,7 @@ Func_006_43bb: ; 183bb (6:43bb) ld [$ce52], a jr .asm_006_4462 .asm_006_4437: - ld a, $ef + ld a, DUELVARS_NUMBER_OF_POKEMON_IN_PLAY_AREA call GetNonTurnDuelistVariable dec a jr nz, .asm_006_4446 @@ -497,7 +497,7 @@ Func_006_43bb: ; 183bb (6:43bb) cp b jr c, .asm_006_4462 ldh a, [hDPadHeld] - bit 5, a + bit D_LEFT_F, a jr z, .asm_006_445c ld a, $0b ld [$ce52], a @@ -539,7 +539,7 @@ Func_006_43bb: ; 183bb (6:43bb) inc [hl] and $0f ret nz - bit 4, [hl] + bit D_RIGHT_F, [hl] jr nz, Func_006_44bf Func_006_44a0: ; 184a0 (6:44a0) @@ -570,7 +570,7 @@ Func_006_44bf: ; 184bf (6:44bf) ret xor a - ld [$ce62], a + ld [wGlossaryPageNo], a call Func_006_452b xor a ld [$ce52], a @@ -612,9 +612,9 @@ Func_006_44bf: ; 184bf (6:44bf) ld a, $01 farcall Func_90fb .asm_006_451e - ld a, [$ce62] + ld a, [wGlossaryPageNo] xor $01 - ld [$ce62], a + ld [wGlossaryPageNo], a call Func_006_455a jr .asm_006_44e5 @@ -628,45 +628,49 @@ Func_006_452b: ; 1852b (6:452b) call EmptyScreen call Set_OBJ_8x8 farcall $2, $4992 - ld de, $0500 + lb de, 5, 0 call InitTextPrinting - ld hl, $02f6 + ldtx hl, Text02f6 call ProcessTextFromID call Func_006_455a - ld hl, $02f9 + ldtx hl, Text02f9 call DrawWideTextBox_PrintText ret +; print glossary Func_006_455a: ; 1855a (6:455a) ld hl, wDefaultText - ld a, $05 + ld a, TX_SYMBOL ld [hli], a - ld a, [$ce62] - add $21 + ld a, [wGlossaryPageNo] + add SYM_1 ld [hli], a - ld a, $05 + ld a, TX_SYMBOL ld [hli], a - ld a, $2e + ld a, SYM_SLASH ld [hli], a - ld a, $05 + ld a, TX_SYMBOL ld [hli], a - ld a, $22 + ld a, SYM_2 ld [hli], a - ld [hl], $00 - ld de, $1001 + ld [hl], TX_END + + lb de, 16, 1 call InitTextPrinting ld hl, wDefaultText call ProcessText - ld de, $0103 + + lb de, 1, 3 call InitTextPrinting - ld a, [$ce62] + ld a, [wGlossaryPageNo] or a - jr nz, .asm_006_4591 - ld hl, $02f7 - jr .asm_006_4594 -.asm_006_4591 + + jr nz, .page_two + ldtx hl, Text02f7 + jr .page_one +.page_two ldtx hl, Text02f8 -.asm_006_4594 +.page_one call ProcessTextFromID ret @@ -675,14 +679,14 @@ Func_006_4598: ; 18598 (6:4598) xor a ld [wTileMapFill], a call EmptyScreen - ld de, $0500 + lb de, 5, 0 call InitTextPrinting ldtx hl, Text02f6 call ProcessTextFromID ld de, $0004 ld bc, $140e call DrawRegularTextBox - ld a, [$ce62] + ld a, [wGlossaryPageNo] or a jr nz, .back_page ld hl, GlossaryData1 @@ -711,7 +715,7 @@ Func_006_4598: ; 18598 (6:4598) ld l, a call ProcessTextFromID pop hl - ld de, $0105 + lb de, 1, 5 call InitTextPrinting inc hl inc hl @@ -736,63 +740,32 @@ Func_006_4598: ; 18598 (6:4598) ; unit: 5 bytes. ; [structure] ; horizonal align (1) / text id 1 (2) / text id 2 (2) +glossary_entry: MACRO + db \1 + tx \2 + tx \3 +ENDM GlossaryData1: - db 7 - tx Text02fa - tx Text030c - db 5 - tx Text02fb - tx Text030d - db 7 - tx Text02fc - tx Text030e - db 6 - tx Text02fd - tx Text030f - db 6 - tx Text02fe - tx Text0310 - db 4 - tx Text02ff - tx Text0311 - db 5 - tx Text0300 - tx Text0312 - db 7 - tx Text0301 - tx Text0313 - db 5 - tx Text0302 - tx Text0314 + glossary_entry 7, Text02fa, Text030c + glossary_entry 5, Text02fb, Text030d + glossary_entry 7, Text02fc, Text030e + glossary_entry 6, Text02fd, Text030f + glossary_entry 6, Text02fe, Text0310 + glossary_entry 4, Text02ff, Text0311 + glossary_entry 5, Text0300, Text0312 + glossary_entry 7, Text0301, Text0313 + glossary_entry 5, Text0302, Text0314 GlossaryData2: - db 5 - tx Text0303 - tx Text0315 - db 5 - tx Text0304 - tx Text0316 - db 5 - tx Text0305 - tx Text0317 - db 5 - tx Text0306 - tx Text0318 - db 6 - tx Text0307 - tx Text0319 - db 5 - tx Text0308 - tx Text031a - db 6 - tx Text0309 - tx Text031b - db 6 - tx Text030a - tx Text031c - db 6 - tx Text030b - tx Text031d + glossary_entry 5, Text0303, Text0315 + glossary_entry 5, Text0304, Text0316 + glossary_entry 5, Text0305, Text0317 + glossary_entry 5, Text0306, Text0318 + glossary_entry 6, Text0307, Text0319 + glossary_entry 5, Text0308, Text031a + glossary_entry 6, Text0309, Text031b + glossary_entry 6, Text030a, Text031c + glossary_entry 6, Text030b, Text031d ; (6:4661) xor a @@ -804,9 +777,9 @@ GlossaryData2: ldh a, [hDPadHeld] or a jr z, .asm_006_46a2 - bit 5, a + bit D_LEFT_F, a jr nz, .asm_006_467a - bit 4, a + bit D_RIGHT_F, a jr z, .asm_006_4680 .asm_006_467a ld a, d @@ -814,9 +787,9 @@ GlossaryData2: ld d, a jr .asm_006_468c .asm_006_4680 - bit 6, a + bit D_UP_F, a jr nz, .asm_006_4688 - bit 7, a + bit D_DOWN_F, a jr z, .asm_006_46a2 .asm_006_4688 ld a, e @@ -862,7 +835,7 @@ GlossaryData2: and $0f ret nz ld a, $0f - bit 4, [hl] + bit D_RIGHT_F, [hl] jr z, .asm_006_46d6 .asm_006_46d4 ; 186d4 (6:46d4) ld a, $00 @@ -1715,8 +1688,8 @@ DrawNamingScreenBG: ; print "End". ld hl, .data call PlaceTextItems - ld hl, $0221 - ld de, $0204 + ldtx hl, Text0221 + lb de, 2, 4 call InitTextPrinting call ProcessTextFromID call EnableLCD @@ -1761,7 +1734,7 @@ PrintPlayerNameFromInput: rept 10 textfw3 "_" endr - db $00 ; null + done ; check if button pressed. ; if pressed, set the carry bit on. @@ -2514,7 +2487,7 @@ Func_006_6e99: call PlaceTextItems ; print the keyboard characters. ldtx hl, NamingScreenKeyboardText ; "A B C D..." - ld de, $0204 + lb de, 2, 4 call InitTextPrinting call ProcessTextFromID call EnableLCD diff --git a/src/wram.asm b/src/wram.asm index 3901be0..e34f4c3 100644 --- a/src/wram.asm +++ b/src/wram.asm @@ -1303,7 +1303,11 @@ wce5e:: ; ce5e wce60:: ; ce60 ds $1 - ds $2 +wce61:: ; ce61 + ds $1 + +wGlossaryPageNo:: ; ce62 + ds $1 wce63:: ; ce63 ds $1 @@ -1469,11 +1473,11 @@ wcfda:: ; cfda wcfe3:: ; cfe3 ds $4 -; name buffer in naming screen +; a name buffer in the naming screen. wNamingScreenBuffer:: ; cfe7 - ds $18 + ds NAMING_SCREEN_BUFFER_LENGTH -; current name length in naming screen +; current name length in the naming screen. wNamingScreenBufferLength:: ; cfff ds $1 -- cgit v1.2.3 From 404820c09c726d16b9ce5dd20981d5e3236bc635 Mon Sep 17 00:00:00 2001 From: jidoc01 Date: Sun, 30 Jun 2019 13:06:33 +0900 Subject: [Bank 6] Make kbitem a local macro. --- src/engine/bank06.asm | 4 ++++ src/macros/data.asm | 5 ----- 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm index f41cba3..c092d16 100644 --- a/src/engine/bank06.asm +++ b/src/engine/bank06.asm @@ -2244,6 +2244,10 @@ GetCharacterInfoFromCursorPos: ; abs. y pos. (1) / abs. x pos. (1) / type 1 (1) / type 2 (1) / char. code (2) ; - some of one byte characters may have 0x0e in their high byte. ; - unused data contains its character code as zero. +kbitem: MACRO + db \1, \2, \3, \4 + dw \5 +ENDM KeyboardData: ; (6:6baf) kbitem $04, $02, $11, $00, $0330 kbitem $06, $02, $12, $00, $0339 diff --git a/src/macros/data.asm b/src/macros/data.asm index e059b28..a7ac93d 100644 --- a/src/macros/data.asm +++ b/src/macros/data.asm @@ -88,9 +88,4 @@ ENDM textitem: MACRO db \1, \2 tx \3 -ENDM - -kbitem: MACRO - db \1, \2, \3, \4 - dw \5 ENDM \ No newline at end of file -- cgit v1.2.3 From fe2ed2123b186d3bb2868fd6be4ad2a877aca314 Mon Sep 17 00:00:00 2001 From: jidoc01 Date: Sun, 30 Jun 2019 13:34:51 +0900 Subject: [Bank 6] Add wNameBuffer --- src/constants/name_constants.asm | 7 +++-- src/engine/bank01.asm | 2 +- src/engine/bank02.asm | 5 ++-- src/engine/bank04.asm | 10 +++---- src/engine/bank06.asm | 65 +++++++++++++++++++++------------------- src/engine/home.asm | 2 +- src/sram.asm | 2 +- src/wram.asm | 8 +++-- 8 files changed, 56 insertions(+), 45 deletions(-) (limited to 'src') diff --git a/src/constants/name_constants.asm b/src/constants/name_constants.asm index b16df80..7d4370c 100644 --- a/src/constants/name_constants.asm +++ b/src/constants/name_constants.asm @@ -1,3 +1,6 @@ -PLAYER_NAME_LENGTH EQU $10 +NAME_BUFFER_LENGTH EQU 16 -NAMING_SCREEN_BUFFER_LENGTH EQU $18 \ No newline at end of file +MAX_PLAYER_NAME_LENGTH EQU 6 * 2 +MAX_DECK_NAME_LENGTH EQU 20 * 1 ; note that its unit is byte! + +NAMING_SCREEN_BUFFER_LENGTH EQU 24 \ No newline at end of file diff --git a/src/engine/bank01.asm b/src/engine/bank01.asm index 46337fb..3e295c0 100644 --- a/src/engine/bank01.asm +++ b/src/engine/bank01.asm @@ -6112,7 +6112,7 @@ DuelDataToSave: ; 6729 (1:6729) ; dw address, number_of_bytes_to_copy dw wPlayerDuelVariables, wOpponentDuelVariables - wPlayerDuelVariables dw wOpponentDuelVariables, wPlayerDeck - wOpponentDuelVariables - dw wPlayerDeck, wc500 + $10 - wPlayerDeck + dw wPlayerDeck, wNameBuffer + $10 - wPlayerDeck dw wWhoseTurn, wDuelTheme + $1 - wWhoseTurn dw hWhoseTurn, $1 dw wRNG1, wRNGCounter + $1 - wRNG1 diff --git a/src/engine/bank02.asm b/src/engine/bank02.asm index c58895c..232fa98 100644 --- a/src/engine/bank02.asm +++ b/src/engine/bank02.asm @@ -254,6 +254,7 @@ Func_8f05: ; 8f05 (2:4f05) ld a, [wceb1] or a jr nz, .asm_8f10 + ; it refers to a data in the other bank without any bank desc. ld hl, Deck1Data jr .asm_8f23 .asm_8f10 @@ -269,8 +270,8 @@ Func_8f05: ; 8f05 (2:4f05) .asm_8f20 ld hl, Deck4Data .asm_8f23 - ld a, $14 - ld bc, $0401 + ld a, MAX_DECK_NAME_LENGTH + lb bc, 4, 1 ld de, wcfb9 farcall InputDeckName ld a, [wcfb9] diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm index d9645a5..96a3c4b 100644 --- a/src/engine/bank04.asm +++ b/src/engine/bank04.asm @@ -1182,20 +1182,20 @@ Func_1288c: ; 1288c (4:688c) DisplayPlayerNamingScreen:: ; 128a9 (4:68a9) ; clear the name buffer. - ld hl, wc500 ; c500: name buffer. - ld bc, PLAYER_NAME_LENGTH + ld hl, wNameBuffer ; c500: name buffer. + ld bc, NAME_BUFFER_LENGTH ld a, TX_END call FillMemoryWithA ; get player's name ; from the user into hl. - ld hl, wc500 + ld hl, wNameBuffer farcall InputPlayerName farcall Func_c1a4 call DoFrameIfLCDEnabled call DisableLCD - ld hl, wc500 + ld hl, wNameBuffer ; get the first byte of the name buffer. ld a, [hl] or a @@ -1205,7 +1205,7 @@ DisplayPlayerNamingScreen:: ; 128a9 (4:68a9) .no_name ; set the default name. ld de, sPlayerName - ld bc, PLAYER_NAME_LENGTH + ld bc, NAME_BUFFER_LENGTH call EnableSRAM call CopyDataHLtoDE_SaveRegisters ; it seems for integrity checking. diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm index c092d16..987958f 100644 --- a/src/engine/bank06.asm +++ b/src/engine/bank06.asm @@ -731,7 +731,7 @@ Func_006_4598: ; 18598 (6:4598) .asm_006_45f7 call DoFrame ldh a, [hKeysPressed] - and $02 + and B_BUTTON jr z, .asm_006_45f7 ld a, $ff farcall Func_90fb @@ -1532,9 +1532,9 @@ PlaySFXByA: ; (6:6794) InputPlayerName: ; (6:67a3) ld e, l ld d, h - ld a, $0c + ld a, MAX_PLAYER_NAME_LENGTH ld hl, WhatIsYourNameData - lb bc, $0c, $01 + lb bc, 12, 1 call InitializeInputName call Set_OBJ_8x8 xor a @@ -1573,9 +1573,9 @@ InputPlayerName: ; (6:67a3) ld a, $01 call PlaySFXByA call Func_006_6a07 - ld a, $06 + ld a, 6 ld [wNamingScreenCursorX], a - ld a, $05 + ld a, 5 ld [wNamingScreenCursorY], a call Func_006_6a23 jr .loop @@ -1597,12 +1597,12 @@ InputPlayerName: ; (6:67a3) jr z, .loop ; empty string? ; erase one character. ld e, a - ld d, $00 + ld d, 0 ld hl, wNamingScreenBuffer add hl, de dec hl dec hl - ld [hl], $00 + ld [hl], TX_END ld hl, wNamingScreenBufferLength ; note that its unit is byte, not word. dec [hl] dec [hl] @@ -1611,12 +1611,13 @@ InputPlayerName: ; (6:67a3) ; it's called when naming(either player's or deck's) starts. ; a: maximum length of name(depending on whether player's or deck's). +; bc: position of name. ; de: dest. pointer. ; hl: pointer to text item of the question. InitializeInputName: ld [wNamingScreenBufferMaxLength], a push hl - ld hl, wd007 + ld hl, wNamingScreenNamePosition ld [hl], b inc hl ld [hl], c @@ -1634,7 +1635,7 @@ InitializeInputName: inc hl ld [hl], d ; clear the name buffer. - ld a, $18 + ld a, NAMING_SCREEN_BUFFER_LENGTH ld hl, wNamingScreenBuffer call ClearMemory ld hl, wNamingScreenBuffer @@ -1699,13 +1700,13 @@ DrawNamingScreenBG: db $ff DrawTextboxForKeyboard: - ld de, $0003 ; x, y - ld bc, $140f ; w, h + lb de, 0, 3 ; x, y + lb bc, 20, 15 ; w, h call DrawRegularTextBox ret PrintPlayerNameFromInput: - ld hl, wd007 + ld hl, wNamingScreenNamePosition ld d, [hl] inc hl ld e, [hl] @@ -1965,7 +1966,7 @@ Func_006_6a28: jr nz, .asm_006_6a49 dec a .asm_006_6a49 - ld hl, wd007 + ld hl, wNamingScreenNamePosition add [hl] ld d, a ld h, $08 @@ -2329,20 +2330,24 @@ KeyboardData: ; (6:6baf) kbitem $54, $00, $50, $0e, $0055 kbitem $51, $0e, $56, $00, $0000 -; get deck name from the user -; into de. +; get deck name from the user into de. +; function description is similar to the player's. +; refer to 'InputPlayerName'. InputDeckName: ; 1ad89 (6:6d89) push af + ; check if the buffer is empty. ld a, [de] or a - jr nz, .asm_006_6d91 - ld a, $06 + jr nz, .not_empty + ; this buffer will contain half-width chars. + ld a, TX_HALFWIDTH ld [de], a -.asm_006_6d91 +.not_empty pop af inc a call InitializeInputName call Set_OBJ_8x8 + xor a ld [wTileMapFill], a call EmptyScreen @@ -2367,7 +2372,7 @@ InputDeckName: ; 1ad89 (6:6d89) ld [wceaa], a ld a, $00 ld [wceab], a -.asm_006_6dd6 +.loop ld a, $01 ld [wVBlankOAMCopyToggle], a call DoFrame @@ -2378,18 +2383,18 @@ InputDeckName: ; 1ad89 (6:6d89) ld a, $01 call PlaySFXByA call Func_006_6fa1 - ld a, $06 + ld a, 6 ld [wNamingScreenCursorX], a ld [wNamingScreenCursorY], a call Func_006_6fbd - jr .asm_006_6dd6 + jr .loop .on_start call Func_006_6efb - jr nc, .asm_006_6dd6 + jr nc, .loop cp $ff jr z, .asm_006_6e1c call Func_006_6ec3 - jr nc, .asm_006_6dd6 + jr nc, .loop call FinalizeInputName ld hl, wNamingScreenDestPointer ld a, [hli] @@ -2400,23 +2405,23 @@ InputDeckName: ; 1ad89 (6:6d89) or a jr nz, .asm_006_6e1b dec hl - ld [hl], $00 + ld [hl], TX_END .asm_006_6e1b ret .asm_006_6e1c ld a, [wNamingScreenBufferLength] cp $02 - jr c, .asm_006_6dd6 + jr c, .loop ld e, a - ld d, $00 + ld d, 0 ld hl, wNamingScreenBuffer add hl, de dec hl - ld [hl], $00 + ld [hl], TX_END ld hl, wNamingScreenBufferLength dec [hl] call ProcessTextWithUnderbar - jp .asm_006_6dd6 + jp .loop ; fill v0Tiles0 for 0x10 tiles ; with 0xF0. @@ -2439,7 +2444,7 @@ rept $10 endr ProcessTextWithUnderbar: - ld hl, wd007 + ld hl, wNamingScreenNamePosition ld d, [hl] inc hl ld e, [hl] @@ -2688,7 +2693,7 @@ Func_006_6fc2: .asm_006_6fdf dec a ld d, a - ld hl, wd007 + ld hl, wNamingScreenNamePosition ld a, [hl] sla a add d diff --git a/src/engine/home.asm b/src/engine/home.asm index 72aedcf..cab683d 100644 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -5351,7 +5351,7 @@ CopyOpponentName: ; 1c8e (0:1c8e) ld h, a jp CopyText .special_name - ld hl, wc500 + ld hl, wNameBuffer ld a, [hl] or a jr z, .print_player2 diff --git a/src/sram.asm b/src/sram.asm index c69e4c0..272fbfd 100644 --- a/src/sram.asm +++ b/src/sram.asm @@ -25,7 +25,7 @@ s0a00c:: ; a00c ds $4 sPlayerName:: ; a010 - ds $10 + ds NAME_BUFFER_LENGTH ds $e0 diff --git a/src/wram.asm b/src/wram.asm index e34f4c3..3af5361 100644 --- a/src/wram.asm +++ b/src/wram.asm @@ -363,8 +363,9 @@ ENDU wOpponentDeck:: ; c480 ds $80 -wc500:: ; c500 - ds $10 +; this holds names like player's or opponent's. +wNameBuffer:: ; c500 + ds NAME_BUFFER_LENGTH ; this holds an $ff-terminated list of card deck indexes (e.g. cards in hand or in bench) ; or (less often) the attack list of a Pokemon card @@ -1499,7 +1500,8 @@ wd005:: ; d005 wNamingScreenCursorX:: ; d006 ds $1 -wd007:: ; d007 +; the position to display the input on. +wNamingScreenNamePosition:: ; d007 ds $2 wd009:: ; d009 -- cgit v1.2.3 From a6329757914a3137a5d71b83d522aaeadaf227e6 Mon Sep 17 00:00:00 2001 From: jidoc01 Date: Sun, 30 Jun 2019 23:44:12 +0900 Subject: [Bank 6] Analyze character transition table --- src/engine/bank04.asm | 2 +- src/engine/bank06.asm | 241 +++++++++++++++++++++++++++++++------------------- 2 files changed, 150 insertions(+), 93 deletions(-) (limited to 'src') diff --git a/src/engine/bank04.asm b/src/engine/bank04.asm index 96a3c4b..ffbef50 100644 --- a/src/engine/bank04.asm +++ b/src/engine/bank04.asm @@ -160,7 +160,7 @@ BoosterPack_1031b: ; 1031b (4:431b) ld [wVBlankOAMCopyToggle], a ld a, $4 ld [wTextBoxFrameType], a - farcall $1, $7599 + farcall Func_7599 farcall Func_c1a4 call DoFrameIfLCDEnabled pop af diff --git a/src/engine/bank06.asm b/src/engine/bank06.asm index 987958f..5c61c8d 100644 --- a/src/engine/bank06.asm +++ b/src/engine/bank06.asm @@ -236,7 +236,7 @@ Func_180d5: ; 180d5 (6:40d5) call InitTextPrinting pop af ld hl, Data_006_42bb - ld b, $00 + ld b, 0 sla a ld c, a add hl, bc @@ -309,7 +309,6 @@ Func_180d5: ; 180d5 (6:40d5) ld a, [$ce57] ld [$ce52], a jp .asm_006_40da - .jump_table ; (6:4228) dw Func_006_4248 dw Func_006_4248 @@ -583,7 +582,6 @@ Func_006_44bf: ; 184bf (6:44bf) ld [$ce55], a xor a ld [wcea3], a - .asm_006_44e5 ld a, $01 ld [wVBlankOAMCopyToggle], a @@ -699,7 +697,7 @@ Func_006_4598: ; 18598 (6:4598) ; that is, ; hl += (5 * a). ld c, a - ld b, $00 + ld b, 0 add hl, bc sla a sla a @@ -755,7 +753,6 @@ GlossaryData1: glossary_entry 5, Text0300, Text0312 glossary_entry 7, Text0301, Text0313 glossary_entry 5, Text0302, Text0314 - GlossaryData2: glossary_entry 5, Text0303, Text0315 glossary_entry 5, Text0304, Text0316 @@ -869,7 +866,7 @@ Func_006_4f9c: ; 18f9c (6:4f9c) or a ret z ld l, a - ld h, $00 + ld h, 0 add hl, hl ld de, $51a4 .asm_006_4fa8 @@ -1102,7 +1099,7 @@ Func_006_50fb: ; 190fb (6:50fb) ld a, [wWhoseTurn] ld l, a .asm_006_5127 - call $30bc + call Func_30bc pop af ld [wDuelDisplayedScreen], a .asm_006_512e @@ -1786,7 +1783,7 @@ NamingScreen_CheckButtonState: push hl push bc push af - call GetCharacterInfoFromCursorPos + call GetCharInfoFromPos_Player inc hl inc hl inc hl @@ -1828,7 +1825,7 @@ NamingScreen_CheckButtonState: push hl push bc push af - call GetCharacterInfoFromCursorPos + call GetCharInfoFromPos_Player inc hl inc hl inc hl @@ -1865,7 +1862,7 @@ NamingScreen_CheckButtonState: ld h, a .asm_006_69ab push hl - call GetCharacterInfoFromCursorPos + call GetCharInfoFromPos_Player inc hl inc hl inc hl @@ -1928,7 +1925,7 @@ Func_006_6a07: ld h, a ld a, [wNamingScreenCursorY] ld l, a - call GetCharacterInfoFromCursorPos + call GetCharInfoFromPos_Player ld a, [hli] ld c, a ld b, [hl] @@ -1988,7 +1985,7 @@ Func_006_6a28: SetVram0xFF: ld hl, v0Tiles0 ld de, .data - ld b, $00 + ld b, 0 .loop ; copy data from de to hl ; for 0x10 bytes. @@ -2003,19 +2000,21 @@ SetVram0xFF: ld [hli], a jr .loop .data -rept $6a87-$6a77 +rept $10 db $ff endr -; set the carry bit on if "End" was selected. +; set the carry bit on, +; if "End" was selected. NamingScreen_ProcessInput: ld a, [wNamingScreenCursorX] ld h, a ld a, [wNamingScreenCursorY] ld l, a - call GetCharacterInfoFromCursorPos + call GetCharInfoFromPos_Player inc hl inc hl + ; load types into de. ld e, [hl] inc hl ld a, [hli] @@ -2061,7 +2060,7 @@ NamingScreen_ProcessInput: ld a, [wd009] cp $02 jr z, .read_char - ld bc, $0359 + ld bc, $0359 ; “ ld a, d cp b jr nz, .asm_006_6af4 @@ -2069,13 +2068,13 @@ NamingScreen_ProcessInput: cp c jr nz, .asm_006_6af4 push hl - ld hl, KeyboardData + ($6cf9 - $6baf) - call Func_006_6b61 + ld hl, TransitionTable1 ; from 55th. + call TransformCharacter pop hl - jr c, .asm_006_6b5d + jr c, .nothing jr .asm_006_6b09 .asm_006_6af4 - ld bc, $035b + ld bc, $035b ; º ld a, d cp b jr nz, .asm_006_6b1d @@ -2083,10 +2082,10 @@ NamingScreen_ProcessInput: cp c jr nz, .asm_006_6b1d push hl - ld hl, KeyboardData + ($6d5f - $6baf) - call Func_006_6b61 + ld hl, TransitionTable2 ; from 72th. + call TransformCharacter pop hl - jr c, .asm_006_6b5d + jr c, .nothing .asm_006_6b09 ld a, [wNamingScreenBufferLength] dec a @@ -2094,7 +2093,7 @@ NamingScreen_ProcessInput: ld [wNamingScreenBufferLength], a ld hl, wNamingScreenBuffer push de - ld d, $00 + ld d, 0 ld e, a add hl, de pop de @@ -2107,10 +2106,10 @@ NamingScreen_ProcessInput: ld a, [wd009] or a jr nz, .asm_006_6b2b - ld a, $0e + ld a, TX_HIRAGANA jr .asm_006_6b37 .asm_006_6b2b - ld a, $0f + ld a, TX_KATAKANA jr .asm_006_6b37 ; read character code from info. to register. ; hl: pointer. @@ -2150,62 +2149,71 @@ NamingScreen_ProcessInput: ; de: 2 bytes character codes. ; hl: dest. .asm_006_6b51 - ld b, $00 + ld b, 0 add hl, bc ld [hl], d inc hl ld [hl], e inc hl - ld [hl], $00 ; null terminator. + ld [hl], TX_END ; null terminator. call PrintPlayerNameFromInput -.asm_006_6b5d +.nothing or a ret .on_end scf ret -Func_006_6b61: +; this transforms the last japanese character +; in the name buffer into its dakuon shape or something. +; it seems to have been deprecated as the game was translated into english. +; but it can still be applied to english, such as upper-lower case transition. +; hl: info. pointer. +TransformCharacter: ld a, [wNamingScreenBufferLength] or a - jr z, .asm_006_6b91 + jr z, .return ; if the length is zero, just return. dec a dec a push hl ld hl, wNamingScreenBuffer - ld d, $00 + ld d, 0 ld e, a add hl, de ld e, [hl] inc hl ld d, [hl] - ld a, $0f + ; de: last character in the buffer, + ; but byte-wise swapped. + ld a, TX_KATAKANA cp e - jr nz, .asm_006_6b7a + jr nz, .hiragana + ; if it's katakana, + ; make it hiragana by decreasing its high byte. dec e -.asm_006_6b7a +.hiragana pop hl -.asm_006_6b7b +.loop ld a, [hli] or a - jr z, .asm_006_6b91 + jr z, .return cp d - jr nz, .asm_006_6b8c + jr nz, .next ld a, [hl] cp e - jr nz, .asm_006_6b8c + jr nz, .next inc hl ld e, [hl] inc hl ld d, [hl] or a ret -.asm_006_6b8c +.next inc hl inc hl inc hl - jr .asm_006_6b7b -.asm_006_6b91 + jr .loop +.return scf ret @@ -2213,7 +2221,7 @@ Func_006_6b61: ; it returns the pointer to the proper information. ; h: position x. ; l: position y. -GetCharacterInfoFromCursorPos: +GetCharInfoFromPos_Player: push de ; (information index) = (x) * (height) + (y) ; (height) = 0x05(Deck) or 0x06(Player) @@ -2224,7 +2232,7 @@ GetCharacterInfoFromCursorPos: call HtimesL ld a, l add e - ld hl, KeyboardData + ld hl, KeyboardData_Player pop de or a ret z @@ -2243,13 +2251,12 @@ GetCharacterInfoFromCursorPos: ; unit: 6 bytes. ; structure: ; abs. y pos. (1) / abs. x pos. (1) / type 1 (1) / type 2 (1) / char. code (2) -; - some of one byte characters may have 0x0e in their high byte. ; - unused data contains its character code as zero. kbitem: MACRO db \1, \2, \3, \4 dw \5 ENDM -KeyboardData: ; (6:6baf) +KeyboardData_Player: ; (6:6baf) kbitem $04, $02, $11, $00, $0330 kbitem $06, $02, $12, $00, $0339 kbitem $08, $02, $13, $00, $0342 @@ -2305,30 +2312,51 @@ KeyboardData: ; (6:6baf) kbitem $0c, $12, $3b, $00, $0070 kbitem $10, $0f, $01, $09, $0000 kbitem $00, $00, $00, $00, $0000 - kbitem $16, $0e, $3e, $00, $0e17 - kbitem $3f, $00, $18, $0e, $0040 - kbitem $19, $0e, $41, $00, $0e1a - kbitem $42, $00, $1b, $0e, $0043 - kbitem $1c, $0e, $44, $00, $0e1d - kbitem $45, $00, $1e, $0e, $0046 - kbitem $1f, $0e, $47, $00, $0e20 - kbitem $48, $00, $21, $0e, $0049 - kbitem $22, $0e, $4a, $00, $0e23 - kbitem $4b, $00, $24, $0e, $004c - kbitem $2a, $0e, $4d, $00, $0e2b - kbitem $4e, $00, $2c, $0e, $004f - kbitem $2d, $0e, $50, $00, $0e2e - kbitem $51, $00, $52, $0e, $004d - kbitem $53, $0e, $4e, $00, $0e54 - kbitem $4f, $00, $55, $0e, $0050 - kbitem $56, $0e, $51, $00, $0000 - kbitem $2a, $0e, $52, $00, $0e2b - kbitem $53, $00, $2c, $0e, $0054 - kbitem $2d, $0e, $55, $00, $0e2e - kbitem $56, $00, $4d, $0e, $0052 - kbitem $4e, $0e, $53, $00, $0e4f - kbitem $54, $00, $50, $0e, $0055 - kbitem $51, $0e, $56, $00, $0000 +; a set of transition datum. +; unit: 4 bytes. +; structure: +; previous char. code (2) / translated char. code (2) +; - the former char. code contains 0x0e in high byte. +; - the latter char. code contains only low byte. +TransitionTable1: + dw $0e16, $003e + dw $0e17, $003f + dw $0e18, $0040 + dw $0e19, $0041 + dw $0e1a, $0042 + dw $0e1b, $0043 + dw $0e1c, $0044 + dw $0e1d, $0045 + dw $0e1e, $0046 + dw $0e1f, $0047 + dw $0e20, $0048 + dw $0e21, $0049 + dw $0e22, $004a + dw $0e23, $004b + dw $0e24, $004c + dw $0e2a, $004d + dw $0e2b, $004e + dw $0e2c, $004f + dw $0e2d, $0050 + dw $0e2e, $0051 + dw $0e52, $004d + dw $0e53, $004e + dw $0e54, $004f + dw $0e55, $0050 + dw $0e56, $0051 + dw $0000 +TransitionTable2: + dw $0e2a, $0052 + dw $0e2b, $0053 + dw $0e2c, $0054 + dw $0e2d, $0055 + dw $0e2e, $0056 + dw $0e4d, $0052 + dw $0e4e, $0053 + dw $0e4f, $0054 + dw $0e50, $0055 + dw $0e51, $0056 + dw $0000 ; get deck name from the user into de. ; function description is similar to the player's. @@ -2352,18 +2380,23 @@ InputDeckName: ; 1ad89 (6:6d89) ld [wTileMapFill], a call EmptyScreen call ZeroObjectPositions + ld a, $01 ld [wVBlankOAMCopyToggle], a call LoadSymbolsFont + lb de, $38, $bf call SetupText call FillVramWith0xF0 + xor a ld [wd009], a call Func_006_6e99 + xor a ld [wNamingScreenCursorX], a ld [wNamingScreenCursorY], a + ld a, $09 ld [wd005], a ld a, $07 @@ -2376,51 +2409,65 @@ InputDeckName: ; 1ad89 (6:6d89) ld a, $01 ld [wVBlankOAMCopyToggle], a call DoFrame + call UpdateRNGSources + ldh a, [hDPadHeld] and START jr z, .on_start + ld a, $01 call PlaySFXByA call Func_006_6fa1 + ld a, 6 ld [wNamingScreenCursorX], a ld [wNamingScreenCursorY], a call Func_006_6fbd + jr .loop .on_start call Func_006_6efb jr nc, .loop + cp $ff jr z, .asm_006_6e1c + call Func_006_6ec3 jr nc, .loop + call FinalizeInputName + ld hl, wNamingScreenDestPointer ld a, [hli] ld h, [hl] ld l, a inc hl + ld a, [hl] or a - jr nz, .asm_006_6e1b + jr nz, .return + dec hl ld [hl], TX_END -.asm_006_6e1b +.return ret .asm_006_6e1c ld a, [wNamingScreenBufferLength] cp $02 jr c, .loop + ld e, a ld d, 0 ld hl, wNamingScreenBuffer add hl, de dec hl ld [hl], TX_END + ld hl, wNamingScreenBufferLength dec [hl] call ProcessTextWithUnderbar + jp .loop ; fill v0Tiles0 for 0x10 tiles @@ -2428,7 +2475,7 @@ InputDeckName: ; 1ad89 (6:6d89) FillVramWith0xF0: ld hl, v0Tiles0 ld de, .data - ld b, $00 + ld b, 0 .asm_006_6e3f ld a, $10 cp b @@ -2443,6 +2490,7 @@ rept $10 db $f0 endr +; it's only for naming the deck. ProcessTextWithUnderbar: ld hl, wNamingScreenNamePosition ld d, [hl] @@ -2451,31 +2499,32 @@ ProcessTextWithUnderbar: call InitTextPrinting ld hl, .underbar_data ld de, wDefaultText -.asm_006_6e68 +.loop ; copy the underbar string. ld a, [hli] ld [de], a inc de or a - jr nz, .asm_006_6e68 + jr nz, .loop + ld hl, wNamingScreenBuffer ld de, wDefaultText -.asm_006_6e74 +.loop2 ; copy the input from the user. ld a, [hli] or a - jr z, .asm_006_6e7c + jr z, .print_name ld [de], a inc de - jr .asm_006_6e74 -.asm_006_6e7c + jr .loop2 +.print_name ld hl, wDefaultText call ProcessText ret .underbar_data - db $06 -rept $14 + db TX_HALFWIDTH +rept MAX_DECK_NAME_LENGTH db "_" endr - db $00 + db TX_END Func_006_6e99: call DrawTextboxForKeyboard @@ -2507,7 +2556,7 @@ Func_006_6ec3: ld h, a ld a, [wNamingScreenCursorY] ld l, a - call Func_006_7000 + call GetCharInfoFromPos_Deck inc hl inc hl ld a, [hl] @@ -2532,11 +2581,11 @@ Func_006_6ec3: inc [hl] ld hl, wNamingScreenBuffer .asm_006_6eef - ld b, $00 + ld b, 0 add hl, bc ld [hl], d inc hl - ld [hl], $00 + ld [hl], TX_END call ProcessTextWithUnderbar or a ret @@ -2599,7 +2648,7 @@ Func_006_6efb: ld h, a .asm_006_6f4f push hl - call Func_006_7000 + call GetCharInfoFromPos_Deck inc hl inc hl ld d, [hl] @@ -2655,7 +2704,7 @@ Func_006_6fa1: ld h, a ld a, [wNamingScreenCursorY] ld l, a - call Func_006_7000 + call GetCharInfoFromPos_Deck ld a, [hli] ld c, a ld b, [hl] @@ -2714,7 +2763,14 @@ Func_006_6fc2: pop af ret -Func_006_7000: +; given the cursor position, +; returns the character information which the cursor directs. +; it's similar to "GetCharInfoFromPos_Player", +; but the data structure is different in its unit size. +; its unit size is 3, and player's is 6. +; h: x +; l: y +GetCharInfoFromPos_Deck: push de ld e, l ld d, h @@ -2723,20 +2779,21 @@ Func_006_7000: call HtimesL ld a, l add e - ld hl, Unknown_006_7019 + ; x * h + y + ld hl, KeyboardData_Deck pop de or a ret z -.asm_006_7012 +.loop inc hl inc hl inc hl dec a - jr nz, .asm_006_7012 + jr nz, .loop ret ; a bunch of data -Unknown_006_7019: ; (6:7019) +KeyboardData_Deck: ; (6:7019) INCROM $1b019, $1b8e8 INCROM $1b8e8, $1ba12 -- cgit v1.2.3