Mail has been fixed; you should now be able to confirm your e-mail address, watch pages, and the like.
Please report any issues on Discord.

The Death and Return of Superman (Genesis)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

The Death and Return of Superman

Developer: Blizzard Entertainment
Publishers: Sunsoft (US), Acclaim Entertainment (EU/AU)
Platform: Genesis
Released in US: 1995
Released in EU: 1994
Released in AU: 1995


SourceIcon.png This game has uncompiled source code.
TextIcon.png This game has unused text.


The Death and Return of Superman is a game that is supposed to have some kind of connection with Superman #500.

Unused text

  • Located at $01623A is the unused string MUSIC TEST. In the options menu, the music and sound effects are together in the SOUND TEST.
  • Located at $016252 is the unused string STEREO MODE. Its settings MONO and STEREO are stored at $016272 and $016279, respectively.

Uncompiled source code

Located at $014600-0155FF is $1000 bytes worth of uncompiled source code.

	wait_until_0();

	// zone 4
	next_zone((166*8));

	make_banjo_rgt(0);
	make_molatav_lft(0);
	wait_until_0();
	make_bike_lft(0);
	make_banjo_rgt(20);
	wait_while_3();
	make_molatav_rgt(-20);
	wait_until_0();

	// zone 5
	next_zone((226*8));

	make_molatav_rgt(0);
	make_banjo_lft(0);
	wait_while_2();
	make_molatav_lft(0);
	make_banjo_rgt(0);
	wait_while_3();
	make_molatav_rgt(0);
	wait_until_0();

	// zone 6
	next_zone((278*8));

	make_banjo_lft(0);
	make_molatav_rgt(0);
	wait_until_0();
	make_bike_rgt(0);
	make_banjo_lft(20);
	wait_while_3();
	make_molatav_rgt(-20);
	wait_until_0();

	sleep((20));
	l.msg = MSG_EXIT_STAGE;
	nap_loop();
}  

t_coast3()
{
	g.break_offset = 17;
	g.glass_offset = 0;

	g.floor = ((38*8)-1);
//goto skip;

	// zone 1
	next_zone((10*8));
	
	choose_guard_left();
	make_robot_rgt(0);
  	wait_while_2();
	make_tick_ship1();
	wait_until_0();

	// zone 2
	next_zone((54*8));

	choose_guard_left();
	make_robot_rgt(30);
	wait_while_2();
	choose_guard_left();
	choose_guard_right();
	wait_while_3();
	wait_while_2();
	sleep(1);
	make_tick_ship1();
	wait_until_0();

	// globes
	next_zone((84*8));
  	do_globes(25);
	wait_until_0();

	// zone 3
	next_zone((130*8));
	
	choose_guard_left();
	make_tick_ship1();
	wait_while_3();
	make_robot_rgt(-30);
	wait_while_3();
	choose_guard_left();
	wait_until_0();

	// zone 4
	next_zone((218*8));

	make_robot_rgt(30);
	choose_guard_left();
	choose_guard_right();
	wait_while_3();
	make_tick_rgt(30);
	wait_while_3();
	choose_guard_left();
	wait_until_0();

	// zone 5
	next_zone((272*8));
  
skip:
	sleep(10);
	boss_song();
	make_object(CYBR_BOSS_OBJ, RIGHT_SIDE, g.floor, 0, 0, 0);	
	wait_until_0();

	land_man();

	g.start_combat = 1;
	l.msg = MSG_EXIT_STAGE;
	l.parm = o.child;
	nap_loop();
}

t_missile()
{
	g.script_collide_pad = 24;

	g.floor = 0;
	g.break_offset = 21;

	o.local = 0xfffe;

	o.local3 = 0;

	g.orbs_killed = 0;
	o.health = 0;

	sleep((20*3));

	do {
		reg = g.orbs_killed + 2;
		if (reg >= o.health) o.health = g.orbs_killed;
		o.local2 = 2;
		do {
			make_object(ORB_OBJ, RIGHT_SIDE, (VISIBLE_HGT/2), 0, 0, o.local3);
			sleep(7);
			o.local2--;
		} while (o.local2 != 0);
		o.local3++;

		sleep(40);
		reg = o.health + 2;
		if (reg == g.orbs_killed) {
			o.health = reg + 12;
			if (l.top < (112-16)) o.local2 = (112+33);
			else o.local2 = (112-32);
			make_object(HEALTH_POWERUP_OBJ, (VISIBLE_WDT), o.local2, 0, 0, 2);
		}
		else o.health = 0;
	} while (g.missile_parts != -1);
	nap_loop();
}

t_level8a()
{
	g.break_offset = 40;
	g.mode = FLYING;
	o.local = 0xfffe;

	g.low_z_bound = l.in;
	g.high_z_bound = l.out;

	if (g.current_map == LEVEL08B_MAP) {
		do {
			if (o.health == 0) {
				sleep(50);
				make_object(EYE_OBJ, RIGHT_SIDE, 112, 0, 0, 0);
			}
			sleep(1);
		} while (g.mscroll_pixel_x != g.map_pixel_rgt);

		sleep(10);
  		boss_song();
		g.missile_parts = 1;
		play_sound(SFX_DOOM_LAUGH);

		do {
			make_object(EYE_OBJ, RIGHT_SIDE, 112, 0, 0, 0);
			sleep(10);
			do sleep(1); while (o.health == 3);
		} while (g.missile_parts != -1);
		g.disable_joypad = 1;
	}
	
	nap_loop();
}

t_default()
{
	g.floor = 0;

	next_zone(g.map_pixel_rgt - 9);
	teleport();
}


public next_zone(o.local)
{
	reg = g.map_pixel_rgt + 322;	//because map_pixel_rgt is left edge of rightmost screen
	if (reg < o.local) teleport();

next_zone_no_teleport::

	g.open_door = 0;

	o.timer = ARROW_DELAY;
	
	o.local3 = o.local - 8;
	do {
		sleep(1);
	} while (o.x < o.local3 || o.health != 0);
			
	o.timer = 0;
}

�_default);
/*****/
	switch (g.current_map) {
		case LEVEL01A_MAP: init_thread(t_factory1); break;
		case LEVEL01B_MAP: init_thread(t_factory2); 
				   break;
		case LEVEL01C_MAP: init_thread(t_factory3);
			g.teleport_map = TOON2_1_MAP; 
			break;
		case LEVEL02A_MAP: init_thread(t_city1); break;
		case LEVEL02B_MAP: init_thread(t_city2);
			g.teleport_map = TOON

Sound test cheat?

Elementary, my dear Cactus.
This needs some investigation.
Discuss ideas and findings on the talk page.

The game likely contains the same health refill and level skip cheat seen in the SNES version, which is activated by playing certain entries in the sound test. The word at memory address $FF8204 seems to be keeping a total of the entries played. The word at memory address $FF8202 contains the index of the current song/sound effect selected.

Unknown compressed data

Elementary, my dear Cactus.
This needs some investigation.
Discuss ideas and findings on the talk page.

Located at around $0A8000-0A9FFF is what appears to be 5 copies of compressed packets which include the (debug?) strings TURBO DOWNLOAD TEST STRING RETURN FROM. Does the programming still have references to this, and what is its purpose?

Hmmm...
To do:
Figure out where the decompression routine and the pointer table to compressed packets is located.