We just released a prototype of the cancelled SNES port of Puggsy! Take a look!
As always, thank you for supporting The Cutting Room Floor on Patreon!

Caveman Ninja

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Caveman Ninja

Also known as: Joe & Mac: Tatakae Genshijin (JP)
Developer: Data East
Publisher: Data East
Platform: Arcade (Data East Edward Randy hardware)
Released internationally: February 1991

DevTextIcon.png This game has hidden development-related text.
GraphicsIcon.png This game has unused graphics.
DebugIcon.png This game has debugging material.
RegionIcon.png This game has regional differences.

The Caveman Ninja, better known as Joe & Mac, must battle a tribe of figurative-but-quite-possibly-literal neanderthals who have kidnapped their cave-babes (it was the caveman '90s) across five prehistoric lands with branching paths.

Unused Screens

Game Info Screen

Holding 1P Start + 2P Start when the game boots should display a version info screen, but the developers added a rts opcode at the beginning of the routine to dummy it out. Put the appropriate code in either cninja.xml or joemac.xml to re-enable this feature:

joemac cninja
  <cheat desc="Fix Version Screen">
    <script state="run">
    <script state="off">
  <cheat desc="Fix Version Screen">
    <script state="run">
    <script state="off">
CavemanNinjaVersionScreenJP.png CavemanNinjaVersionScreenINT.png

Joe & Mac is labeled version 3.3, while all non-Japanese sets are labeled version 3.3A. This includes sets labeled as "World ver 4", "World ver 1", and "US ver 4" in MAME, so clearly, the info here is out of date.

Location Test Screen

To access the following two screens, put the following code in cninja.xml and/or joemac.xml, enable it, then lose a life:

  <cheat desc="Change Ready Screen">
      <item value="0x0E42">Location Test</item>
      <item value="0x0E54">Ending Test</item>
    <script state="run">
    <script state="off">
CavemanNinjaLocationTestJP.png CavemanNinjaLocationTest.png
JP Text Translated
今回は ここまでなの
That's all for now.
I'm sorry...♥

These would be used in location test versions of the game, but there's no code that references this screen's subroutine in the final game.

Ending Test

This is a simple test of the ending screens. The game will display the first two pictures of Joe & Mac reacting in shock, all three of the game's different ending pictures (Fat cavewoman, enemy cavewoman, cave-babes), then the scrolling credits landscape sans objects and credits.

(Source: Original TCRF research)

Unused Objects

Default Weapon Pickup

An item that would give players their default weapons back (Stone Axe for 1P, Bone for 2P), but none of the enemies or objects in the game are coded to drop it.

Put the following code in MAME's cninja.xml cheat file to make the first caveman in Stage 1 drop the item, and make the second caveman drop the Fire weapon:

  <cheat desc="Default Weapon Pickup">
    <script state="run">
    <script state="off">

The item will always use the axe graphic, even if 2P is the only one playing. There's a bone item graphic in the object graphics ROM, but there's nothing in the item's code that references it.

Map Characters

CavemanNinjaMapCavewoman.png CavemanNinjaMapCaveman.png

Two unused characters that would appear on the game's map screens: The cavewoman from Stage 1 in a neutral stance, and an enemy caveman.

Put the following code in cninja.xml to change the first enemy caveman in Stage 1 to one of the unused characters, albeit with an incorrect palette:

  <cheat desc="Unused Map Characters">
      <item value="0x02">Cavewoman</item>
      <item value="0x03">Neanderthal</item>
    <script state="run">
    <script state="off">
(Source: Original TCRF research)

Unused Graphics

A fossilized trilobite that would have appeared in the background of the high score screen. Even though there's plenty of space for it in the upper-right corner, it's still unused.

A hidden message (カネコが書いた - "Written by Kaneko") stored with the Stage 5 background graphics. Atsushi Kaneko is one of the game's six graphic designers.

Weapons can be charged, and weapons can be fired upwards, but charged weapons cannot be fired upwards. This graphic of the charged Tusk weapon pointed upward suggests this wasn't always intended.

Graphics for an ammonite enemy can be found mixed in with the game's food items.

A partial set of alternate food items appear directly after the ammonite graphics. Includes a different tomato sprite, a banana bunch (As opposed to the banana peel that the final game uses), eggs, cheese, crackers, and bugs!

CavemanNinjaSaberRoar.gif CavemanNinjaSaberTurn.gif

A completely unused enemy: A saber-toothed cat.

Like the similarly sized dinosaur enemies, this has idle, turning, walking, and running animations.

CavemanNinjaSaberBurn.gif CavemanNinjaSaberShock.gif

It also has the standard set of hurt and dying animations that every used enemy has.

CavemanNinjaSaberDeath.gif CavemanNinjaSaberDeath2.gif
Unfortunately, the enemy was never coded, so all it's doing now is taking up a significant chunk of the object graphics ROM.

The Stage 4 cavewoman has an unused animation of her looking off to the side. It's worth noting that none of the other cavewomen are animated; this was probably meant to be used on the location test screen.

(Source: Original TCRF research)

Developer Text

Labels for the game's music, sound effects, and instrument samples can be found in the audio CPU.


0x40E8 open.bgm 0x43E4 bgm1.bgm 0x5518 bgm2.bgm 0x5A24 bgm3.bgm 0x6B4F bgm5.bgm 0x73E9 boss1.bgm 0x7F2F clr1p.bgm
0x828B clr2p.bgm 0x8507 branch.bgm 0x8772 end1.bgm 0x8D25 end2.bgm 0x908D end3.bgm 0x9300 ending.bgm

Sound Effects

Text starts at 0xA8A5.

p_out p_ono p_thnd p_chak p_kiai p_jump t_nige1 t_nige2 p_damag p_konbo
p_small t_wing1 t_wing2 korogaru korogaru F_fuku F_nageru F_jimeny mizu kusa
coin-b kiba_na kiba_ht t_nige2 foods buki kudake j-copter j-copter Jr._pyu
hajiki t_maru gaiko b_haku ice_b ice_b kami k_baku kamina b_hit
o_hit h_hit f_hit attack t_hana keikoku p_out2


Text starts at 0xCA01.

flute bonend bonusbassd afr_bass afr_bass a_bassx gamran baribari steeldrum1 steeldrum2
piano_2 piano_3 piano_4 piano_5 piano_6 piano_7 piano_8 pia_casio pia_gt hiseqx
seque badbell belflute bellsyn belviola chaimer kinkon toybell abc cheap
kira1 kira2 metalsyn analogue flution flution2 gira hamowire soundtrack soundtrac2
synclavi clav_1 delayer masked melody percle readcal spaces synther tremolo
tubasyn wavewire wire analogue2 tomita voice1 voice2 voice3 voice4 voice5
voice6 voice7 voice8 voice9 accordion 3 celest_1 celest_2 e_organ1 e_organ2 e_organ3
e_organ4 hammond_1 hammond_2 impact_org organ_1 organ_2 organ_3 organ_4 soften organ_v1
organ_v2 esn_org ob_organ1 ob_organ2 sx_organ waveorgan porgan_1 porgan_2 porgan_at harpsi
ginginlead lead maskedlead syorgan1 syorgan2 marimba_1 marimba_2 marimba_st melody_at mokkin_at
s_xylo vibra_1 vibra_2 vibra_3 xylo_1 xylo_2 shami_1 shami_2 e_guitar1 e_guitar2
grassharp guitar_1 guitar_cx bright_dis clavsitar hard_g hardy_1 hardy_2 hardy_3 hardy_4
hardy_5 low_dist a_bass a_bassx afr_bass bright_wb w_bass analog_b1 analog_b2 analog_b3
analog_b4 syn_b1 syn_b2 syn_b3 syn_b4 syn_b5 syn_b6 syn_b7 syn_b8 syn_b9
syn_b10 thick_b bassclavi bright_b1 bright_b2 dx7_b e_bass1 e_bass2 e_bass3 e_bassx
pick_b1 pick_b2 pick_b3 ricken_b rr_bass log_bass mokugyo_b casio_cym ride_symba hr_snare
meka_dr1 meka_dr2 meka_drm3 metalhit1 metalhit2 noise_sd noise_sd2 snare waterclap bd_tom
bowlhit smallbowl b_drum afr_drm1 afr_drm2 baribari gamran steeldrum1 steeldrum2 steeldrum3
steeler at_clari fagot fue piccolo1 sht_brs syn_oboe trp_1 trp_2 trp_3
trp_4 brs_1 brs_2 crystal hard_brs 5th_brs1 metal_brs opl_brs1 opl_brs2 opl_brs3
rise_brs slow_brs wave_brs wave_brs2 5th_brs1 5th_brs1 bell_brs delay_brs vivi_brs bassoon
brk_sax cheap_horn hard_horn hi_sax hornsect sax_1 sax_2 sax_3 soft_sax softuba
syn_brs1 syn_brs2 syn_sax cembalo_1 cembalo_2 solovln_1 solovln_2 solovln_3 violin_1 violin_2
violin_3 violin_4 5th_str lane distrings hi_str orchstra strings syn_str1 syn_str2
syn_str3 pizz_1 pizz_2 vioboe bass50 bass60 bass70 bass80 bassd80 harpsi5
harpsi brass1 brass2 brass3 brass3
(Source: Original TCRF research)

Regional Differences

In the Japanese version only, hitting certain spots in the first two rounds will reveal a special bonus item: Chelnov! After appearing, he'll try to escape by running to the left. Collecting him earns the player 1000 points.

CavemanNinjaChelnov21.png CavemanNinjaChelnov22A.png CavemanNinjaChelnov22B.png
This object is still in non-Japanese versions, but extra code was added to the object's initialization subroutine that instantly deletes it.

(Source: Original TCRF research)