shithub: pokecrystal

Download patch

ref: 2c16bc7ab9df0b341406e108ac44c09cf403f9b4
parent: 04da88a285b0d43192db4ecd5d49d86e5bfeaea3
author: yenatch <[email protected]>
date: Thu Aug 29 15:39:21 EDT 2013

move copy asm from main.asm to engine/copy.asm

--- /dev/null
+++ b/engine/copy.asm
@@ -1,0 +1,431 @@
+; Functions to copy data from ROM.
+
+
+Functiondc9: ; dc9
+	ld a, [rLCDC]
+	bit 7, a
+	jp z, Copy2bpp
+
+	ld a, [hROMBank]
+	push af
+	ld a, BANK(Function104284)
+	rst Bankswitch
+	call Function104284
+	pop af
+	rst Bankswitch
+
+	ret
+; ddc
+
+Functionddc: ; ddc
+	ld a, [rLCDC]
+	bit 7, a
+	jp z, Copy1bpp
+
+	ld a, [hROMBank]
+	push af
+	ld a, BANK(Function1042b2)
+	rst Bankswitch
+	call Function1042b2
+	pop af
+	rst Bankswitch
+
+	ret
+; def
+
+Functiondef: ; def
+	ld [hBuffer], a
+	ld a, [hROMBank]
+	push af
+	ld a, [hBuffer]
+	rst Bankswitch
+	call FarCopyBytesDouble
+	pop af
+	rst Bankswitch
+	ret
+; dfd
+
+Functiondfd: ; dfd
+	dec c
+	ld a, [hBGMapMode]
+	push af
+	xor a
+	ld [hBGMapMode], a
+	ld a, [hROMBank]
+	push af
+	ld a, b
+	rst Bankswitch
+
+.asm_e09
+	ld a, d
+	ld [rHDMA1], a
+	ld a, e
+	and $f0
+	ld [rHDMA2], a
+	ld a, h
+	and $1f
+	ld [rHDMA3], a
+	ld a, l
+	and $f0
+	ld [rHDMA4], a
+	ld a, c
+	cp $8
+	jr c, .asm_e3c
+	sub $8
+	ld c, a
+	ld a, $f
+	ld [hDMATransfer], a
+	call DelayFrame
+	ld a, l
+	add $0
+	ld l, a
+	ld a, h
+	adc $1
+	ld h, a
+	ld a, e
+	add $0
+	ld e, a
+	ld a, d
+	adc $1
+	ld d, a
+	jr .asm_e09
+
+.asm_e3c
+	ld a, c
+	and $7f
+	ld [hDMATransfer], a
+	call DelayFrame
+	pop af
+	rst Bankswitch
+
+	pop af
+	ld [hBGMapMode], a
+	ret
+; e4a
+
+
+
+Functione4a: ; e4a
+	ld a, $5
+	ld hl, $4135
+	rst FarCall
+	ret
+; e51
+
+
+
+Functione51: ; e51
+	ld a, $3e
+	ld hl, $7449
+	rst FarCall
+	ret
+; e58
+
+Functione58: ; e58
+	ld a, $3e
+	ld hl, $74be
+	rst FarCall
+	ret
+; e5f
+
+
+
+Functione5f: ; e5f
+	ld a, $3e
+	ld hl, $748a
+	rst FarCall
+	ld a, $3e
+	ld hl, $74b0
+	rst FarCall
+	ret
+; e6c
+
+Functione6c: ; e6c
+	ld a, $3e
+	ld hl, $74b0
+	rst FarCall
+	ret
+; e73
+
+Functione73: ; e73
+	push de
+	ld a, $0
+	call GetSRAMBank
+	push bc
+	ld de, $a000
+	ld a, b
+	call FarDecompress
+	pop bc
+	pop hl
+	ld de, $a000
+	call Request2bpp
+	call CloseSRAM
+	ret
+; e8d
+
+
+
+FarCopyBytes: ; e8d
+; copy bc bytes from a:hl to de
+
+	ld [hBuffer], a
+	ld a, [hROMBank]
+	push af
+	ld a, [hBuffer]
+	rst Bankswitch
+
+	call CopyBytes
+
+	pop af
+	rst Bankswitch
+	ret
+; 0xe9b
+
+
+FarCopyBytesDouble: ; e9b
+; Copy bc bytes from a:hl to bc*2 bytes at de,
+; doubling each byte in the process.
+
+	ld [hBuffer], a
+	ld a, [hROMBank]
+	push af
+	ld a, [hBuffer]
+	rst Bankswitch
+
+; switcheroo, de <> hl
+	ld a, h
+	ld h, d
+	ld d, a
+	ld a, l
+	ld l, e
+	ld e, a
+
+	inc b
+	inc c
+	jr .dec
+
+.loop
+	ld a, [de]
+	inc de
+	ld [hli], a
+	ld [hli], a
+.dec
+	dec c
+	jr nz, .loop
+	dec b
+	jr nz, .loop
+
+	pop af
+	rst Bankswitch
+	ret
+; 0xeba
+
+
+Request2bpp: ; eba
+	ld a, [hBGMapMode]
+	push af
+	xor a
+	ld [hBGMapMode], a
+
+	ld a, [hROMBank]
+	push af
+	ld a, b
+	rst Bankswitch
+
+	ld a, [$ffd3]
+	push af
+
+	ld a, $8
+	ld [$ffd3], a
+	ld a, [InLinkBattle]
+	cp $4
+	jr nz, .asm_edc
+	ld a, [$ffe9]
+	and a
+	jr nz, .asm_edc
+	ld a, $6
+	ld [$ffd3], a
+
+.asm_edc
+	ld a, e
+	ld [$cf68], a
+	ld a, d
+	ld [$cf69], a
+	ld a, l
+	ld [$cf6a], a
+	ld a, h
+	ld [$cf6b], a
+
+.asm_eec
+	ld a, c
+	ld hl, $ffd3
+	cp [hl]
+	jr nc, .asm_f08
+
+	ld [$cf67], a
+.wait
+	call DelayFrame
+	ld a, [$cf67]
+	and a
+	jr nz, .wait
+
+	pop af
+	ld [$ffd3], a
+
+	pop af
+	rst Bankswitch
+
+	pop af
+	ld [hBGMapMode], a
+	ret
+
+.asm_f08
+	ld a, [$ffd3]
+	ld [$cf67], a
+.asm_f0d
+	call DelayFrame
+	ld a, [$cf67]
+	and a
+	jr nz, .asm_f0d
+	ld a, c
+	ld hl, $ffd3
+	sub [hl]
+	ld c, a
+	jr .asm_eec
+; f1e
+
+
+Request1bpp: ; f1e
+	ld a, [hBGMapMode]
+	push af
+	xor a
+	ld [hBGMapMode], a
+
+	ld a, [hROMBank]
+	push af
+	ld a, b
+	rst Bankswitch
+
+	ld a, [$ffd3]
+	push af
+
+	ld a, $8
+	ld [$ffd3], a
+	ld a, [InLinkBattle]
+	cp $4
+	jr nz, .asm_f40
+	ld a, [$ffe9]
+	and a
+	jr nz, .asm_f40
+	ld a, $6
+	ld [$ffd3], a
+
+.asm_f40
+	ld a, e
+	ld [$cf6d], a
+	ld a, d
+	ld [$cf6e], a
+	ld a, l
+	ld [$cf6f], a
+	ld a, h
+	ld [$cf70], a
+.asm_f50
+	ld a, c
+	ld hl, $ffd3
+	cp [hl]
+	jr nc, .asm_f6c
+
+	ld [$cf6c], a
+.wait
+	call DelayFrame
+	ld a, [$cf6c]
+	and a
+	jr nz, .wait
+
+	pop af
+	ld [$ffd3], a
+
+	pop af
+	rst Bankswitch
+
+	pop af
+	ld [hBGMapMode], a
+	ret
+
+.asm_f6c
+	ld a, [$ffd3]
+	ld [$cf6c], a
+.asm_f71
+	call DelayFrame
+	ld a, [$cf6c]
+	and a
+	jr nz, .asm_f71
+	ld a, c
+	ld hl, $ffd3
+	sub [hl]
+	ld c, a
+	jr .asm_f50
+; f82
+
+
+Get2bpp: ; f82
+	ld a, [rLCDC]
+	bit 7, a
+	jp nz, Request2bpp
+
+Copy2bpp: ; f89
+; copy c 2bpp tiles from b:de to hl
+
+	push hl
+	ld h, d
+	ld l, e
+	pop de
+
+; bank
+	ld a, b
+
+; bc = c * $10
+	push af
+	swap c
+	ld a, $f
+	and c
+	ld b, a
+	ld a, $f0
+	and c
+	ld c, a
+	pop af
+
+	jp FarCopyBytes
+; f9d
+
+
+Get1bpp: ; f9d
+	ld a, [rLCDC]
+	bit 7, a
+	jp nz, Request1bpp
+
+Copy1bpp: ; fa4
+; copy c 1bpp tiles from b:de to hl
+
+	push de
+	ld d, h
+	ld e, l
+
+; bank
+	ld a, b
+
+; bc = c * $10 / 2
+	push af
+	ld h, 0
+	ld l, c
+	add hl, hl
+	add hl, hl
+	add hl, hl
+	ld b, h
+	ld c, l
+	pop af
+
+	pop hl
+	jp FarCopyBytesDouble
+; fb6
+
--- a/main.asm
+++ b/main.asm
@@ -134,433 +134,7 @@
 INCLUDE "engine/palettes.asm"
 
 
