diff options
Diffstat (limited to 'engine')
| -rwxr-xr-x | engine/compose_mail.asm | 498 | ||||
| -rwxr-xr-x | engine/link.asm | 8 | ||||
| -rwxr-xr-x | engine/mail.asm | 34 | ||||
| -rwxr-xr-x | engine/namingscreen.asm | 8 | ||||
| -rwxr-xr-x | engine/pokegear.asm | 4 | ||||
| -rwxr-xr-x | engine/slot_machine.asm | 6 | ||||
| -rwxr-xr-x | engine/sprites.asm | 2 | ||||
| -rwxr-xr-x | engine/startmenu.asm | 2 | 
8 files changed, 531 insertions, 31 deletions
| diff --git a/engine/compose_mail.asm b/engine/compose_mail.asm new file mode 100755 index 000000000..35990431e --- /dev/null +++ b/engine/compose_mail.asm @@ -0,0 +1,498 @@ +ComposeMailMessage: ; 11e75 (mail?) +	ld hl, wc6d0 +	ld [hl], e +	inc hl +	ld [hl], d +	ld a, [hMapAnims] +	push af +	xor a +	ld [hMapAnims], a +	ld a, [hInMenu] +	push af +	ld a, $1 +	ld [hInMenu], a +	call .InitBlankMail +	call DelayFrame + +.loop +	call .DoMailEntry +	jr nc, .loop + +	pop af +	ld [hInMenu], a +	pop af +	ld [hMapAnims], a +	ret + +.InitBlankMail: ; 11e9a (4:5e9a) +	call ClearBGPalettes +	call DisableLCD +	call Function11c51 +	ld de, VTiles0 tile $00 +	ld hl, .MailIcon +	ld bc, 8 tiles +	ld a, BANK(.MailIcon) +	call FarCopyBytes +	xor a +	ld hl, wc300 +	ld [hli], a +	ld [hl], a + +	; init mail icon +	depixel 3, 2 +	ld a, SPRITE_ANIM_INDEX_00 +	call _InitSpriteAnimStruct + +	ld hl, $2 +	add hl, bc +	ld [hl], $0 +	call .InitCharset +	ld a, $e3 +	ld [rLCDC], a +	call .initwc6d3 +	ld b, SCGB_08 +	call GetSGBLayout +	call WaitBGMap +	call WaitTop +	ld a, %11100100 +	call DmgToCgbBGPals +	ld a, %11100100 +	call Functioncf8 +	call Function11be0 +	ld hl, wc6d0 +	ld e, [hl] +	inc hl +	ld d, [hl] +	ld hl, $10 +	add hl, de +	ld [hl], $4e +	ret +; 11ef4 (4:5ef4) + +.MailIcon: ; 11ef4 +INCBIN "gfx/icon/mail2.2bpp" +; 11f74 + +.initwc6d3: ; 11f74 (4:5f74) +	ld a, $21 +	ld [wc6d3], a +	ret +; 11f7a (4:5f7a) + +.Dummy: ; dummied out +	db "メールを かいてね@" +; 11f84 + +.InitCharset: ; 11f84 (4:5f84) +	call WaitTop +	hlcoord 0, 0 +	ld bc, 6 * SCREEN_WIDTH +	ld a, $60 ; border +	call ByteFill +	hlcoord 0, 6 +	ld bc, 12 * SCREEN_WIDTH +	ld a, " " +	call ByteFill +	hlcoord 1, 1 +	lb bc, 4, SCREEN_WIDTH - 2 +	call ClearBox +	ld de, MailEntry_Uppercase + +.PlaceMailCharset: ; 11fa9 (4:5fa9) +	hlcoord 1, 7 +	ld b, 6 +.next +	ld c, SCREEN_WIDTH - 1 +.loop_ +	ld a, [de] +	ld [hli], a +	inc de +	dec c +	jr nz, .loop_ +	push de +	ld de, SCREEN_WIDTH + 1 +	add hl, de +	pop de +	dec b +	jr nz, .next +	ret + +.DoMailEntry: ; 11fc0 (4:5fc0) +	call JoyTextDelay +	ld a, [wJumptableIndex] +	bit 7, a +	jr nz, .exit_mail +	call .DoJumptable +	callba Function8cf62 +	call .Update +	call DelayFrame +	and a +	ret +.exit_mail +	callab Function8cf53 +	call ClearSprites +	xor a +	ld [hSCX], a +	ld [hSCY], a +	scf +	ret + +.Update: ; 11feb (4:5feb) +	xor a +	ld [hBGMapMode], a +	hlcoord 1, 1 +	lb bc, 4, 18 +	call ClearBox +	ld hl, wc6d0 +	ld e, [hl] +	inc hl +	ld d, [hl] +	hlcoord 2, 2 +	call PlaceString +	ld a, $1 +	ld [hBGMapMode], a +	ret + +.DoJumptable: ; 12008 (4:6008) +	ld a, [wJumptableIndex] +	ld e, a +	ld d, 0 +	ld hl, .Jumptable +rept 2 +	add hl, de +endr +	ld a, [hli] +	ld h, [hl] +	ld l, a +	jp [hl] + +.Jumptable: ; 12017 (4:6017) +	dw .init_blinking_cursor +	dw .process_joypad + + +.init_blinking_cursor: ; 1201b (4:601b) +	depixel 9, 2 +	ld a, SPRITE_ANIM_INDEX_09 +	call _InitSpriteAnimStruct +	ld a, c +	ld [wc6d5], a +	ld a, b +	ld [wc6d6], a +	ld hl, $1 +	add hl, bc +	ld a, [hl] +	ld hl, $e +	add hl, bc +	ld [hl], a +	ld hl, wJumptableIndex +	inc [hl] +	ret + +.process_joypad: ; 1203a (4:603a) +	ld hl, hJoyPressed ; $ffa7 +	ld a, [hl] +	and A_BUTTON +	jr nz, .a +	ld a, [hl] +	and B_BUTTON +	jr nz, .b +	ld a, [hl] +	and START +	jr nz, .start +	ld a, [hl] +	and SELECT +	jr nz, .select +	ret + +.a +	call Function12185 +	cp $1 +	jr z, .select +	cp $2 +	jr z, .b +	cp $3 +	jr z, .finished +	call Function11c11 +	call Function121ac +	jr c, .start +	ld hl, wc6d2 +	ld a, [hl] +	cp $10 +	ret nz +	inc [hl] +	call Function11bd0 +	ld [hl], $f2 +	dec hl +	ld [hl], $4e +	ret + +.start +	ld hl, wc6d5 +	ld c, [hl] +	inc hl +	ld b, [hl] +	ld hl, $c +	add hl, bc +	ld [hl], $9 +	ld hl, $d +	add hl, bc +	ld [hl], $5 +	ret + +.b +	call Function11bbc +	ld hl, wc6d2 +	ld a, [hl] +	cp $10 +	ret nz +	dec [hl] +	call Function11bd0 +	ld [hl], $f2 +	inc hl +	ld [hl], $4e +	ret + +.finished +	call Function11bf7 +	ld hl, wJumptableIndex +	set 7, [hl] +	ret + +.select +	ld hl, wcf64 +	ld a, [hl] +	xor $1 +	ld [hl], a +	jr nz, .switch_to_lowercase +	ld de, MailEntry_Uppercase +	call .PlaceMailCharset +	ret +.switch_to_lowercase +	ld de, MailEntry_Lowercase +	call .PlaceMailCharset +	ret + +Function120c1: ; 120c1 (4:60c1) +	call Function1210c +	ld hl, SpriteAnim1Sprite0d - SpriteAnim1 +	add hl, bc +	ld a, [hl] +	ld e, a +	swap e +	ld hl, SpriteAnim1YOffset - SpriteAnim1 +	add hl, bc +	ld [hl], e +	cp $5 +	ld de, Unknown_120f8 +	ld a, $0 +	jr nz, .asm_120df +	ld de, Unknown_12102 +	ld a, $1 +.asm_120df +	ld hl, SpriteAnim1Sprite0e - SpriteAnim1 +	add hl, bc +	add [hl] +	ld hl, SpriteAnim1Sprite01 - SpriteAnim1 +	add hl, bc +	ld [hl], a +	ld hl, SpriteAnim1Sprite0c - SpriteAnim1 +	add hl, bc +	ld l, [hl] +	ld h, SpriteAnim1Index - SpriteAnim1 +	add hl, de +	ld a, [hl] +	ld hl, SpriteAnim1XOffset - SpriteAnim1 +	add hl, bc +	ld [hl], a +	ret +; 120f8 (4:60f8) + +Unknown_120f8: ; 120f8 +	db $00, $10, $20, $30, $40, $50, $60, $70, $80, $90 +Unknown_12102: ; 12102 +	db $00, $00, $00, $30, $30, $30, $60, $60, $60, $60 +; 1210c + +Function1210c: ; 1210c (4:610c) +	ld hl, hJoyLast +	ld a, [hl] +	and D_UP +	jr nz, .up +	ld a, [hl] +	and D_DOWN +	jr nz, .down +	ld a, [hl] +	and D_LEFT +	jr nz, .left +	ld a, [hl] +	and D_RIGHT +	jr nz, .right +	ret +.right +	call Function1218b +	and a +	jr nz, .asm_12138 +	ld hl, $c +	add hl, bc +	ld a, [hl] +	cp $9 +	jr nc, .asm_12135 +	inc [hl] +	ret +.asm_12135 +	ld [hl], $0 +	ret +.asm_12138 +	cp $3 +	jr nz, .asm_1213d +	xor a +.asm_1213d +	ld e, a +	add a +	add e +	ld hl, $c +	add hl, bc +	ld [hl], a +	ret +.left +	call Function1218b +	and a +	jr nz, .asm_12159 +	ld hl, $c +	add hl, bc +	ld a, [hl] +	and a +	jr z, .asm_12156 +	dec [hl] +	ret +.asm_12156 +	ld [hl], $9 +	ret +.asm_12159 +	cp $1 +	jr nz, .asm_1215f +	ld a, $4 +.asm_1215f +rept 2 +	dec a +endr +	ld e, a +	add a +	add e +	ld hl, $c +	add hl, bc +	ld [hl], a +	ret +.down +	ld hl, $d +	add hl, bc +	ld a, [hl] +	cp $5 +	jr nc, .asm_12175 +	inc [hl] +	ret +.asm_12175 +	ld [hl], $0 +	ret +.up +	ld hl, $d +	add hl, bc +	ld a, [hl] +	and a +	jr z, .asm_12182 +	dec [hl] +	ret +.asm_12182 +	ld [hl], $5 +	ret + +Function12185: ; 12185 (4:6185) +	ld hl, wc6d5 +	ld c, [hl] +	inc hl +	ld b, [hl] + +Function1218b: ; 1218b (4:618b) +	ld hl, $d +	add hl, bc +	ld a, [hl] +	cp $5 +	jr nz, .asm_121aa +	ld hl, $c +	add hl, bc +	ld a, [hl] +	cp $3 +	jr c, .asm_121a4 +	cp $6 +	jr c, .asm_121a7 +	ld a, $3 +	ret +.asm_121a4 +	ld a, $1 +	ret +.asm_121a7 +	ld a, $2 +	ret +.asm_121aa +	xor a +	ret + +Function121ac: ; 121ac (4:61ac) +	ld a, [wc6d7] +	jp Function11b17 +; 121b2 (4:61b2) + +Function121b2: ; unreferenced +	ld a, [wc6d2] +	and a +	ret z +	cp $11 +	jr nz, .asm_121c3 +	push hl +	ld hl, wc6d2 +rept 2 +	dec [hl] +endr +	jr .asm_121c8 + +.asm_121c3 +	push hl +	ld hl, wc6d2 +	dec [hl] + +.asm_121c8 +	call Function11bd0 +	ld c, [hl] +	pop hl +.asm_121cd +	ld a, [hli] +	cp $ff +	jp z, Function11b27 +	cp c +	jr z, .asm_121d9 +	inc hl +	jr .asm_121cd + +.asm_121d9 +	ld a, [hl] +	jp Function11b23 +; 121dd + +MailEntry_Uppercase: ; 122dd +	db "A B C D E F G H I J" +	db "K L M N O P Q R S T" +	db "U V W X Y Z   , ? !" +	db "1 2 3 4 5 6 7 8 9 0" +	db "<PK> <MN> <PO> <KE> é ♂ ♀ ¥ … ×" +	db "lower  DEL   END   " +; 1224f + +MailEntry_Lowercase: ; 1224f +	db "a b c d e f g h i j" +	db "k l m n o p q r s t" +	db "u v w x y z   . - /" +	db "'d 'l 'm 'r 's 't 'v & ( )" +	db "<``> <''> [ ] ' : ;      " +	db "UPPER  DEL   END   " +; 122c1 diff --git a/engine/link.asm b/engine/link.asm index 28b420543..afc4f2d2e 100755 --- a/engine/link.asm +++ b/engine/link.asm @@ -3080,7 +3080,7 @@ Function29611: ; 29611  ; 2961b  Function2961b: ; 2961b -	lb de, $54, $58 +	depixel 10, 11, 4, 0  	ld a, $e  	call _InitSpriteAnimStruct  	call Function29114 @@ -3090,7 +3090,7 @@ Function2961b: ; 2961b  ; 2962c  Function2962c: ; 2962c -	lb de, $54, $58 +	depixel 10, 11, 4, 0  	ld a, $e  	call _InitSpriteAnimStruct  	ld hl, $b @@ -3106,7 +3106,7 @@ Function2962c: ; 2962c  ; 29649  Function29649: ; 29649 -	lb de, $54, $58 +	depixel 10, 11, 4, 0  	ld a, $f  	call _InitSpriteAnimStruct  	call Function29114 @@ -3120,7 +3120,7 @@ Function29649: ; 29649  Function29660: ; 29660  	ld a, $e4  	call Functioncf8 -	lb de, $28, $58 +	depixel 5, 11  	ld a, $10  	call _InitSpriteAnimStruct  	call Function29114 diff --git a/engine/mail.asm b/engine/mail.asm index 5748536dc..c0bc591b0 100755 --- a/engine/mail.asm +++ b/engine/mail.asm @@ -286,13 +286,13 @@ DeletePartyMonMail: ; 44765 (11:4765)  ; 44781 (11:4781) -Function44781: ; 44781 +IsAnyMonHoldingMail: ; 44781  	ld a, [PartyCount]  	and a -	jr z, .asm_4479e +	jr z, .no_mons  	ld e, a  	ld hl, PartyMon1Item -.asm_4478b +.loop  	ld d, [hl]  	push hl  	push de @@ -303,9 +303,9 @@ Function44781: ; 44781  	ld bc, PARTYMON_STRUCT_LENGTH  	add hl, bc  	dec e -	jr nz, .asm_4478b +	jr nz, .loop -.asm_4479e +.no_mons  	and a  	ret  ; 447a0 @@ -327,30 +327,30 @@ _KrisMailBoxMenu: ; 0x447a0  	db "@"  InitMail: ; 0x447b9 -; initialize wd0f2 and beyond with incrementing values, one per mail +; initialize wMailboxCount and beyond with incrementing values, one per mail  ; set z if no mail  	ld a, BANK(sMailboxCount)  	call GetSRAMBank  	ld a, [sMailboxCount]  	call CloseSRAM -	ld hl, wd0f2 +	ld hl, wMailboxCount  	ld [hli], a  	and a  	jr z, .done ; if no mail, we're done -	; load values in memory with incrementing values starting at wd0f2 +	; load values in memory with incrementing values starting at wMailboxCount  	ld b, a -	ld a, $1 +	ld a, 1  .loop  	ld [hli], a  	inc a  	dec b  	jr nz, .loop  .done -	ld [hl], $ff ; terminate +	ld [hl], -1 ; terminate -	ld a, [wd0f2] +	ld a, [wMailboxCount]  	and a  	ret  ; 0x447da @@ -385,7 +385,7 @@ MailboxPC: ; 0x44806  	xor a  	ld [OBPals + 8 * 6], a  	ld a, $1 -	ld [wd0f1], a +	ld [wCurMessageIndex], a  .loop  	call InitMail  	ld hl, MenuData4494c @@ -394,7 +394,8 @@ MailboxPC: ; 0x44806  	ld [hBGMapMode], a  	call InitScrollingMenu  	call UpdateSprites -	ld a, [wd0f1] + +	ld a, [wCurMessageIndex]  	ld [wMenuCursorBuffer], a  	ld a, [OBPals + 8 * 6]  	ld [wd0e4], a @@ -402,7 +403,8 @@ MailboxPC: ; 0x44806  	ld a, [wd0e4]  	ld [OBPals + 8 * 6], a  	ld a, [MenuSelection2] -	ld [wd0f1], a +	ld [wCurMessageIndex], a +  	ld a, [wcf73]  	cp $2  	jr z, .exit @@ -558,7 +560,7 @@ Function4484a: ; 0x4484a  MenuData4494c: ; 0x4494c  	db %01000000 ; flags  	db 1, 8 ; start coords -	db $a, $12 ; end coords +	db 10, 18 ; end coords  	dw .MenuData2  	db 1 ; default option @@ -566,7 +568,7 @@ MenuData4494c: ; 0x4494c  	db %00010000 ; flags  	db 4, 0 ; rows/columns?  	db 1 ; horizontal spacing? -	dbw 0,wd0f2 ; text pointer +	dbw 0, wMailboxCount ; text pointer  	dba Function447fb  	dbw 0,0  	dbw 0,0 diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm index 3b381a016..c62dc1a0f 100755 --- a/engine/namingscreen.asm +++ b/engine/namingscreen.asm @@ -173,7 +173,7 @@ Function117f5: ; 117f5 (4:57f5)  	ld hl, wc300  	ld [hli], a  	ld [hl], a -	lb de, $24, $20 +	depixel 4, 4, 4, 0  	ld a, SPRITE_ANIM_INDEX_0A  	call _InitSpriteAnimStruct  	ld hl, $1 @@ -230,7 +230,7 @@ Function11847: ; 11847 (4:5847)  	ld b, SPRITE_ANIM_INDEX_1E  .asm_11873  	ld a, b -	lb de, $24, $20 +	depixel 4, 4, 4, 0  	call _InitSpriteAnimStruct  	ret @@ -400,10 +400,10 @@ Jumptable_11977: ; 11977 (4:5977)  Function1197b: ; 1197b (4:597b) -	lb de, $50, $18 +	depixel 10, 3  	call Function1189c  	jr nz, .asm_11985 -	ld d, $40 +	ld d, 8 * 8  .asm_11985  	ld a, SPRITE_ANIM_INDEX_02  	call _InitSpriteAnimStruct diff --git a/engine/pokegear.asm b/engine/pokegear.asm index 02684aaab..424669b20 100755 --- a/engine/pokegear.asm +++ b/engine/pokegear.asm @@ -149,7 +149,7 @@ INCBIN "gfx/misc/fast_ship.2bpp"  ; 90d32  Function90d32: ; 90d32 (24:4d32) -	lb de, $24, $10 +	depixel 4, 2, 4, 0  	ld a, SPRITE_ANIM_INDEX_0D  	call _InitSpriteAnimStruct  	ld hl, $3 @@ -762,7 +762,7 @@ Function910e8: ; 910e8  Function910f9: ; 910f9 (24:50f9)  	call Function90da8 -	lb de, $24, $54 +	depixel 4, 10, 4, 4  	ld a, SPRITE_ANIM_INDEX_14  	call _InitSpriteAnimStruct  	ld hl, $3 diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm index 8318942fe..6f53bb6b3 100755 --- a/engine/slot_machine.asm +++ b/engine/slot_machine.asm @@ -1037,7 +1037,7 @@ Function92d20: ; 92d20  	call Function92fc0  	push bc  	push af -	lb de, $60, $68 +	depixel 12, 13  	ld a, SPRITE_ANIM_INDEX_06  	call _InitSpriteAnimStruct  	ld hl, $e @@ -1096,7 +1096,7 @@ Function92d7e: ; 92d7e  	add hl, bc  	ld [hl], $0  	push bc -	lb de, $60, $00 +	depixel 12, 0  	ld a, SPRITE_ANIM_INDEX_07  	call _InitSpriteAnimStruct  	pop bc @@ -2063,7 +2063,7 @@ Function932fc: ; 932fc (24:72fc)  	add hl, bc  	dec [hl]  	push bc -	lb de, $60, $6c +	depixel 12, 13, 0, 4  	ld a, SPRITE_ANIM_INDEX_08  	call _InitSpriteAnimStruct  	pop bc diff --git a/engine/sprites.asm b/engine/sprites.asm index e95894292..b8b4b2a47 100755 --- a/engine/sprites.asm +++ b/engine/sprites.asm @@ -615,7 +615,7 @@ endr  	dw .nine  	dw .ten  	dw .eleven -	dw .twelve +	dw .twelve      ; blinking cursor  	dw .thirteen  	dw .fourteen  	dw .fifteen diff --git a/engine/startmenu.asm b/engine/startmenu.asm index ae6358014..94082ccad 100755 --- a/engine/startmenu.asm +++ b/engine/startmenu.asm @@ -1069,7 +1069,7 @@ StartMenuYesNo: ; 12cf5  Function12cfe: ; 12cfe (4:6cfe)  	ld de, wd002 -	callba Function11e75 +	callba ComposeMailMessage  	ld hl, PlayerName  	ld de, wd023  	ld bc, NAME_LENGTH - 1 | 
