Who Shot Johnny Rock? (CD-i)
Who Shot Johnny Rock? |
---|
Developer: Capitol Disc Interactive This game has hidden development-related text. |
Who Shot Johnny Rock? "I" said the sparrow, "with my bow and arrow. I shot Johnny Rock."
To do: Document the April 24th, 1995 prototype. |
Debugging Files
This needs some investigation. Discuss ideas and findings on the talk page. Specifically: Can this debug mode be reactivated in some way? |
Two unused files can be found on the disc, both of which contain code and strings meant for a debugging mode. This mode would've been controlled using a keyboard and a CD-i dev kit.
cdi_rockd
The first, larger file is cdi_rockd, a debug version of the used file cdi_rock. Its contents can be sorted into three segments.
The first segment deals with the gameplay itself, and contains lists of variables, special cutscenes, and target types. There's also a huge list of every cutscene at the segment's beginning, which has been excluded for viewing purposes.
DOG DEBUG MENU Can't install keyboard signal start.c JR_timer_set: Unable to install disc_error task cdi_rmail play_buffers jr_casino_index jr_warehouse_index jr_garage_index jr_pool_hall_index jr_clues jr_this_clue jr_repeat_random_place jr_max_random_count jr_goto_after_random jr_got_this_clue jr_random_count jr_place_bits jr_max_repeat jr_who_did_it jr_mansion jr_pool_hall jr_garage jr_casino jr_warehouse jr_in_warehouse jr_got_to jr_office jr_lucky_no jr_office_count jr_hand_go_to_mansion jr_in_office jr_ammo_again jr_got_this_no PCB debugging is %s ON OFF editmem: Error: %d Context flags are 0x%x. Context flags_sys are 0x%x. Context status is 0x%x. Rect display is %s Rect debugging is %s Jump to what scene number? Jumping to scene %d Illegal scene (%d) RP_DEBUG (0x%x)? %x BEEN_TO (0x%x)? ******* jr_this_clue=%d jr_jr_had_go_to_mansion=%d jr_office_count=%d pool_hall=%d casino=%d warehouse=%d garage=%d jr_this_clue=%d jr_in_office=%d ******* c - CTE d - Toggle pcb_debug e - editmem f - been_to reset g - JR_fmv_and_play_continue G - Display context PCB h - hit_rect_shorter H - hit_rect_taller j - Jump to scene k - Kill play. K - Generate errors p - JR_fmv_and_play_pause P - RP Context flags r - toggle jr_rect_debug R - set rp_debug s - callback_dump v - display game info w - hit_rect_skinnier W - hit_rect_wider x - hit_rect_left X - hit_rect_right y - hit_rect_up Y - hit_rect_down z - toggle jr_rect_display . - rect_print $ - Set money to $2000 ^ - Set money to $200 Generating error. dist_logo_show distribution.c dist_logo_hide ROCK FMV PIC No fmv cartridge!!! fmv.c SETTING FMV POSITION FOR PAL DISPLAY! %s... Positioning window Ack! SETTING FMV POSITION FOR NTSC DISPLAY! Can't get handle to FMV map JR_fmv_play: sector start: %d Error pausing FMV. JR_fmv_continue Error continuing FMV. Error pausing play. Error continuing play. JR_hit_rect_on: Exceeded max rectangles (%d) hitrect.c DANGER! Pause %d too long! fixing! (((PAUSING FOR %d ticks (scene delay = %d) @ %d))) Hit rect: %d hit_rect_up: Already at top!!! hit_rect_down: Already at bottom!!! hit_rect_left: Already at left edge!!! hit_rect_right: Already at right edge!!! hit_rect_shorter: Can't get any shorter!!! hit_rect_taller: Can't get any taller!!! hit_rect_skinnier: Can't get any skinnier!!! hit_rect_wider: Can't get any wider!!! [%d]=(%d,%d, %d,%d) %d is not a valid hitrect index, max=%d, mask=0x%x illegal left bound (%d) illegal right bound (%d) illegal top bound (%d) illegal bottom bound (%d) (((PAUSE DONE))) JR_scene_start: %s (%d) scene.c JR_scene_start (%d) JR_scene_start: Scene %d does not exist! Aborting... JR_scene_branch (%d) --INTERRUPT-- Scene_done JR_mm_start mainmenu.c Saved scene = %d Invalid ID to select: %d Failed to blit object[%d] Invalid ID to deselect: %d BEGINNING GAME (money = %d, bullets = %d) CONTINUING GAME (money = %d, bullets = %d) DOING CREDITS DOING HELP JR_town_start town.c going to the office value %d going to the ammo store jr_money %d jr_ammo_again %d going to the warehouse value %d going to the garage value %d going to the pool hall value = %d going to the casino value %d going to the mansion value %d JR_clue_start jr_curr_scene %d clue.c jr_curr_scene - SCENE195 = %d clue_next = %d PICK: P: %4d R: %4d gameops.c gameops_next_scene with < 0 money. JR_gameops_next_scene: function type %d next_scene: NXT_DIED next_scene: NXT_KILLINNOCENT ### KILLED an innocent person next_scene: NXT_ENTCASINO next_scene: NXT_CASINOWHAT next_scene: NXT_GIVECLUE next_scene: NXT_PICKMAP next_scene: NXT_RANDOMSCENE NXT_RANDOM: case 1 scene = %d end_scene = %d addr: 0x%08x next_scene: NXT_ENDRANDSCENE next_scene: NXT_ENTGARAGE next_scene: NXT_ENTWAREHSE next_scene: NXT_ENTPOOLH next_scene: NXT_ENTMANSION next_scene: NXT_POOLHCLUE next_scene: NXT_WAREHSECLUE next_scene: NXT_GARAGECLUE next_scene: NXT_PICKCLUE: /* called from casino * next_scene: NXT_PICKLUCKNO next_scene: NXT_PIKUNDRTAKR next_scene: NXT_BOMBDEAD $$ = %d next_scene: NXT_PICKFLOWERMAN next_scene: NXT_GAMEOVER next_scene: NXT_YOUWIN next_scene: NXT_CALLATTRACT next_scene: NXT_194 next_scene: NXT_207 next_scene: NXT_DEFAULT NEXT func DEFAULT should not be passed to gameops.c next_scene: NXT_START Unknown NEXT func (%d) hitrect: KILLINNOCENT hitrect: COMBNOA0 hitrect: COMBNOA1 hitrect: COMBNOA2 hitrect: COMBNOA3 hitrect: COMBNOA4 hitrect: COMBNOA5 hitrect: COMBNOB0 hitrect: COMBNOB1 hitrect: COMBNOB2 hitrect: COMBNOB3 hitrect: COMBNOB4 hitrect: COMBNOB5 hitrect: LUCKNO0 hitrect: LUCKNO1 hitrect: LUCKNO2 hitrect: LUCKNO3 hitrect: LUCKNO4 hitrect: LUCKNO5 hitrect: MANBUST hitrect: BLUEDRESSPIC hitrect: GWASHINGTON hitrect: MONALISA hitrect: WOMANBUST hitrect: CAT hitrect: PLATE hitrect: INDIAN hitrect: MODERNPIC hitrect: COATOFARMS hitrect: BOYINREDPIC hitrect: BLUEVASE Unknown HITRECT func (%d) PICK: R: %4d M: 0x%08x A: 0x%08x P: %4d BAD SAVE VERSION! Checking value %d against %d nofmv_show nofmv.c Play failed! play.c Done Check: PCB: Stat 0x%04x, Sig 0x%04x (%03d) FMV: Stat 0x%04x, Sig 0x%04x (%03d) FMA: Stat 0x%04x, Sig 0x%04x (%03d) ERRNO: %03d DISC POS: %d Unknown FX number (%d) JR_timer_set: Unable to install timer task timer.c JR_timer_delete: Unable to delete timer task sm_out failed soundmap.c JR_task_func_once: Unable to install task task.c func_ounce_handler: Unable to delete task JR_calib_start calibration.c DANGER! FAILED CALIBRATION: BAD SHOTS! AVG POINT1: (%d,%d) AVG POINT2: (%d,%d) DANGER! FAILED CALIBRATION: SHOTS CROSSED! calib_timeout practice_start practice.c Mucking with old matte %d new matte %d practice_timeout JR_controller_start controller.c Controller set to: %d missed_show missed.c JR_nvram_test nvram.c JR_nvram_test found an existing save file... JR_nvram_test enough space found... JR_nvram_save: save failed, deleting junk save file. JR_nvram_restore: restore failed, deleting unusable save file. Johnny Rock NVR file does not exist. Creating Error creating '%s' file JR_cross_start cross.c JR_gen_start genfmv.c Couldn't find FONT8X8! CD_disc_error.c PCB: Stat 0x%04x, Sig 0x%04x (%03d) FMV: Stat 0x%04x, Sig 0x%04x (%03d) FMA: Stat 0x%04x, Sig 0x%04x (%03d) ERRNO: %03d DISC POS: %d
The second segment focuses on the game engine and the CD-i itself, and includes some FMV debug functions near its middle.
CV_cp_calibrate: Can't send CALIBRATE letter. cp_calibrate.c CD_rp_load_map(): error during seek to map. CD_rp_load_map.c Couldn't load map file. Path %d PCB_Chan 0x%0x Unknown status, assuming error Starting FX! CD_rp_task.c CD_rp_task: invoking effect %d CD_rp_task: invoking effect %d buffer index %dID %d CD_rp_task: PLAY_DONE flag set RP PLAY DONE RP AUDIO BUF FULL RP DATA BUF FULL RP FX TIMER RP VIDEO BUF FULL RP FMV PIC RP FMV LPD RP FMA UNF CD_rp_play: Play attempt with uninitialized context. CD_rp_play.c CD_rp_play: Map load failed. Error! curAsset %d Audio PCL at 0x%08x has type %ld! audio in, PCL Buf 0x%08x Error! curAsset %d Data PCL at 0x%08x has type %ld! data in, PCL Buf 0x%08x FX occurs before buffer is ready! FX %d Buffer %d Type %d *FX alarm went off* SetFMVTrigger: ERROR setting FMV triggers ClearFMVTrigger: ERROR clearing FMV triggers SetFMATrigger: ERROR setting FMA triggers ClearFMATrigger: ERROR clearing FMA triggers CD_rp_play(): map read failed, retry attempt #%d trying backup map at sector %ld I give up, calling done_func PlayFMVCleanup: ERROR aborting FMV PlayFMVCleanup: ERROR aborting FMA Error during play (stat = 0x%x)! FMV stat = 0x%x FMA stat = 0x%x PlayDone: Play is done! Setting PCL 0x%x MapLoc 0x%x Size %d SetupFMV: ERROR setting FMV triggers SetupFMV: ERROR setting FMA triggers CD_rp_play(): cur map file has no channel %d Couldn't start FMV decoder?!? Stat = 0x%x Couldn't start FMA decoder?!? Stat = 0x%x Playing record at sector %ld Couldn't play record?!? Error! curAsset %d Video PCL at 0x%08x has type %ld! submode 0x%02x coding 0x%02x video in, PCL Buf 0x%08x Setting pixmap %d's LAT to buffer %d RpSetFMVTrigger: ERROR setting FMV triggers RpClearFMVTrigger: ERROR clearing FMV triggers RpSetFMATrigger: ERROR setting FMA triggers CD_callback: Unhandled signal received: class %d, value %d CD_callback_init.c CD_callback_attach: Illegal callback structure. CD_callback_attach.c CD_callback_replace: Illegal callback structure. CD_callback_replace.c CD_callback_remove: Illegal callback structure. CD_callback_remove.c Callbacks: CD_callback_dump.c Class %2d: Value %2d (0x%08x): 0x%08x,0x%08x Value * (0x%08x): 0x%08x,0x%08x %s No Label 0x%08x,0x%08x CD_mm_send failed for new event CD_cp_flush.c CD_mm_send failed requeued letter (type=0x%x) Can't create cp mailbox. CD_cp_install.c CP install failed. cdi_cd_cp cdi_cp_mail Incompatible versions: libraries (%d), cursor process (%d) CD_cp_mail: Can't send letter for type %d. CD_cp_mail.c CD_cp_qsize: Can't send Q_SIZE letter. CD_cp_qsize.c CD_cp_setlimits: Can't send OP_CP_LIMITS letter. CD_cp_setlimits.c CD_ifx_get_params(): param too big (%d/%d) CD_ifx.c CD_ifx_perform(): bad fx (%d) CD_pm_show.c CD_tasks: execute CD_task.c (0x%x) recursion (%d) task %d:0x%x Could not allocate task - task array full CD_task_install.c Can't open FMV video path CD_applinit.c FMV Paths opened Opened Full Motion descriptors Load module %s:%d CD_appl_init: Can't load module: %s into plane %d CD_appl_init: Can't open file '%s' Can't ss_enable controls CD_cdroot.c CFREE: _srtmem error %d 0x%x CD_cfree.c CD_malloc grabbing %d bytes from %x CD_malloc.c (%s:%d) CD_free: INVALID POINTER : 0x%x SYNC : 0x%x CD_free releasing %d bytes at 0x%x init Can't get init module CD_get_plane.c line_event CD_vd_open : csd_devname fails CD_vd_open.c CD_vd_open : Could not open %s Can't get name of monitor. vd_compat.c Can't get monitor parameters. LI= Can't determine the monitor type. 625 TV CD_rp_continue: Play not paused. Context 0x%x CD_rp_continue.c CD_rp_continue: Physical play done. Context 0x%x PCB: Stat=0x%x Sig 0x%x Rec=0x%x CD_rp_debug_pcb.c AChan=0x%x Chan=0x%x Video PCLs: Audio PCLs: Data PCLs: Channel %d: PCL=0x%x Ctrl=0x%x Smode=0x%x Type=0x%x Sig=0x%x Buf=0x%x BufSz=%d CD_rp_dump_map(): bad key [0x%04x] CD_rp_dump_map.c chanMask 0x%08x aChanMask 0x%04x start sector %ld offset to next %d # Video Assets: %d Size %3d Buff %3d # Audio Assets: %d # Data Assets: %d CD_rp_pause: Play already paused. Context 0x%x CD_rp_pause.c CD_rp_pause: Attempting pause before a sector read.Context 0x%x CD_rp_pause: Physical play is done. Context 0x%x Play is already finished! CD_rp_stop.c Tried to start FX while play paused! rpfx.c No more FX (done %d of %d)!! During play, FX offset %d startPos %d During play, alarm for FX #%d @ %d cur_pos %d After play, alarm for FX #%d @ %d deleting rp fx alarm %d Can't set alarm for FX! alarm %d set to occur in %d ticks
The last segment features the CD-i graphics editor/second segment-esque strings that's ubiquitous among the debug files of CapDisc's games. It also contains the text of a memory editor made by 'VDS and JHO' - an earlier version of this editor can be seen in the debug files of Axis & Allies and Effacer: Hangman from the 25th Century.
Quit New Control Table Dissassemble Enter Instruction Help Search for Instruction Insert NOPs into the LCT 1.02 CD control table editor V%s Starting line? Number of lines? 8 (normal) 4 (double) 8 (high) Half Full Black Blue Green Cyan Red Magenta Yellow White OFF CLUT8 CLUT7/RL7 CLUT7/RL7 (Dual) DYUV CLUT4/RL3 RGB555 QHY END IFCA IFCB Matte Flag Off Matte Flag On Matte Flag Off + IFCA Matte Flag On + IFCA Matte Flag Off + IFCB Matte Flag On + IFCB 1 2 A over B B over A x2 x4 x8 x16 Normal Runlength Mosaic Bit = 0 Bit = 1 CKey = FALSE CKey = TRUE MFlag 0 off MFlag 0 off & CKey FALSE MFlag 0 on MFlag 0 on & CKey TRUE MFlag 1 off MFlag 1 off & CKey FALSE MFlag 1 on MFlag 1 on & CKey TRUE off on Line? Column? clut number red value green value blue value matte register Enter opcode matte flag icf x position Enter brightness Enter color clut bank Not allowed! Enter mode Enter pixel repeat Enter Bits/pixel icf value Enter plane A ICM Enter plane B ICM Enter # mattes external video enable pixel hold pixel hold factor Enter plane order mixing: 0=OFF, 1=ON Enter plane A TCI Enter plane B TCI y start value u start value v start value Write failed, errno=%d! FCT 0 FCT 1 LCT 0 LCT 1 PAL LCT 0 PAL LCT 1 Decode which control table? 8bpN 8 bits/pixel, Normal resolution 4bpD 4 bits/pixel, Double resolution 8bpH 8 bits/pixel, High resolution Any color can be at 1/2 intensity ?? Illegal -- Off c4 Clut 4 or RunLength 3 c7 Clut 7 or RunLength 7 77 Clut 7/7 or RunLength 7/7 (dual clut) c8 Clut 8 dv r5 qy ??? Illegal value end Ignore all commands in higher registers icfa Change ICF value for plane A icfb Change ICF value for plane B MFoff Turn Matte Flag off MFon Turn Matte Flag on offIa Turn Matte Flag off and change ICF for plane A onIa Turn Matte Flag on and change ICF for plane A offIb Turn Matte Flag off and change ICF for plane B onIb Turn Matte Flag on and change ICF for plane B nml rl RunLength enabled mos Mosaic enabled Illegal mode b0 Transparency bit 0 B1 Transparency bit 1 cF Color Key FALSE cT Color Key TRUE m0F Matte Flag 0 FALSE m0FcF Matte Flag 0 FALSE or Color Key FALSE m0T Matte Flag 0 TRUE m0TcT Matte Flag 0 TRUE or Color Key TRUE m1F Matte Flag 1 FALSE m1FcF Matte Flag 1 FALSE or Color Key FALSE m1T Matte Flag 1 TRUE m1TcT Matte Flag 1 TRUE or Color Key TRUE Never transparent Always transparent CLUT<clut number> <red> <green> <blue> <clut number> 0 - 63 <red>, <green>, <blue> 0 - 255 72 5.5 MR<register> <op> <matte flag> <icf> <x position> <register> 0 - 7 op <matte flag> 0 - 1 <icf> 0 - 63 <x position> 0 - 1023 83 5.10.3 BKCOL <color> color 91 5.13 CLTB <bank> <bank> 0 - 3 DLS <address> 57 4.5.2.2 DPRM <mode> <pixel repeat> <bits/pixel> mode <pixel repeat> 2, 4, 8, or 16 bits/pixel 59 4.6.1 ICF<plane> <value> <plane> A or B <value> 0 - 63 79 5.9 ICM <icm A> <icm B> <# mattes> <external video> <clut bank> icm A icm B <# mattes> 1 - 2 <external video> 0 - 1 <clut bank> 0 - 1 58 LINK LCT <address> 56, Note 1 4.5.1 MCOL<plane> <red> <green> <blue> <plane> A or B <red> 0 - 255 <green> 0 - 255 <blue> 0 - 255 76 5.7.2.2 PHLD<plane> <enable> <value> <plane> A/B <enable> on/off <value> 0 - 255 86 5.11.1.1 NOP 56 PO <value> <value> B over A or A over B 75 5.7.1 SIG video interrpt 74 5.6 TCOL<plane> <red> <green> <blue> TCI <mix> <tci a> <tci b> <mix> on/of(f) tci a>, <tci b 5.7.3 YUV<plane> <y> <u> <v> <y> 0 - 255 <u> 0 - 255 <v> 0 - 255 61 4.6.2 Starting row Starting column Number of rows Number of columns Any Clut Instruction Specific Clut Number Any Matte Instruction Specific Matte Register Look for: CLUT number Matte Register Start line? Step (-1 or +1) ? Instruction not found. At line %d , column %d : %s CLUT MR BKCOL CLTB DLS DPRM ICF ICM LCT MCOL PHLD NOP PO SIG TCOL TCI YUV Choose Instruction Type: Green Book Reference: Vol. I, V.%s, page V-%s %s %2d) %%-%ds ==> <%s> is one of: %-5s %s Allowed on plane A or B (may be set independently on each) (different opcodes on each plane) plane A only CLUT%-2d %3d %3d %3d CLTB set bank %-5d DLS 0x%-13x ICF%c %-14d LINK LCT 0x%-8x MCOL%c %3d %3d %3d PHLD%c %-3s %3d on off %-19s NOP PO %-16s B ovr A A over B SIG video interrupt TCOL%c %3d %3d %3d YUV%c %3d %3d %3d ERROR in the CT?? Black 1/2 Blue 1/2 Green 1/2 Cyan 1/2 Red 1/2 Magenta 1/2 Yellow 1/2 White Blue Green Cyan Red Magenta Yellow White BKCOL %-13s Dumping FCT #%d, starting line=%d numlines=%d %03d %s Dumping LCT #%d, start line=%d numlines=%d %3d %s : invalid address : invalid array reference : alignment error %20s[] 0x%06x [%d] %20x 0x%06x [%d] = 0x%02x = 0x%04x = 0x%08x %20s[0]: %20s : usage: r [<addr> [<len>]] read memory w <addr> <byte1> [...] write to memory m <addr1> <addr2> CD_mem_diag() & print addresses * print values q quit editor <addr> may be one of: [0-9]* decimal quantity 0x[0-9a-fA-F] hexadecimal quantity &<name> address of <name> <name> address <name> points to <name>[<index>] address of element <index> in <name> Memory Editor V2.0 (by VDS and JHO) *** %s usage: w addr [b1 [b2 [...]]] usage: m <addr1> <addr2> %-30s%-50s device table path table process table event table Address Size Type Tag 0x%08x-%08x %8d %-8.8s %s UNKNOWN FREE MODULE DMAP DMAPDESC SMAP SMAPDESC DBLOCK LINE ADR PROC MEM DEV MEM PATH BUF MOD MEM RES NODE RES TAG %s (line %d): WARNING: %d: %s (line %d): ERROR: %d: CD_ap_open : csd_devname fails CD_ap_open.c CD_ap_open : Could not open %s CD_iff2fct_clut.c
cdi_driversd
The second, smaller file is cdi_driversd, a debug version of the used file cdi_drivers. It has 12 additional kilobytes of data, including this set of strings:
/cd Cannot chd to /cd (errno %d) /cd Cannot chx to /cd (errno %d) dvr_name = '%s', filename = '%s' About to load new driver Driver load failed (errno = %d)! About to load application %s No System RAM, using Plane B Error %d loading %s About to chain to application %s Error %d chaining to %s
Cleanup > Pages missing date references
Cleanup > Pages missing developer references
Cleanup > Pages missing publisher references
Cleanup > To do
Cleanup > To investigate
Games > Games by content > Games with hidden development-related text
Games > Games by developer > Games developed by Capitol Multimedia > Games developed by Capitol Disc Interactive
Games > Games by platform > CD-i games > CD-i Digital Video Cartridge games
Games > Games by publisher > Games published by Philips > Games published by Philips Media
Games > Games by release date > Games released in 1995