pokecrystal/engine/events/print_unown_2.asm

112 lines
1.3 KiB
NASM
Raw Normal View History

2018-06-24 14:09:41 +00:00
RotateUnownFrontpic:
; something to do with Unown printer
push de
2020-04-17 14:52:59 +00:00
xor a ; BANK(sScratch)
call OpenSRAM
ld hl, sScratch
ld bc, 0
.loop
push bc
push hl
push bc
ld de, wd002
call .Copy
call .Rotate
ld hl, UnownPrinter_GBPrinterRectangle
pop bc
add hl, bc
add hl, bc
ld a, [hli]
ld e, a
ld d, [hl]
ld hl, wd012
call .Copy
pop hl
ld bc, $10
add hl, bc
pop bc
inc c
ld a, c
cp 7 * 7
jr c, .loop
ld hl, wGameboyPrinter2bppSource
ld de, sScratch
ld bc, 7 * 7 tiles
call CopyBytes
pop hl
ld de, sScratch
ld c, 7 * 7
ldh a, [hROMBank]
ld b, a
call Get2bpp
call CloseSRAM
ret
2018-06-24 14:09:41 +00:00
.Copy:
ld c, $10
.loop_copy
ld a, [hli]
ld [de], a
inc de
dec c
jr nz, .loop_copy
ret
2018-06-24 14:09:41 +00:00
.Rotate:
ld hl, wd012
ld e, %10000000
ld d, 8
.loop_decompress
push hl
ld hl, wd002
call .CountSetBit
pop hl
ld a, b
ld [hli], a
push hl
ld hl, wd003
call .CountSetBit
pop hl
ld a, b
ld [hli], a
srl e
dec d
jr nz, .loop_decompress
ret
2018-06-24 14:09:41 +00:00
.CountSetBit:
ld b, 0
ld c, 8
.loop_count
ld a, [hli]
and e
jr z, .clear
scf
jr .apply
.clear
and a
.apply
rr b
inc hl
dec c
jr nz, .loop_count
ret
gbprinterrect: MACRO
y = 0
rept \1
x = \1 * (\2 - 1) + y
rept \2
dw wGameboyPrinter2bppSource tile x
x = x - \2
endr
y = y + 1
endr
2017-12-28 21:31:16 +00:00
ENDM
2018-06-24 14:09:41 +00:00
UnownPrinter_GBPrinterRectangle:
gbprinterrect 7, 7