From 612ad6d8105e012372128ca78522dd647329e3eb Mon Sep 17 00:00:00 2001 From: Andwn Date: Sun, 26 Feb 2017 15:35:33 -0500 Subject: [PATCH] Forgot to disable interrupts when loading sheets, Balcony cage bars --- inc/sheet.h | 2 +- res/resources.res | 1 + res/sprite/cage2.png | Bin 0 -> 941 bytes src/ai/cent.c | 18 ++++++++++++++++++ src/db/npc.c | 2 +- src/db/stage.c | 8 ++++---- src/sheet.c | 3 ++- src/stage.c | 5 +++-- 8 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 res/sprite/cage2.png diff --git a/inc/sheet.h b/inc/sheet.h index 0570a2c3..428e89e1 100644 --- a/inc/sheet.h +++ b/inc/sheet.h @@ -95,7 +95,7 @@ enum { SHEET_SISHEAD, SHEET_BUYOB, SHEET_BUYO, SHEET_HOPPY, SHEET_ACID, SHEET_NIGHTSHOT, SHEET_GUNFSHOT,SHEET_MIDO, SHEET_PRESS, SHEET_STUMPY, SHEET_CORES1, SHEET_CORES3, SHEET_CORES4, SHEET_REDDOT, SHEET_MIMI, SHEET_DOCSHOT,SHEET_RING, SHEET_SHOCK, - SHEET_FIRE, SHEET_MAPI, SHEET_MUCORE, SHEET_MUCORE2,SHEET_MUCORE3, + SHEET_FIRE, SHEET_MAPI, SHEET_MUCORE, SHEET_MUCORE2,SHEET_MUCORE3,SHEET_CAGE, }; u8 sheet_num; diff --git a/res/resources.res b/res/resources.res index f10cb815..d870feb9 100644 --- a/res/resources.res +++ b/res/resources.res @@ -194,6 +194,7 @@ SPRITE SPR_MUCoreBottom "sprite/ucoreminit.png" 4 1 0 0 NONE SPRITE SPR_MUCoreEnd "sprite/ucoreminie.png" 2 1 0 0 NONE SPRITE SPR_UCoreMouth "sprite/ucoremouth.png" 7 4 0 0 NONE SPRITE SPR_JailBars2 "sprite/jailbars2.png" 8 4 0 0 NONE +SPRITE SPR_JailBars3 "sprite/cage2.png" 4 4 0 0 NONE # Use PAL_Regu SPRITE SPR_Kazuma "sprite/kazuma.png" 2 3 0 0 NONE diff --git a/res/sprite/cage2.png b/res/sprite/cage2.png new file mode 100644 index 0000000000000000000000000000000000000000..27b1d7b8b450555ab3824dfdc4cc5fd554e24a46 GIT binary patch literal 941 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0U}gyL32|N3apvB$XIu6i>zckS zA-~PcBaKJFZB@sr_n+6EIoY*xL3(jx += 8 << CSF; e->y += 16 << CSF; + // When reused in Balcony, things are a bit different + if(stageID == 65) { + e->x += 8 << CSF; + // Release the allocation + TILOC_FREE(e->tiloc, e->framesize); + e->tiloc = NOTILOC; + // Set sheet to the smaller cage bars + e->sprite_count = 1; + SHEET_FIND(e->sheet, SHEET_CAGE); + e->vramindex = sheets[e->sheet].index; + e->framesize = 16; + e->sprite[0] = (VDPSprite) { + .size = SPRITE_SIZE(4, 4), + .attribut = TILE_ATTR_FULL(PAL2,0,0,0,e->vramindex) + }; + // And never deactivate + e->alwaysActive = TRUE; + } } diff --git a/src/db/npc.c b/src/db/npc.c index 50f87f22..d5c05f87 100644 --- a/src/db/npc.c +++ b/src/db/npc.c @@ -258,7 +258,7 @@ const npc_info_def npc_info[NPC_COUNT + 9 + 14 + 4] = { { &SPR_Gunfish, NOSHEET, PAL0, 1, &ai_null, &ai_gunfish, &ondeath_default }, // Gunfish { NULL, SHEET_GUNFSHOT, PAL0, 1, &onspawn_persistent, &ai_gunfish_shot, &ai_null }, // Gunfish Projectile { NULL, SHEET_PRESS, PAL1, 1, &ai_null, &ai_proximity_press_hoz, &ondeath_default }, // Lethal Press - { &SPR_JailBars2, NOSHEET, PAL2, 2, &onspawn_cent_cage, &ai_null, &ai_null }, // Cage Bars + { &SPR_JailBars2,NOSHEET,PAL2,2, &onspawn_cent_cage, &ai_null, &ai_null }, // Cage Bars /* 0x0F0 (240) */ { &SPR_JailedMimi,NOSHEET,PAL3,1, &ai_null, &ai_mimiga_caged, &ai_null }, // Jailed Mimiga { NULL, SHEET_CRITTER, PAL3, 1, &onspawn_snap, &ai_critter, &ondeath_default }, // Red Critter diff --git a/src/db/stage.c b/src/db/stage.c index 07ddd6c9..e9b6a49a 100644 --- a/src/db/stage.c +++ b/src/db/stage.c @@ -87,9 +87,9 @@ const stage_info_def stage_info[STAGE_COUNT] = { { PXM_e_Sky, PXE_e_Sky, TSC_e_Sky, &PAL_Regu, 8, 0, "Credits" }, { PXM_Prefa2, PXE_Prefa2, TSC_Prefa2, &PAL_Regu, 16, 0, "Prefab House" }, /* 0x50 (80) */ - { PXM_Hell1, PXE_Hell1, TSC_Hell1, &PAL_Regu, 10, 0, "Sacred Ground B1" }, - { PXM_Hell2, PXE_Hell2, TSC_Hell2, &PAL_Regu, 10, 0, "Sacred Ground B2" }, - { PXM_Hell3, PXE_Hell3, TSC_Hell3, &PAL_Regu, 10, 0, "Sacred Ground B3" }, + { PXM_Hell1, PXE_Hell1, TSC_Hell1, &PAL_Regu, 10, 10, "Sacred Ground B1" }, + { PXM_Hell2, PXE_Hell2, TSC_Hell2, &PAL_Regu, 10, 10, "Sacred Ground B2" }, + { PXM_Hell3, PXE_Hell3, TSC_Hell3, &PAL_Regu, 10, 10, "Sacred Ground B3" }, { PXM_Mapi, PXE_Mapi, TSC_Mapi, &PAL_Mapi, 3, 0, "Storage" }, { PXM_Hell4, PXE_Hell4, TSC_Hell4, &PAL_Regu, 10, 0, "Passage?" }, { PXM_Hell42, PXE_Hell42, TSC_Hell42, &PAL_Regu, 10, 0, "Passage?" }, @@ -101,5 +101,5 @@ const stage_info_def stage_info[STAGE_COUNT] = { { PXM_Island, PXE_Island, TSC_Island, &PAL_Regu, 21, 0, "" }, { PXM_Ballo2, PXE_Ballo2, TSC_Ballo2, &PAL_Regu, 10, 14, "Seal Chamber" }, { PXM_e_Blcn, PXE_e_Blcn, TSC_e_Blcn, &PAL_Regu, 21, 0, "Credits" }, - { PXM_Clock, PXE_Clock, TSC_Clock, &PAL_Regu, 15, 0, "Clock" }, + { PXM_Clock, PXE_Clock, TSC_Clock, &PAL_Regu, 15, 7, "Clock" }, }; diff --git a/src/sheet.c b/src/sheet.c index 676ff1ae..f8b6b8bb 100644 --- a/src/sheet.c +++ b/src/sheet.c @@ -341,6 +341,7 @@ void sheets_load_stage(u16 sid, u8 init_base, u8 init_tiloc) { SHEET_ADD(SHEET_REDDOT, &SPR_RedDot, 2,1,1, 0,0, 0,1); SHEET_ADD(SHEET_MIMI, &SPR_ShovelMimi, 2,2,2, 0,0, 0,1); SHEET_ADD(SHEET_DOCSHOT, &SPR_DocShot, 4,2,2, 0,0, 0,1, 0,2, 0,3); + SHEET_ADD(SHEET_CAGE, &SPR_JailBars3, 1,4,4, 0,0); } break; case 0x44: // Black Space { SHEET_ADD(SHEET_BAT, &SPR_MizaBat, 3,2,2, 0,0, 0,1, 0,2); @@ -359,11 +360,11 @@ void sheets_load_stage(u16 sid, u8 init_base, u8 init_tiloc) { } break; case 0x52: // Sacred Ground B3 { SHEET_ADD(SHEET_TRAP, &SPR_Trap, 1,4,3, 0,0); + SHEET_ADD(SHEET_PRESS, &SPR_Press, 3,2,3, 0,0, 0,1, 0,2); // Bute // Mesa // Rolling // Delete - // Press } break; case 0x53: // Ma Pignon { SHEET_ADD(SHEET_MAPI, &SPR_MaPignon, 12,2,2, diff --git a/src/stage.c b/src/stage.c index 6db63001..a9c19f8e 100644 --- a/src/stage.c +++ b/src/stage.c @@ -62,10 +62,11 @@ void stage_load(u16 id) { stageTileset = stage_info[id].tileset; stage_load_tileset(); } + VDP_waitVSync(); + SYS_disableInts(); // Load sprite sheets sheets_load_stage(id, FALSE, TRUE); // Stage palette and shared NPC palette - SYS_disableInts(); if(stageID == 0x30) { VDP_setCachedPalette(PAL2, PAL_RiverAlt.data); // For Waterway green background } else { @@ -339,7 +340,7 @@ void stage_draw_screen() { } x++; } - DMA_doDma(DMA_VRAM, (u32)maprow, VDP_getAPlanAddress() + (y%32)*64*2, 64, 2); + DMA_doDma(DMA_VRAM, (u32)maprow, VDP_getAPlanAddress() + (y%32)*0x80, 64, 2); } y++; }