diff --git a/ART/blankishlabel.xcf b/ART/blankishlabel.xcf new file mode 100644 index 0000000..7d38a47 Binary files /dev/null and b/ART/blankishlabel.xcf differ diff --git a/ART/corgssim-label.png b/ART/corgssim-label.png new file mode 100644 index 0000000..0849a6c Binary files /dev/null and b/ART/corgssim-label.png differ diff --git a/CSV/room_18.c b/CSV/room_18.c index 74a896f..73cb89a 100644 --- a/CSV/room_18.c +++ b/CSV/room_18.c @@ -18,7 +18,7 @@ const unsigned char room_18_sprites[]={ 112, 80, SPRITE_ALAN92, 128, 80, SPRITE_BRIAN93, 32, 160, SPRITE_PunchoutMan112, - //48, 170, SPRITE_PunchOutMat113, + 48, 170, SPRITE_PunchOutMat113, 192, 96, SPRITE_BaldLeft18, TURN_OFF }; diff --git a/NES_PALETTE.png b/NES_PALETTE.png index b4c70f2..7f7d02d 100644 Binary files a/NES_PALETTE.png and b/NES_PALETTE.png differ diff --git a/Sprites.h b/Sprites.h index e19d6dd..0b1be68 100644 --- a/Sprites.h +++ b/Sprites.h @@ -5,7 +5,7 @@ enum SPRITE_ALAN92, SPRITE_BRIAN93, SPRITE_PunchoutMan112, - // SPRITE_PunchOutMat113, + SPRITE_PunchOutMat113, SPRITE_LunchLadyHead36, SPRITE_BaldRight22, SPRITE_HairForward114, @@ -1361,13 +1361,13 @@ const unsigned char PunchoutMan112[] = { }; -// const unsigned char PunchOutMat113[] = { +const unsigned char PunchOutMat113[] = { -// 0, 0, 0x2c, 2, -// 8, 0, 0x2c, 2 | OAM_FLIP_H, -// 0, 8, 0x2c, 2 | OAM_FLIP_V, -// 8, 8, 0x2c, 2 | OAM_FLIP_H | OAM_FLIP_V, -// 128}; + 0, 0, 0x2c, 2, + 8, 0, 0x2c, 2 | OAM_FLIP_H, + 0, 8, 0x2c, 2 | OAM_FLIP_V, + 8, 8, 0x2c, 2 | OAM_FLIP_H | OAM_FLIP_V, + 128}; const unsigned char HairForward114[] = { 0, 0, 0x66, 2, @@ -1551,25 +1551,33 @@ const unsigned char BurgerGame[] = { 8, 8, 0x4d, 2, 128}; -const unsigned char KettleBell[] = { +const unsigned char VectrexMachine[] = { 0, 0, 0x48, 3, - 8, 0, 0x48, 3 | OAM_FLIP_H, + 8, 0, 0x49, 3, 0, 8, 0x58, 3, 8, 8, 0x59, 3, 128}; const unsigned char Jobbie[] = { - 0, 0, 0x88, 3, - 8, 0, 0x88, 3 | OAM_FLIP_H, - 0, 8, 0x99, 3 | OAM_FLIP_H, - 8, 8, 0x98, 3 | OAM_FLIP_H, - 128}; + 0, 0,0x89,3|OAM_FLIP_H, + 8, 0,0x88,3|OAM_FLIP_H, + 0, 8,0x98,3, + 8, 8,0x99,3, + 128}; + const unsigned char JobbieTwo[] = { - 0, 0, 0x88, 3, - 8, 0, 0x88, 3 | OAM_FLIP_H, - 0, 8, 0x98, 3, - 8, 8, 0x99, 3, + 0, 0,0x88,3, + 8, 0,0x88,3|OAM_FLIP_H, + 0, 8,0x98,3, + 8, 8,0x98,3|OAM_FLIP_H, + 128}; + +const unsigned char JobbieThree[] = { + 0, 0,0x88,3, + 8, 0,0x89,3, + 8, 8,0x98,3|OAM_FLIP_H, + 0, 8,0x99,3|OAM_FLIP_H, 128}; // girl diff --git a/Talk.h b/Talk.h index 3d79d45..359d27e 100644 --- a/Talk.h +++ b/Talk.h @@ -132,7 +132,7 @@ const unsigned char talk_character[] = "Why does everyone avoid me?"; const unsigned char talk_pacman[] = "I ran my Blinky costume\nthrough the washer one too many times.\nNow I'm Pinky."; const unsigned char talk_pacman2[] = "That guy stole my\ncostume idea!\nI'd say something...\nbut I'm Bashful."; const unsigned char talk_wizard[] = "Wizard needs food\n\n\t\t\t\t...badly."; -const unsigned char talk_genie[] = "I wonder if this game has\nany Game Genie codes. Like,XLXZVNVX or something."; +const unsigned char talk_genie[] = "I wonder if this game has\nany Game Genie codes. Like,XUSLPEVX or something."; const unsigned char talk_gary[] = "Thank a Gary before\nyou leave today. They put\nlots of work into the show."; const unsigned char talk_inyourway[] = "I just need to browse\nthrough everything here\nfour or five more times."; const unsigned char talk_clever[] = "Do you want to save your\ngame?\n\nYeah, that'd be cool\nif you could do that."; @@ -142,7 +142,7 @@ const unsigned char talk_foodtruck2[] = "Sorry, this is just\na foodtruck simula const unsigned char talk_king2[] = "The KING OF VIDEO GAMES?\nI'm gonna try and get his\nautograph."; const unsigned char talk_space[] = "I'm taking up 98 Bytes in\nthe game ROM, but I'm too\nimportant to cut."; -const unsigned char talk_dlc[] = "CORGS Sim DLC this way.\n\n\n$20 please."; +const unsigned char talk_dlc[] = "There's no secret place\nbehind me on this path.\nNo DLC or easter eggs.\nJust glitchy garbled map \ncode that'll softlock the\nwhole game. BEWARE!"; const unsigned char talk_clip[] = "HEY LISTEN!\nI think they put in that\nfence to prevent you from\nclipping through the map."; const unsigned char talk_admission[] = "Kids admitted free.\n\nChild at heart? Full price."; const unsigned char talk_graded[] = "I have 5 speedrunning\nrecords."; @@ -158,12 +158,12 @@ const unsigned char fetch_quest_1[] = "GRUMBLE GRUMBLE\nI'm hungry, but I can't\ const unsigned char fetch_quest_2[] = "Thank you! One super burgerdeserves another.\nHere you go!"; const unsigned char fetch_quest_4[] = "MUNCH MUNCH"; -// const unsigned char test[] = "XXXXXXXXXXXXXXXXXXXXXXXXXX\XXXXXXXXXXXXXXXXXXXXXXXXXX\XXXXXXXXXXXXXXXXXXXXXXXXXX\"; +// const unsigned char test[] = "XXXXXXXXXXXXXXXXXXXXXXXXXX\XXXXXXXXXXXXXXXXXXXXXXXXXX\XXXXXXXXXXXXXXXXXXXXXXXXXX\XXXXXXXXXXXXXXXXXXXXXXXXXX\"; const unsigned char item_1[] = "You got a Famicom Disk\nSystem copy of...\nThe Legend of Zelda."; const unsigned char item_2[] = "You got an Nintendo\nEntertainment System copy\nof... Super Mario Bros."; const unsigned char item_3[] = "You got an Atari 2600\ncopy of Warren Robinett's\nAdventure."; const unsigned char item_4[] = "You got an Arcade JAMMA\nboard of...\nSuper Burger Time."; -const unsigned char item_5[] = "Those bros gave you\na 20lb kettlebell!"; +const unsigned char item_5[] = "Those bros gave you a\nVectrex machine with a\ncopy of Fortress of Narzod!"; const unsigned char item_6[] = "You sure threw a lot of\nmoney at those video games!"; const unsigned char fetch_1[] = "You got a SILVER COIN!\n\nGo get that guy some food!"; @@ -199,6 +199,7 @@ const unsigned char game_genie_text[] = "II' Turbo Championship Edition"; const unsigned char sidebar[] = {0xfd, 0xfd, 0xfd}; const unsigned char bottombar[] = {0xfe, 0xed, 0xff}; + // big space holders // const unsigned char lorem256_1[] = "LLorem ipsum dolor sit amet, consectetuer adipiscing elit. Aeneanorem ipsum dolor sit amet, consectetuer adipiscing elit. Aeneanorem ipsum dolor sit amet, consectetuer adipiscing elit. Aeneanorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean"; // const unsigned char lorem256_2[] = "LLorem ipsum dolor sit amet, consectetuer adipiscing elit. Aeneanorem ipsum dolor sit amet, consectetuer adipiscing elit. Aeneanorem ipsum dolor sit amet, consectetuer adipiscing elit. Aeneanorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean"; diff --git a/corgssim.c b/corgssim.c index c5c0bff..49d15ba 100644 --- a/corgssim.c +++ b/corgssim.c @@ -262,8 +262,8 @@ void main(void) rep_count = 0; rep_timer = REP_TIMER_MAX; // this is all based off rep_timer being set break; - case CHOICE_FINISH_REPS: - item_found = ITEM_KETTLEBELL_GAME; + case CHOICE_FINISH_REPS: + item_found = ITEM_VECTREX_MACHINE; collision_action = TALK_ITEM_5; find_item(); break; @@ -285,7 +285,7 @@ void main(void) // text finished, go back to game bg_display_hud = 1; // draw the hud game_mode = MODE_GAME; - draw_bg(); + end_talking_time(); bg_fade_out = 1; // turn back on room fading display_hud_sprites = 1; // turn back on hud sprites item_found = 0; // reset item found (in case we were in the item found mode) @@ -699,9 +699,9 @@ void draw_sprites(void) break; } } - if (items_collected & ITEM_KETTLEBELL_GAME) + if (items_collected & ITEM_VECTREX_MACHINE) { - oam_meta_spr(0x34, 0x20, KettleBell); + oam_meta_spr(0x34, 0x20, VectrexMachine); } if (items_collected & ITEM_JOBBIES_GAME) { @@ -756,6 +756,7 @@ void draw_sprites(void) // offset code is for shuffling sprites if we have more than 8 offset = get_frame_count() & 3; // returns 0,1,2,3 offset = offset << 4; // * 16, the size of the shuffle array + ++jobbie_frame; for (index = 0; index < MAX_ROOM_SPRITES; ++index) { index2 = shuffle_array[offset]; @@ -787,9 +788,9 @@ void draw_sprites(void) case SPRITE_PunchoutMan112: pointer2 = PunchoutMan112; break; - // case SPRITE_PunchOutMat113: - // pointer2 = PunchOutMat113; - // break; + case SPRITE_PunchOutMat113: + pointer2 = PunchOutMat113; + break; case SPRITE_LunchLadyHead36: pointer2 = LunchLadyHead36; break; @@ -971,13 +972,26 @@ void draw_sprites(void) pointer2 = DungeonBlock; break; case SPRITE_Jobbie: - if ((get_frame_count() & 0x0f) > 0x08) + //(get_frame_count() & 0x0f) > 0x08) + if (jobbie_frame < 20) { pointer2 = Jobbie; } - else + else if (jobbie_frame < 40) + { + pointer2 = JobbieTwo; + } + else if (jobbie_frame < 60) + { + pointer2 = JobbieThree; + } + else if (jobbie_frame < 80) { pointer2 = JobbieTwo; + } + else { + pointer2 = Jobbie; + jobbie_frame = 0; } default: @@ -1050,9 +1064,9 @@ void draw_sprites(void) break; } } - if (item_found == ITEM_KETTLEBELL_GAME) + if (item_found == ITEM_VECTREX_MACHINE) { - oam_meta_spr(player_x, player_y - 16, KettleBell); + oam_meta_spr(player_x, player_y - 16, VectrexMachine); } if (item_found == ITEM_JOBBIES_GAME) { @@ -1700,6 +1714,10 @@ void sprite_collisions(void) { jobbies_map[which_bg] = jobbies_map[which_bg] - 1; ++player_jobbies; + sprites_type[index] = TURN_OFF; + shot_hit = 6; // 6 frames of shot hit. + sfx_play(SFX_COIN, 0); + if (player_jobbies_ones < 9) { ++player_jobbies_ones; @@ -1712,14 +1730,16 @@ void sprite_collisions(void) // did we just kill the last jobbie? if (player_jobbies == MAX_JOBBIES) { + + bg_fade_out = 0; + draw_bg(); + bg_fade_out = 1; collision_action = TALK_ITEM_6; item_found = ITEM_JOBBIES_GAME; find_item(); } } - sprites_type[index] = TURN_OFF; - shot_hit = 6; // 6 frames of shot hit. - sfx_play(SFX_COIN, 0); + } else { @@ -2048,6 +2068,7 @@ void change_room_down() if (which_bg == 29) // the back door { collision_action = TALK_LOCKED_DOORS; + draw_bg(); draw_talking(); music_pause(1); delay(20); @@ -2140,6 +2161,37 @@ void draw_hud_button(void) multi_vram_buffer_horz(bottombar, 3, NTADR_A(temp1, 6)); } +void end_talking_time(void) +{ + + if (room_metatile_list[which_bg] == outside_metatiles) + { + + multi_vram_buffer_horz(outsideBar, sizeof(emptyBar), NTADR_A(1, 2)); + multi_vram_buffer_horz(outsideBar, sizeof(emptyBar), NTADR_A(1, 3)); + ppu_wait_nmi(); + multi_vram_buffer_horz(outsideBar, sizeof(emptyBar), NTADR_A(1, 4)); + multi_vram_buffer_horz(outsideBar, sizeof(emptyBar), NTADR_A(1, 5)); + ppu_wait_nmi(); + multi_vram_buffer_horz(outsideBar, sizeof(emptyBar), NTADR_A(1, 6)); + } + else + { + multi_vram_buffer_horz(emptyBar, sizeof(emptyBar), NTADR_A(1, 2)); + multi_vram_buffer_horz(emptyBar, sizeof(emptyBar), NTADR_A(1, 3)); + ppu_wait_nmi(); + multi_vram_buffer_horz(emptyBar, sizeof(emptyBar), NTADR_A(1, 4)); + multi_vram_buffer_horz(emptyBar, sizeof(emptyBar), NTADR_A(1, 5)); + ppu_wait_nmi(); + multi_vram_buffer_horz(emptyBar, sizeof(emptyBar), NTADR_A(1, 6)); + } + + if (bg_display_hud == 1) + { + draw_hud(); + } +} + void draw_talking(void) { if (collision_action == TALK_KING) @@ -2156,9 +2208,26 @@ void draw_talking(void) bg_fade_out = 0; // don't fade bg for draw_bg for talking bg_display_hud = 0; // don't draw hud for draw_bg for talking - draw_bg(); multi_vram_buffer_horz(topBar, sizeof(topBar), NTADR_A(1, 2)); + + if (room_metatile_list[which_bg] == outside_metatiles) + { + + multi_vram_buffer_horz(middleOutsideBar, sizeof(middleBar), NTADR_A(1, 3)); + ppu_wait_nmi(); + multi_vram_buffer_horz(middleOutsideBar, sizeof(middleBar), NTADR_A(1, 4)); + multi_vram_buffer_horz(middleOutsideBar, sizeof(middleBar), NTADR_A(1, 5)); + } + else + { + multi_vram_buffer_horz(middleBar, sizeof(middleBar), NTADR_A(1, 3)); + ppu_wait_nmi(); + multi_vram_buffer_horz(middleBar, sizeof(middleBar), NTADR_A(1, 4)); + multi_vram_buffer_horz(middleBar, sizeof(middleBar), NTADR_A(1, 5)); + } + + ppu_wait_nmi(); multi_vram_buffer_horz(bottomBar, sizeof(bottomBar), NTADR_A(1, 6)); // sides of the box @@ -2292,7 +2361,7 @@ void draw_talking(void) text_length = sizeof(talk_mywife); break; case TALK_MUSCLE1: - if (!(items_collected & ITEM_KETTLEBELL_GAME)) + if (!(items_collected & ITEM_VECTREX_MACHINE)) { pointer = talk_muscle1; text_length = sizeof(talk_muscle1); @@ -2511,7 +2580,6 @@ void draw_talking(void) --text_length; - ppu_on_all(); } void initialize_title_screen(void) @@ -2618,8 +2686,8 @@ void draw_ending_special(void) case ITEM_BURGER_GAME: pointer2 = BurgerGame; break; - case ITEM_KETTLEBELL_GAME: - pointer2 = KettleBell; + case ITEM_VECTREX_MACHINE: + pointer2 = VectrexMachine; break; case ITEM_JOBBIES_GAME: pointer2 = Jobbie; @@ -2702,9 +2770,9 @@ void draw_ending_sprites(void) oam_meta_spr(0x40, 0x48, BurgerGame); } } - if (temp2 & ITEM_KETTLEBELL_GAME) + if (temp2 & ITEM_VECTREX_MACHINE) { - oam_meta_spr(0x82, 0x38, KettleBell); + oam_meta_spr(0x82, 0x38, VectrexMachine); } if (temp2 & ITEM_JOBBIES_GAME) { diff --git a/corgssim.chr b/corgssim.chr index 37f136a..23d675b 100644 Binary files a/corgssim.chr and b/corgssim.chr differ diff --git a/corgssim.h b/corgssim.h index 23f5d25..d606a67 100644 --- a/corgssim.h +++ b/corgssim.h @@ -118,6 +118,7 @@ unsigned char shot_hit = 0; //offset used for shuffling sprites unsigned char offset; +unsigned char jobbie_frame = 0; //pointer used for a bunch of things const unsigned char * pointer; @@ -158,6 +159,7 @@ unsigned char index = 0; unsigned char index2; + //used for animation, could be replaced by getframes? unsigned char move_frames = 0; @@ -174,8 +176,14 @@ const unsigned char credits_1[] = "Created by"; const unsigned char credits_2[] = "Brian Burke and Alan Files"; const unsigned char credits_3[] = ";2022"; //';' in chr is (c) const unsigned char topBar[] = {0xee,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xef}; +const unsigned char middleBar[] = {0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfd}; +const unsigned char middleOutsideBar[] = {0xfd,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0xfd}; +const unsigned char emptyBar[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; +const unsigned char outsideBar[] = {0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81}; const unsigned char bottomBar[] = {0xfe,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xed,0xff}; + + const unsigned char title_color_rotate[]={ 0x4,0x6,0x19,0x2 }; @@ -246,4 +254,5 @@ void draw_hud_button(void); void draw_ending_sprites(void); void draw_ending_text(void); void draw_ending_special(void); -void typewriter(void); \ No newline at end of file +void typewriter(void); +void end_talking_time(void); \ No newline at end of file diff --git a/nrom_32k_vert.cfg b/nrom_32k_vert.cfg index 46f3835..302c873 100644 --- a/nrom_32k_vert.cfg +++ b/nrom_32k_vert.cfg @@ -40,7 +40,7 @@ SEGMENTS { ZEROPAGE: load = ZP, type = zp; ONCE: load = PRG, type = ro, define = yes, optional = yes; - SAMPLES: load = PRG, start = $f000, type = ro, optional = yes; + SAMPLES: load = PRG, start = $f500, type = ro, optional = yes; VECTORS: load = PRG, start = $fffa, type = ro; } diff --git a/special_rooms.h b/special_rooms.h index f94e777..95cd1a1 100644 --- a/special_rooms.h +++ b/special_rooms.h @@ -7,7 +7,7 @@ #define ITEM_COIN_GAME 0x02 #define ITEM_ADVENTURE_GAME 0x04 #define ITEM_BURGER_GAME 0x08 -#define ITEM_KETTLEBELL_GAME 0x10 +#define ITEM_VECTREX_MACHINE 0x10 #define ITEM_JOBBIES_GAME 0x20 #define ALL_ITEMS_COLLECTED 0x3F unsigned char items_collected = 0;