shithub: pokecrystal

Download patch

ref: 5322b56a8357e5e5a8847f3329b52faa3f7016d8
parent: 33506f382a149067d3d37ded1cf01f7e291e92a6
author: PikalaxALT <PikalaxALT@gmail.com>
date: Thu Jan 28 19:57:06 EST 2016

Add more missing files

--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -1523,7 +1523,7 @@
 	dbw 72, .LetsAllSing
 	dbw 78, .PokeFluteRadio
 	dbw 80, .EvolutionRadio
-	db $ff
+	db -1
 
 .PkmnTalkAndPokedexShow
 ; Pokédex Show in the morning
--- /dev/null
+++ b/engine/pokepic.asm
@@ -1,0 +1,49 @@
+Pokepic:: ; 244e3
+	ld hl, PokepicMenuDataHeader
+	call CopyMenuDataHeader
+	call MenuBox
+	call UpdateSprites
+	call ApplyTilemap
+	ld b, SCGB_POKEPIC
+	call GetSGBLayout
+	xor a
+	ld [hBGMapMode], a
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call GetBaseData
+	ld de, VTiles1
+	predef GetFrontpic
+	ld a, [wMenuBorderTopCoord]
+	inc a
+	ld b, a
+	ld a, [wMenuBorderLeftCoord]
+	inc a
+	ld c, a
+	call Coord2Tile
+	ld a, $80
+	ld [hGraphicStartTile], a
+	lb bc, 7, 7
+	predef PlaceGraphic
+	call WaitBGMap
+	ret
+
+ClosePokepic:: ; 24528
+	ld hl, PokepicMenuDataHeader
+	call CopyMenuDataHeader
+	call ClearMenuBoxInterior
+	call WaitBGMap
+	call GetMemSGBLayout
+	xor a
+	ld [hBGMapMode], a
+	call OverworldTextModeSwitch
+	call ApplyTilemap
+	call UpdateSprites
+	call LoadStandardFont
+	ret
+
+PokepicMenuDataHeader: ; 0x24547
+	db $40 ; flags
+	db 04, 06 ; start coords
+	db 13, 14 ; end coords
+	dw NULL
+	db 1 ; default option
--- /dev/null
+++ b/gfx/load_pics.asm
@@ -1,0 +1,490 @@
+GetUnownLetter: ; 51040
+; Return Unown letter in UnownLetter based on DVs at hl
+
+; Take the middle 2 bits of each DV and place them in order:
+;	atk  def  spd  spc
+;	.ww..xx.  .yy..zz.
+
+	; atk
+	ld a, [hl]
+	and %01100000
+	sla a
+	ld b, a
+	; def
+	ld a, [hli]
+	and %00000110
+	swap a
+	srl a
+	or b
+	ld b, a
+
+	; spd
+	ld a, [hl]
+	and %01100000
+	swap a
+	sla a
+	or b
+	ld b, a
+	; spc
+	ld a, [hl]
+	and %00000110
+	srl a
+	or b
+
+; Divide by 10 to get 0-25
+	ld [hDividend + 3], a
+	xor a
+	ld [hDividend], a
+	ld [hDividend + 1], a
+	ld [hDividend + 2], a
+	ld a, 10
+	ld [hDivisor], a
+	ld b, 4
+	call Divide
+
+; Increment to get 1-26
+	ld a, [hQuotient + 2]
+	inc a
+	ld [UnownLetter], a
+	ret
+
+GetFrontpic: ; 51077
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call IsAPokemon
+	ret c
+	ld a, [rSVBK]
+	push af
+	call _GetFrontpic
+	pop af
+	ld [rSVBK], a
+	ret
+
+FrontpicPredef: ; 5108b
+	ld a, [CurPartySpecies]
+	ld [CurSpecies], a
+	call IsAPokemon
+	ret c
+	ld a, [rSVBK]
+	push af
+	xor a
+	ld [hBGMapMode], a
+	call _GetFrontpic
+	call Function51103
+	pop af
+	ld [rSVBK], a
+	ret
+
+_GetFrontpic: ; 510a5
+	push de
+	call GetBaseData
+	ld a, [BasePicSize]
+	and $f
+	ld b, a
+	push bc
+	call GetFrontpicPointer
+	ld a, $6
+	ld [rSVBK], a
+	ld a, b
+	ld de, wDecompressScratch + $800
+	call FarDecompress
+	pop bc
+	ld hl, wDecompressScratch
+	ld de, wDecompressScratch + $800
+	call Function512ab
+	pop hl
+	push hl
+	ld de, wDecompressScratch
+	ld c, 7 * 7
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop hl
+	ret
+
+GetFrontpicPointer: ; 510d7
+GLOBAL PicPointers, UnownPicPointers
+
+	ld a, [CurPartySpecies]
+	cp UNOWN
+	jr z, .unown
+	ld a, [CurPartySpecies]
+	ld d, BANK(PicPointers)
+	jr .ok
+
+.unown
+	ld a, [UnownLetter]
+	ld d, BANK(UnownPicPointers)
+
+.ok
+	ld hl, PicPointers ; UnownPicPointers
+	dec a
+	ld bc, 6
+	call AddNTimes
+	ld a, d
+	call GetFarByte
+	call FixPicBank
+	push af
+	inc hl
+	ld a, d
+	call GetFarHalfword
+	pop bc
+	ret
+
+Function51103: ; 51103
+	ld a, $1
+	ld [rVBK], a
+	push hl
+	ld de, wDecompressScratch
+	ld c, 7 * 7
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop hl
+	ld de, 7 * 7 tiles
+	add hl, de
+	push hl
+	ld a, $1
+	ld hl, BasePicSize
+	call GetFarWRAMByte
+	pop hl
+	and $f
+	ld de, w6_d800 + 5 * 5 tiles
+	ld c, 5 * 5
+	cp 5
+	jr z, .got_dims
+	ld de, w6_d800 + 6 * 6 tiles
+	ld c, 6 * 6
+	cp 6
+	jr z, .got_dims
+	ld de, w6_d800 + 7 * 7 tiles
+	ld c, 7 * 7
+.got_dims
+
+	push hl
+	push bc
+	call Function5114f
+	pop bc
+	pop hl
+	ld de, wDecompressScratch
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	xor a
+	ld [rVBK], a
+	ret
+
+Function5114f: ; 5114f
+	ld hl, wDecompressScratch
+	swap c
+	ld a, c
+	and $f
+	ld b, a
+	ld a, c
+	and $f0
+	ld c, a
+	push bc
+	call LoadFrontpic
+	pop bc
+.asm_51161
+	push bc
+	ld c, $0
+	call LoadFrontpic
+	pop bc
+	dec b
+	jr nz, .asm_51161
+	ret
+
+GetBackpic: ; 5116c
+	ld a, [CurPartySpecies]
+	call IsAPokemon
+	ret c
+
+	ld a, [CurPartySpecies]
+	ld b, a
+	ld a, [UnownLetter]
+	ld c, a
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	push de
+
+	; These are assumed to be at the same
+	; address in their respective banks.
+	GLOBAL PicPointers,  UnownPicPointers
+	ld hl, PicPointers ; UnownPicPointers
+	ld a, b
+	ld d, BANK(PicPointers)
+	cp UNOWN
+	jr nz, .ok
+	ld a, c
+	ld d, BANK(UnownPicPointers)
+.ok
+	dec a
+	ld bc, 6
+	call AddNTimes
+	ld bc, 3
+	add hl, bc
+	ld a, d
+	call GetFarByte
+	call FixPicBank
+	push af
+	inc hl
+	ld a, d
+	call GetFarHalfword
+	ld de, wDecompressScratch
+	pop af
+	call FarDecompress
+	ld hl, wDecompressScratch
+	ld c, 6 * 6
+	call FixBackpicAlignment
+	pop hl
+	ld de, wDecompressScratch
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop af
+	ld [rSVBK], a
+	ret
+
+FixPicBank: ; 511c5
+; This is a thing for some reason.
+	push hl
+	push bc
+	sub PICS_1 - PICS_FIX
+	ld c, a
+	ld b, 0
+	ld hl, .PicsBanks
+	add hl, bc
+	ld a, [hl]
+	pop bc
+	pop hl
+	ret
+
+.PicsBanks: ; 511d4
+	db PICS_1
+	db PICS_2
+	db PICS_3
+	db PICS_4
+	db PICS_5
+	db PICS_6
+	db PICS_7
+	db PICS_8
+	db PICS_9
+	db PICS_10
+	db PICS_11
+	db PICS_12
+	db PICS_13
+	db PICS_14
+	db PICS_15
+	db PICS_16
+	db PICS_17
+	db PICS_18
+	db PICS_19
+	db PICS_19 + 1
+	db PICS_19 + 2
+	db PICS_19 + 3
+	db PICS_19 + 4
+	db PICS_19 + 5
+
+Function511ec: ; 511ec
+	ld a, c
+	push de
+	ld hl, PicPointers
+	dec a
+	ld bc, 6
+	call AddNTimes
+	ld a, BANK(PicPointers)
+	call GetFarByte
+	call FixPicBank
+	push af
+	inc hl
+	ld a, BANK(PicPointers)
+	call GetFarHalfword
+	pop af
+	pop de
+	call FarDecompress
+	ret
+
+GetTrainerPic: ; 5120d
+	ld a, [TrainerClass]
+	and a
+	ret z
+	cp NUM_TRAINER_CLASSES
+	ret nc
+	call WaitBGMap
+	xor a
+	ld [hBGMapMode], a
+	ld hl, TrainerPicPointers
+	ld a, [TrainerClass]
+	dec a
+	ld bc, 3
+	call AddNTimes
+	ld a, [rSVBK]
+	push af
+	ld a, $6
+	ld [rSVBK], a
+	push de
+	ld a, BANK(TrainerPicPointers)
+	call GetFarByte
+	call FixPicBank
+	push af
+	inc hl
+	ld a, BANK(TrainerPicPointers)
+	call GetFarHalfword
+	pop af
+	ld de, wDecompressScratch
+	call FarDecompress
+	pop hl
+	ld de, wDecompressScratch
+	ld c, 7 * 7
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+	pop af
+	ld [rSVBK], a
+	call WaitBGMap
+	ld a, $1
+	ld [hBGMapMode], a
+	ret
+
+DecompressPredef: ; 5125d
+; Decompress lz data from b:hl to scratch space at 6:d000, then copy it to address de.
+
+	ld a, [rSVBK]
+	push af
+	ld a, 6
+	ld [rSVBK], a
+
+	push de
+	push bc
+	ld a, b
+	ld de, wDecompressScratch
+	call FarDecompress
+	pop bc
+	ld de, wDecompressScratch
+	pop hl
+	ld a, [hROMBank]
+	ld b, a
+	call Get2bpp
+
+	pop af
+	ld [rSVBK], a
+	ret
+
+FixBackpicAlignment: ; 5127c
+	push de
+	push bc
+	ld a, [wBoxAlignment]
+	and a
+	jr z, .keep_dims
+	ld a, c
+	cp 7 * 7
+	ld de, 7 * 7 tiles
+	jr z, .got_dims
+	cp 6 * 6
+	ld de, 6 * 6 tiles
+	jr z, .got_dims
+	ld de, 5 * 5 tiles
+
+.got_dims
+	ld a, [hl]
+	ld b, $0
+	ld c, $8
+.loop
+	rra
+	rl b
+	dec c
+	jr nz, .loop
+	ld a, b
+	ld [hli], a
+	dec de
+	ld a, e
+	or d
+	jr nz, .got_dims
+
+.keep_dims
+	pop bc
+	pop de
+	ret
+
+Function512ab: ; 512ab
+	ld a, b
+	cp 6
+	jr z, .six
+	cp 5
+	jr z, .five
+
+.seven_loop
+	ld c, $70
+	call LoadFrontpic
+	dec b
+	jr nz, .seven_loop
+	ret
+
+.six
+	ld c, $70
+	xor a
+	call .Fill
+.six_loop
+	ld c, $10
+	xor a
+	call .Fill
+	ld c, $60
+	call LoadFrontpic
+	dec b
+	jr nz, .six_loop
+	ret
+
+.five
+	ld c, $70
+	xor a
+	call .Fill
+.five_loop
+	ld c, $20
+	xor a
+	call .Fill
+	ld c, $50
+	call LoadFrontpic
+	dec b
+	jr nz, .five_loop
+	ld c, $70
+	xor a
+	call .Fill
+	ret
+
+.Fill
+	ld [hli], a
+	dec c
+	jr nz, .Fill
+	ret
+
+LoadFrontpic: ; 512f2
+	ld a, [wBoxAlignment]
+	and a
+	jr nz, .x_flip
+.left_loop
+	ld a, [de]
+	inc de
+	ld [hli], a
+	dec c
+	jr nz, .left_loop
+	ret
+
+.x_flip
+	push bc
+.right_loop
+	ld a, [de]
+	inc de
+	ld b, a
+	xor a
+	rept 8
+	rr b
+	rla
+	endr
+	ld [hli], a
+	dec c
+	jr nz, .right_loop
+	pop bc
+	ret
binary files a/unknown/1f0000.bin /dev/null differ