You are not logged in.
I'm trying to add more icons of in the party, for that I'm using the documentation of Pokecrystal as a guide.
I want reponint the routine GetIcon to another bank. This is the original routine:
GetIcon: ; 8ea1e ; Load icon graphics into VRAM starting from tile hl ; One tile is 16 bytes long add hl, hl add hl, hl add hl, hl add hl, hl ld de, VTiles0 add hl, de push hl ; Reading the icon pointer table would only make sense if they were ; scattered. However, the icons are contiguous and in-order. ld a, [CurIcon] push hl ld l, a ld h, 0 add hl, hl ld de, IconPointers add hl, de ld a, [hli] ld e, a ld d, [hl] pop hl ld bc, $2308 call GetGFXUnlessMobile pop hl ret ; 8ea3f GetGFXUnlessMobile: ; 8ea3f ld a, [InLinkBattle] cp 4 ; Mobile Link Battle jp nz, Request2bpp jp Functiondc9 ; 8ea4a
this is what I did:
GetIcon: push hl push af ld a,$79 ld hl,$4000 rst $8 ; $1E4000 ret $1E4000: pop af pop hl ... (original routine)
So far it has not given effect, could help me to solve this?
Party icons? You're talking about the sprites used in the "Pokemon menu" that can be opened under "Pokedex" right?
If so, I have probably documentation on how to edit them since I used to work with them with DE. If you need help, I'll take a look what it is about.
rst is a call, and FarCall calls hl. You're popping those return addresses instead of what you pushed.
Just pass your parameters through de. For functions that need all 3 register pairs, use Predef.
If you ever come across a legitimate use for this pattern, you can manipulate sp directly instead of wasting time popping and pushing values you won't use.
By the way, if you just wanted to move the icons, Request2bpp takes bank b. In fact, it's required.
ld bc, $2308
should really be
lb bc, BANK(Icons), 8
Last edited by comet (2014-04-14 23:03:05)
@Miksy91: I have the documentation about how to edit, what I need is to expand the routine for increment the number of OW which can be used. Currently only allows 0x26 (+2 that fit into the free space in the same bank).
@comet: I can hardly understand you because you speak more fluent English jaja
1.-You say if I will make a farcall, instead of using "push & pop" pass the content of "hl" to "de"?
2.-How can I use Predef?
3-is that ok?:
ld bc, $0008 ; BANK(Icons) call GetGFXUnlessMobile pop hl ret
Just relocate the sprites elsewhere then.
Pokemon overworld sprites Picture Numbers - 1792A // Refers to pokemon in table "Menu sprites". Apparently I have moved the picture numbers here in DE. Menu sprites - 8E95B // Refers to indexes in table "Graphics pointers" Graphics pointers - 8EA56
I have the Graphics stored starting at 0xA4000 myself.
I'd imagine the routine tell where they are being a bit ahead of 0x8EA56.
Apparently the Graphics pointers table is accessed at 23:6779, and close by, we have "ld b, $rom bank" instruction telling the rom bank where the graphics are located. In other words, you don't even have to move the pointer table anywhrere, at least I haven't.
What comet was trying to say there that when calling routine "Request2bpp", the rom bank of your 2bpp images must be loaded in register b and c must have the value 08. So,
ld b, BANK(ICONS) ld c, 08 or simply ld bc, "BANK(ICONS)" 08
Last edited by Miksy91 (2014-04-15 07:40:27)