-Functiondc9: ; dc9
-	ld a, [rLCDC]
-	bit 7, a
-	jp z, Copy2bpp
-
-	ld a, [hROMBank]
-	push af
-	ld a, BANK(Function104284)
-	rst Bankswitch
-	call Function104284
-	pop af
-	rst Bankswitch
-
-	ret
-; ddc
-
-Functionddc: ; ddc
-	ld a, [rLCDC]
-	bit 7, a
-	jp z, Copy1bpp
-
-	ld a, [hROMBank]
-	push af
-	ld a, BANK(Function1042b2)
-	rst Bankswitch
-	call Function1042b2
-	pop af
-	rst Bankswitch
-
-	ret
-; def
-
-Functiondef: ; def
-	ld [hBuffer], a
-	ld a, [hROMBank]
-	push af
-	ld a, [hBuffer]
-	rst Bankswitch
-	call FarCopyBytesDouble
-	pop af
-	rst Bankswitch
-	ret
-; dfd
-
-Functiondfd: ; dfd
-	dec c
-	ld a, [hBGMapMode]
-	push af
-	xor a
-	ld [hBGMapMode], a
-	ld a, [hROMBank]
-	push af
-	ld a, b
-	rst Bankswitch
-
-.asm_e09
-	ld a, d
-	ld [rHDMA1], a
-	ld a, e
-	and $f0
-	ld [rHDMA2], a
-	ld a, h
-	and $1f
-	ld [rHDMA3], a
-	ld a, l
-	and $f0
-	ld [rHDMA4], a
-	ld a, c
-	cp $8
-	jr c, .asm_e3c
-	sub $8
-	ld c, a
-	ld a, $f
-	ld [hDMATransfer], a
-	call DelayFrame
-	ld a, l
-	add $0
-	ld l, a
-	ld a, h
-	adc $1
-	ld h, a
-	ld a, e
-	add $0
-	ld e, a
-	ld a, d
-	adc $1
-	ld d, a
-	jr .asm_e09
-
-.asm_e3c
-	ld a, c
-	and $7f
-	ld [hDMATransfer], a
-	call DelayFrame
-	pop af
-	rst Bankswitch
-
-	pop af
-	ld [hBGMapMode], a
-	ret
-; e4a
-
-
-
-Functione4a: ; e4a
-	ld a, $5
-	ld hl, $4135
-	rst FarCall
-	ret
-; e51
-
-
-
-Functione51: ; e51
-	ld a, $3e
-	ld hl, $7449
-	rst FarCall
-	ret
-; e58
-
-Functione58: ; e58
-	ld a, $3e
-	ld hl, $74be
-	rst FarCall
-	ret
-; e5f
-
-
-
-Functione5f: ; e5f
-	ld a, $3e
-	ld hl, $748a
-	rst FarCall
-	ld a, $3e
-	ld hl, $74b0
-	rst FarCall
-	ret
-; e6c
-
-Functione6c: ; e6c
-	ld a, $3e
-	ld hl, $74b0
-	rst FarCall
-	ret
-; e73
-
-Functione73: ; e73
-	push de
-	ld a, $0
-	call GetSRAMBank
-	push bc
-	ld de, $a000
-	ld a, b
-	call FarDecompress
-	pop bc
-	pop hl
-	ld de, $a000
-	call Request2bpp
-	call CloseSRAM
-	ret
-; e8d
-
-
-
-FarCopyBytes: ; e8d
-; copy bc bytes from a:hl to de
-
-	ld [hBuffer], a
-	ld a, [hROMBank]
-	push af
-	ld a, [hBuffer]
-	rst Bankswitch
-
-	call CopyBytes
-
-	pop af
-	rst Bankswitch
-	ret
-; 0xe9b
-
-
-FarCopyBytesDouble: ; e9b
-; Copy bc bytes from a:hl to bc*2 bytes at de,
-; doubling each byte in the process.
-
-	ld [hBuffer], a
-	ld a, [hROMBank]
-	push af
-	ld a, [hBuffer]
-	rst Bankswitch
-
-; switcheroo, de <> hl
-	ld a, h
-	ld h, d
-	ld d, a
-	ld a, l
-	ld l, e
-	ld e, a
-
-	inc b
-	inc c
-	jr .dec
-
-.loop
-	ld a, [de]
-	inc de
-	ld [hli], a
-	ld [hli], a
-.dec
-	dec c
-	jr nz, .loop
-	dec b
-	jr nz, .loop
-
-	pop af
-	rst Bankswitch
-	ret
-; 0xeba
-
-
-Request2bpp: ; eba
-	ld a, [hBGMapMode]
-	push af
-	xor a
-	ld [hBGMapMode], a
-
-	ld a, [hROMBank]
-	push af
-	ld a, b
-	rst Bankswitch
-
-	ld a, [$ffd3]
-	push af
-
-	ld a, $8
-	ld [$ffd3], a
-	ld a, [InLinkBattle]
-	cp $4
-	jr nz, .asm_edc
-	ld a, [$ffe9]
-	and a
-	jr nz, .asm_edc
-	ld a, $6
-	ld [$ffd3], a
-
-.asm_edc
-	ld a, e
-	ld [$cf68], a
-	ld a, d
-	ld [$cf69], a
-	ld a, l
-	ld [$cf6a], a
-	ld a, h
-	ld [$cf6b], a
-
-.asm_eec
-	ld a, c
-	ld hl, $ffd3
-	cp [hl]
-	jr nc, .asm_f08
-
-	ld [$cf67], a
-.wait
-	call DelayFrame
-	ld a, [$cf67]
-	and a
-	jr nz, .wait
-
-	pop af
-	ld [$ffd3], a
-
-	pop af
-	rst Bankswitch
-
-	pop af
-	ld [hBGMapMode], a
-	ret
-
-.asm_f08
-	ld a, [$ffd3]
-	ld [$cf67], a
-.asm_f0d
-	call DelayFrame
-	ld a, [$cf67]
-	and a
-	jr nz, .asm_f0d
-	ld a, c
-	ld hl, $ffd3
-	sub [hl]
-	ld c, a
-	jr .asm_eec
-; f1e
-
-
-Request1bpp: ; f1e
-	ld a, [hBGMapMode]
-	push af
-	xor a
-	ld [hBGMapMode], a
-
-	ld a, [hROMBank]
-	push af
-	ld a, b
-	rst Bankswitch
-
-	ld a, [$ffd3]
-	push af
-
-	ld a, $8
-	ld [$ffd3], a
-	ld a, [InLinkBattle]
-	cp $4
-	jr nz, .asm_f40
-	ld a, [$ffe9]
-	and a
-	jr nz, .asm_f40
-	ld a, $6
-	ld [$ffd3], a
-
-.asm_f40
-	ld a, e
-	ld [$cf6d], a
-	ld a, d
-	ld [$cf6e], a
-	ld a, l
-	ld [$cf6f], a
-	ld a, h
-	ld [$cf70], a
-.asm_f50
-	ld a, c
-	ld hl, $ffd3
-	cp [hl]
-	jr nc, .asm_f6c
-
-	ld [$cf6c], a
-.wait
-	call DelayFrame
-	ld a, [$cf6c]
-	and a
-	jr nz, .wait
-
-	pop af
-	ld [$ffd3], a
-
-	pop af
-	rst Bankswitch
-
-	pop af
-	ld [hBGMapMode], a
-	ret
-
-.asm_f6c
-	ld a, [$ffd3]
-	ld [$cf6c], a
-.asm_f71
-	call DelayFrame
-	ld a, [$cf6c]
-	and a
-	jr nz, .asm_f71
-	ld a, c
-	ld hl, $ffd3
-	sub [hl]
-	ld c, a
-	jr .asm_f50
-; f82
-
-
-Get2bpp: ; f82
-	ld a, [rLCDC]
-	bit 7, a
-	jp nz, Request2bpp
-
-Copy2bpp: ; f89
-; copy c 2bpp tiles from b:de to hl
-
-	push hl
-	ld h, d
-	ld l, e
-	pop de
-
-; bank
-	ld a, b
-
-; bc = c * $10
-	push af
-	swap c
-	ld a, $f
-	and c
-	ld b, a
-	ld a, $f0
-	and c
-	ld c, a
-	pop af
-
-	jp FarCopyBytes
-; f9d
-
-
-Get1bpp: ; f9d
-	ld a, [rLCDC]
-	bit 7, a
-	jp nz, Request1bpp
-
-Copy1bpp: ; fa4
-; copy c 1bpp tiles from b:de to hl
-
-	push de
-	ld d, h
-	ld e, l
-
-; bank
-	ld a, b
-
-; bc = c * $10 / 2
-	push af
-	ld h, 0
-	ld l, c
-	add hl, hl
-	add hl, hl
-	add hl, hl
-	ld b, h
-	ld c, l
-	pop af
-
-	pop hl
-	jp FarCopyBytesDouble
-; fb6
+INCLUDE "engine/copy.asm"
 
 
 INCLUDE "engine/text.asm"