diff options
author | Rangi <remy.oukaour+rangi42@gmail.com> | 2020-09-15 01:03:22 -0400 |
---|---|---|
committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2020-09-15 01:03:22 -0400 |
commit | cfa63ef5e073da0d3eb6964917665f7e948c0313 (patch) | |
tree | 76d369cc78ba71fa480a84fd8b13c7859e7c0628 | |
parent | c7214f432ab85fcfc4b11319007c039ff15c126c (diff) |
Disassemble more bank0 functions
-rw-r--r-- | shim.sym | 7 | ||||
-rw-r--r-- | source/bank_00.asm | 251 |
2 files changed, 257 insertions, 1 deletions
@@ -10,6 +10,7 @@ 00:162f lcd_function_a 00:1776 lcd_function_b +00:0bc0 function_00_0bc0 00:0df5 function_00_0df5 00:0ecf function_00_0ecf 00:0f20 function_00_0f20 @@ -94,8 +95,12 @@ 00:c317 w_farcall_target ; dw 00:c317 w_farcall_target_low 00:c318 w_farcall_target_high +00:c319 w_c319 ; dw +00:c31b w_c31b ; db +00:c31c w_c31c ; dw 00:c31e w_bank_temp ; db +00:c100 w_c100 00:c300 w_c300 00:c301 w_c301 00:c314 w_c314 @@ -210,6 +215,8 @@ 01:d6c9 w_d6c9 01:d6ca w_d6ca 01:dbe4 w_dbe4 ; db +01:dbee w_dbee ; dw +01:dbf0 w_dbf0 ; db/dw 01:df3f w_df3f ; ds 3 01:df47 w_df47 01:df62 w_df62 diff --git a/source/bank_00.asm b/source/bank_00.asm index 480704c..b28da3f 100644 --- a/source/bank_00.asm +++ b/source/bank_00.asm @@ -1466,6 +1466,255 @@ vwf_pixel_masks_left: vwf_data_00_0a35: ; ??? db $00, $00, $68, $01, $d0, $02, $38, $04, $a0, $05, $08, $07, $70, $08, $d8, $09, $40, $0b, $a8, $0c, $fa, $57, $c3, $a7, $c8, $f0, $00, $f6, $30, $e0, $00, $f0, $4d, $3e, $01, $e0, $4d, $10, $6f +function_00_0a5c:: + ret + +function_00_0a5d:: + push af + push hl + ld hl, sp + 4 + ld a, [hl] + ld [w_bank_rom], a + ld [rROMB0], a + pop hl + pop af + inc sp + inc sp + ret + +function_00_0a6d:: + ld [w_bank_temp], a + ld16 w_farcall_target, hl + pop hl + ld16 w_c319, hl + pop hl + pop af + ld [w_c31b], a + ld a, l + ld [w_c31c + 0], a + ld a, h + ld [w_c31c + 1], a + ld hl, w_c319 + ld a, [hl+] + ld h, [hl] + ld l, a + push hl + ld hl, w_c31c + ld a, [hl+] + ld h, [hl] + ld l, a + ld a, [w_c31b] + push af + push af + push af + push af + push hl + ld hl, sp + 4 + ld a, [w_farcall_target + 0] + ld [hl+], a + ld a, [w_farcall_target + 1] + ld [hl+], a + ld a, LOW(function_00_0a5d) + ld [hl+], a + ld a, HIGH(function_00_0a5d) + ld [hl+], a + ld a, [w_bank_rom] + ld [hl], a + ld a, [w_bank_temp] + ld [w_bank_rom], a + ld [rROMB0], a + pop hl + pop af + ret + +string_print_dark_function_00_0ac3:: + ld a, [w_bank_rom] + push af + ld a, $02 ; BANK(???) + ld [w_bank_rom], a + ld [rROMB0], a + + ; Get text coordinates + ld a, [w_text_pos_x] + ld b, a + ld a, [w_text_pos_y] + ld c, a + +.string_loop + ld a, [hl+] + ld e, a + ld a, [hl+] + ld d, a + and e + cp TX_END + jr z, .done + + push bc + push hl + call text_draw_char_dark + pop hl + pop bc + + ; Leave one pixel between each character + add b + inc a + ld b, a + jr .string_loop + +.done + pop af + ld [w_bank_rom], a + ld [rROMB0], a + ret + +function_00_0af4:: + push de + ld b, 0 + ld a, d + cpl + ld d, a + ld a, e + cpl + ld e, a + inc de +.loop + add hl, de + inc b + bit 7, h + jr z, .loop + dec b + pop de + add hl, de + ld a, l + ret + +function_00_0b09: + push af + ld a, b + cp $01 + jr c, .done + jr nz, .continue + ld a, c + and a + jr nz, .continue +.done + pop af + call function_00_0b2e + ret + +.continue + pop af + push af + push bc + push hl + ld bc, $0100 + call function_00_0b2e + pop hl + ld bc, $0100 + add hl, bc + pop bc + dec b + pop af + jr function_00_0b09 + +function_00_0b2e:: + push af + push bc + push de + ld de, w_c100 + call mem_copy + pop de + pop bc + pop af + ld l, a + ld a, [w_c316] + push af + ld a, l + ld [w_c316], a + ld [rRAMB], a + ld hl, w_c100 + call mem_copy + pop af + ld [w_c316], a + ld [rRAMB], a + ret + +function_00_0b54:: + ld [w_bank_temp], a + ld a, [w_bank_rom] + push af + ld a, [w_bank_temp] + ld [w_bank_rom], a + ld [rROMB0], a + + ld a, [w_c357] + and a + jp nz, .jump_000_0b84 + ld bc, $800 +.loop + inc hl + ld a, [hl+] + ld [de], a + inc de + ld a, [hl+] + ld [de], a + inc de + dec bc + dec bc + ld a, c + or b + jp nz, .loop + + pop af + ld [w_bank_rom], a + ld [rROMB0], a + ret + +.jump_000_0b84 + push hl + ld hl, w_dbee + ld a, e + ld [hl+], a + ld [hl], d + pop hl + push hl + ld hl, w_dbf0 + ld a, e + ld [hl+], a + ld [hl], d + pop hl + push hl + ld hl, w_dbe4 + ld a, c + ld [hl+], a + ld [hl], b + pop hl +.loop_000_0b9c + call function_00_0bc0 + ld de, 3 + add hl, de + push hl + ld hl, w_dbe4 + ld a, [hl+] + ld e, a + ld d, [hl] + pop hl + dec de + push hl + ld hl, w_dbe4 + ld a, e + ld [hl+], a + ld [hl], d + pop hl + ld a, d + or e + jr nz, .loop_000_0b9c + + pop af + ld [w_bank_rom], a + ld [rROMB0], a + ret + SECTION "farcall_a_hl", ROM0[$0d36] farcall_a_hl:: ld [w_bank_temp], a @@ -1910,7 +2159,7 @@ level_name_print:: and a jr z, .done - ; Get text cooredinates + ; Get text coordinates ld a, [w_text_pos_x] ld b, a inc hl |