Users browsing this thread: 1 Guest(s)
Roster, Party Select, Graphics OAM

#1
Posts: 676
Threads: 44
Thanks Received: 26
Thanks Given: 21
Joined: Jan 2015
Reputation: 11
Status
Zombie
Well, I'm stumped on this one. Completely.

I can use "above normal sprite sheets" in battle, I can get one to not crash or go ballistic in the load/save menu (even if its not the correct sprite, still works as an unglitched place holder) not ideal, but manageable. Hell, they show up perfect in the shop screen too.

Pull up a party select screen? Well, it results in an invisible sprite... And random screen glitches on everything else. If the cursor is on that sprite the portrait, data, and everything else is loaded fine, at least when the screen stops glitching long enough to see it clearly anyway.

The save screen works because its loading from an extended OAM list out back (not the proper, vanilla OAM data). It doesn't load the sprite above vanilla, but I CAN have it display say... A ghost sprite (unglitched and correct palette) which as I said, not ideal but no crash or debilitating glitch. 

The roster I can't get anything out of. It has to be looking at the vanilla OAM list, loading complete trash from beyond the list, and that's whats causing the mass graphical glitches but how to fix? I've got nothing. If I try to tell it to use the extended list it freezes as soon as it opens, no clue why. Of course that being said, if I try and point the save/load screen back to the original OAM list it freezes too. 

I looked into M06's patch, which I've installed on a vanilla ROM and it works. Yet I've tried at least a half a dozen times/ways to use his code to load the party roster and such... And it always results in a complete black screen/crash as soon as any attempt to load any screen it effects is made. If it was a typo on my part pure dumb luck would have let it work by now, so I'm either missing a major part of code or it just refuses to work with all the other stuff I've got going on (which I can't find any sign where something would overlap to cause said crash). Its not recent additions that don't get along either. I tried it several times before most of that was added, same results.

At this point I'm out of ideas of what to look at. I can't even figure out a way to bypass it even. While it might not crash entirely as is, its pretty trash to even attempt to ignore.

In other words, I'm open to suggestions of any kind.


The only true wisdom is knowing you know nothing.
  Find
Quote  

#2
Posts: 377
Threads: 34
Thanks Received: 10
Thanks Given: 7
Joined: Dec 2018
Reputation: 18
Status
Moog
Not sure if this will help, but I got three hits for $D8E917 [the OAM pointer table] in the C3 bank... one at 196C for the save files, one at C0C1 for the shops, and one at 7902... which is in a subroutine that gets called during party selection.
Code:
Load pointer to actor's animation table
C3/78EB:    0A          ASL A          ; Actor x2
C3/78EC:    AA          TAX            ; Index it
C3/78ED:    C220        REP #$20       ; 16-bit A
C3/78EF:    BF6969C3    LDA $C36969,X  ; Actor address
C3/78F3:    AA          TAX            ; Index it
C3/78F4:    E220        SEP #$20       ; 8-bit A
C3/78F6:    7B          TDC            ; Clear A
C3/78F7:    BD0100      LDA $0001,X    ; Sprite set
C3/78FA:    0A          ASL A          ; Double it
C3/78FB:    AA          TAX            ; Index it
C3/78FC:    A97E        LDA #$7E       ; Bank: 7E
C3/78FE:    48          PHA            ; Put on stack
C3/78FF:    AB          PLB            ; Set DB to 7E
C3/7900:    C220        REP #$20       ; 16-bit A
     C3/7902:          BF17E9D8          LDA $D8E917,X  ; Anim table ptr
C3/7906:    99C932      STA $32C9,Y    ; Set sprite's
C3/7909:    E220        SEP #$20       ; 8-bit A
C3/790B:    60          RTS
Did you change this pointer too?
  Find
Quote  

#3
Posts: 676
Threads: 44
Thanks Received: 26
Thanks Given: 21
Joined: Jan 2015
Reputation: 11
Status
Zombie
No dice on /7902.

No change I make results in anything new. Went through that peticular block and set it all to vanilla, invisible sprite & random screen glitches.

Changed just the pointer to go to my OAM list, no sprites at all & many more random screen glitches (which is really odd considering the load/save screen works exactly as it should using my OAM list, so the format of it should be correct).

M06 had a small block of code for there that skips the switch to 8-bit memory for a few lines at /78F4 (I'm using sprite 1E to test, didn't think 8bit was a problem in size until much higher than #30, but... Why not) at that point the blue menu framework pulls up, game freezes before the fade in finishes.

Yeah.... Not sure what else to poke, beat, or cuss.
It also doesn't make sense (to me at least) why it glitches all of the sprites (even the normal ones) when I send it to the longer OAM list. It's the same data at the start, AND works as expected on the load screen, even beyond its normal ranges, but can't even load Terra's sprite correctly on the roster?

All I can say for certain is... That damn list at C3/6969... You can NOT make me believe that just happen to end up at exactly THAT address, that gets used, repeatedly, all over the place. Other than that I've figured put nothing.


The only true wisdom is knowing you know nothing.
  Find
Quote  



Forum Jump:

Users browsing this thread: 1 Guest(s)


Theme by Madsiur2017Custom Graphics by JamesWhite