When the boss graphics get loaded, they actually overwrite some bits in the lower half of the background. This is fine, because Sonic and Tails' boss takes place high in the sky, and both Knuckles' boss and the mid-level cutscenes take place indoors, where the background is hidden from view.
There's really no reason why monitors should be getting messed up though, so I looked into it. Here's what the drilling Eggman object loads when it boots up:
Obj_MGZ2DrillingEggman: ... lea (ArtKosM_MGZEndBoss).l,a1 move.w #$67E0,d2 jsr (Queue_Kos_Module).l lea (ArtKosM_MGZEndBossDebris).l,a1 move.w #-$7440,d2 jsr (Queue_Kos_Module).l moveq #$6D,d0 jsr (Load_PLC).l lea Pal_MGZEndBoss(pc),a1 jmp (PalLoad_Line1).l ; ---------------------------------------------------------------------------Two inline PLC requests, one for the MGZ end boss art, and another for the end boss debris. The latter is a misnomer: the same debris is also used by the act 1 boss. Anyway, nothing weird here, but we haven't actually loaded Robotnik or his ship yet, so let's keep going.
After the first two requests, we have a call to the Load_PLC function with the value $6D. This function actually queues up a PLC from the Offs_PLC array, which we already know from the Level Load Block. Turns out, $6D is the PLC slot used by the actual MGZ end boss:
PLC_6D: plrlistheader plreq $52E, ArtNem_RobotnikShip plreq $500, ArtNem_BossExplosion plreq $494, ArtNem_EggCapsule PLC_6D_EndIn short, each time a drilling Eggman cutscene starts, the game queues up the MGZ end boss PLC. The end boss PLC loads the animal capsule and boss explosions, which are useless and overwrite springs, spikes and monitors, so when the cutscene ends, the game has to load them all back.
Mind you, this is a drop in the ocean, because it pretty much has to load everything back. But avoidable all the same.
No comments:
Post a Comment