We just reached 30,000 articles on this wiki! 🥳
If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

NFL Instant Replay (CD-i)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

NFL Instant Replay

Developer: Capitol Disc Interactive
Publisher: Philips Media
Platform: CD-i Digital Video Cartridge
Released in US: 1995


DevTextIcon.png This game has hidden development-related text.


Hmmm...
To do:
Document the June 15th, 1995 prototype.

NFL Instant Replay finally lets you play as the referee instead of the football players themselves. Can you correctly judge enough low-quality clips to make it to the Super Bowl?

Debugging Files

Elementary, my dear Cactus.
This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: Can this debug mode be reactivated in some way?

Three unused files can be found on the disc, all of which contain code and strings meant for a debugging mode. It would've been controlled using a keyboard and a CD-i dev kit.

cdi_replayd

The first, largest file is cdi_replayd, a debug version of the used file cdi_replay. Its contents can be sorted into three chunks.

Chunk 1 deals with the gameplay logic itself, though there's nothing noteworthy in it due to its simplicity.

REPLAY ANSWER FLASH

AnswerTimeout...
answer.c
{{{{ Q=%d, idx=%d, str=%d
AnswerTimeoutCleanup...
AnswerSelected: 1:%d 2:%d
AnswerSelected: p1a:%d p2a:%d
AnswerSelected: p1d:%d p2d:%d
AnswerSelected: Showing answer...

BUTTON ESTABLISHED
buttons.c
HILITE RIGHT %d %d
buttons_shown = 0x%x
USING EXIT
HILITE LEFT %d %d
SELECT %s
PLAY_BTN
EXIT_BTN
REPLAY DIMMING

DistributionLogoShow...
distribution.c
DistributionLogoHide...

DyuvscreenShow (0x%x,%d,0x%x)...
dyuvscreen.c

REPLAY FMV PIC
REPLAY FMA UNF
No fmv cartridge!!!
fmv.c
%s...
Setting video stream
Ack!
Setting black border
Setting window origin
SETTING FMV POSITION FOR PAL DISPLAY!
Positioning window
SETTING FMV POSITION FOR NTSC DISPLAY!
Setting window size
Can't get handle to FMV map

Loading first frame...
BEFORE LOOP...
DONE.

Cannot pause FMV decoder.

Error initializing font colors.
font.c
Error loading font color.
text: Error rendering string.

ANIM HANDLER
Cannot install video signal
gameanim.c
Unknown GameMenu animation type (%d)
GameanimUncompress: not a dyuv delta package
GameanimUncompress: Bad data (frame %d)
GameanimUncompress: Bad decompression (frame %d)

WATCH_NEXT: p%d: %d
WATCH_TIMEOUT: p1=%d, p2=%d

Gamemenu Init...
gamemenu.c
PLAYER1 ACTIVE: %d, PLAYER2 ACTIVE %d
Briefs (active = %d)...

GamemenuAnswerDone
GamemenuAnimFeedback: Unable to save watch
GamemenuAnimFeedback: Can't restore watch
GamemenuNextQuestionStart: level_done = %d

Starting INTRO...
Starting Next Question play...

REF FEEDBACK PLAY (level = %d, level_done = %d)
QUESTION_DONE
CURRENT LEVEL IS NOW %d
PLAY DEBUG IS '%s' (Q=%d)
Next Play:

X ESTABLISHED
Y ESTABLISHED
RIGHT
LEFT
UP
DOWN

Input handler now 0x%x
input.c
Input handler REMOVED
PTR HANDLER

Ptr device %d is '%s'...
joystick.c
Ptr device %d open FAILED...
Ptr device %d open SUCCESSFULL...
Can't get devname from CSD for ptr device %d

Welcome to Instnat Replay !!
main.c
%s...
Resident data load
Main menu init
Enabling joysticks
MAIN LOOP...

MainmenuCleanup: Unable to copy bkgnd
mainanim.c
MainanimTextUncompress: not a dyuv delta package
MainanimTextUncompress: Bad data (frame %d)
MainanimTExtUncompress: Bad decompression (frame %d)
MainanimTextUncompress: Bad decompression (frame %d)
MainmenuAnim: not a dyuv package
MainmenuAnim: %d frames, hidden = 0x%x
MainmenuAnim: Bad data (frame %d)
MainmenuAnimSingle: Bad decompression (frame %d)
MainmenuAnimReset: not a dyuv package
MainmenuAnimReset: %d frames, hidden = 0x%x
MainmenuAnimReset: Bad data (frame %d)
MainmenuAnimReset: Bad decompression (frame %d)

mainmenu_show: Unable to copy bkgnd
mainmenu.c

STARTING ATTRACT LOOP...
MainmenuCleanup...

NofmvShow...
nofmv.c
NofmvHide...

Error creating '%s' file
nvram.c
nvram_close_file: nvr_close failed.
'%s' created, size %d
Error opening NVR file
nvram_close_file: nvr_close_mem failed.

FILE CRC is 0x%x
Error writing to nvri file!
Error writing CRC to nvri file!
Error reading from nvri file!
Error reading CRC from nvri file!
CRC: 0x%x, calculated CRC: 0x%x
CRC is BAD!!!
NO NVRI FILE!!!

ERROR: Could not get size of NVRAM.  SAVE ENABLED.
WARNING: Saving would exceed 98%% of nvram, SAVE DISABLED.
NVRAM size OK, SAVE ENABLED.

Error deleting '%s'
Error getting nvram dir
**** NONE ****
%2d) %35s%6d

NvrfullShow...
nvrfull.c
NvrfullHide...

Play: RTF %d  Sector %d  
play.c
 (%s,%s)
Tasking 
Not Tasking
Async
Sync
Play failed!

Here's datamap %d
Here's pixmap %d
Async play done: stat=0x%x
Sync play done: stat=0x%x

=== RANDOMIZING LEVEL %d:
question.c
%d,

--- SELECTED OPTION %d ---
reentry.c

Unable to link to font.
resident.c
Unable to set font clut.

--- RESTORING NVRAM DATA ---
roster.c
*** NVRAM IS FULL! ***
--- CREATING NVRAM DATA ---

ROS1 ITEM = %d
SELECT ITEM %d
ROS2 ITEM = %d
PLAYER %d total is %d

Error loading player 1 score color.
score.c
Error loading player 2 score color bank.
Error loading player 2 score color.
Can't display score (hundreds) for player %d
Can't display score (tens) for player %d
Can't display score (ones) for player %d
REPLAY SOUNDMAP

DOG DEBUG MENU
rpcontext
sm
play_buffers
errno
%s...
start.c
Application init
Ack!
root dir = "%s"
Callback init
Keyboard debug
Installing Play
Opening video event
Grabbing memory

Can't install keyboard signal
PCB debugging is %s...
ON
OFF
> 
Context flags are 0x%x.
Context status is 0x%x.
RP_DEBUG (0x%x)?
%x
PLAYER1 ACTIVE: %d
PLAYER1 STATUS: %d
PLAYER2 ACTIVE: %d
PLAYER2 STATUS: %d
Rapid fire: %d
Player1 Total?
%d
Player2 Total?

c - CTE
d - PM spit
s - Signal dump
z - Rectangle display
r - Rectangle debugging

TimerSet: Timer already active!
timer.c
TimerSet: Unable to install timer task
TimerDelete: No active timer!
TimerDelete: Unable to delete timer task

Set video event: %d
videoevent.c

Chunk 2 focuses on the engine and its interactions with the CD-i, and includes FMV debug functions at the beginning.

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_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

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   

Number of colors %d too low; min is 2
CD_font_clut.c
Number of antialias colors must be a power of two
Number of antialias colors %d too high; max is %d
Number of antialias colors %d wrong for font: must be %d
Invalid font type
Clut buffer %d bytes too small; need %d
txt_clut_make failed

Font module has bad sync
CD_font_link.c
Font link failed
Font has unknown type

No PRL character render function installed
CD_font_render.c
No PIMS character render function installed
Invalid font type
No PRL string render function installed
No PIMS string render function installed

Invalid font type
CD_font_width.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

Couldn't find FONT8X8!
CD_disc_error.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

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

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

Chunk 3 features the CD-i graphics editor/second chunk-esque strings ubiquitous among the debug files of CapDisc's games. It also contains the text of a memory editor made by 'VDS and JHO', present in a select few of their titles.

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 file is cdi_driversd, a debug version of the used file cdi_drivers. It has 12 additional kilobytes of data spread throughout the file, including these 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

cdi_replayd_data

The third, smallest file is cdi_replayd_data, a debug version of the used file cdi_replay_data. The only change between the two is the addition of two KB of data near the middle/end of the former.