If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Backgammon (CD-i)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Backgammon

Developers: Capitol Disc Interactive, PIMA
Publisher: Philips Media
Platform: CD-i
Released in US: 1992
Released in EU: 1992


DevMessageIcon.png This game has a hidden developer message.
CopyrightIcon.png This game has hidden developer credits.
DevTextIcon.png This game has hidden development-related text.


Backgammon on the CD-i!

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?

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_bg

The first, larger file is cdi_bg, a debug version of the used file cdi_bgnd. It can be split up into three distinct chunks.

Chunk 1 deals with the Backgammon game itself. It also contains some interesting messages from the developer(s).

Starting CV_applinit
BG_main.c
Death in applinit
Starting up hot spot manager
Cannot create base hotspot.
Cannot create 2nd hotspot.
Cannot create present hs
Cannot add base hotspot.
Cannot add 2nd hotspot.
Cannot add present hs
Setting up video hell
Cannot open video interrupts.
Play init COMPLETED!

Attempting to run bumper!
BUMPER has failed! Reload appl_datpath

Continuing after bumper fiasco
Installing cursor process
Installing AI process
Done with installing AI
Loading the mixing task!

Unable to FORK mmixer!

MMIX_REAL_PD : 0x%x

Mixing Task Loaded!
Clear out play 
blob %d mem_sm %d a_inx %d play_id %d evil %d animp %d endcond %d end_it %d

Cursor Event! 0x%x state 0x%x

AI message received
Unknown opcode 0x%x.

...subsiding...

Unable to turn off audio processor

Main LOOP Input Competancy
HUMAN        : 0
NOVICE       : 1
INTERMEDIATE : 2
EXPERT       : 3

Skill level : %d

RP DEBUG (0x%x): %x
bg_sound_slab[%d] : 0x%x id %d
ext_ster[%d] : 0x%x id %d
ext_mono[%d] : 0x%x id %d
big_ster : 0x%x id %d
mono:ptr : 0x%x id %d

Response for [0:%d] and [1:%d]
BLURT : %d
UNBLURT : %d

cur_loc 0x%x ad_count %d bg_a_index %d

Composer list :  %d

CURSOR (%d,%d), %s, VISIBLE NOT VISIBLE
tracking %s, Qsize %d

ON
OFF
::::::::DANGER::::::::
Slot : Mine : Theirs : Last piece at %d

Sending AI query
CURSOR Q SET TO %d
FLUSHING CURSOR Q

our_cur_loc 0x%x
rtf %d rec %d chan %d rec ptr 0x%x chan ptr 0x%x
vd alloc %d count %d resp %d
ad alloc %d count %d resp %d
data alloc %d count %d resp %d
fx count %d resp %d
trig %d tid %d
done %d stat %d alarm_pend %d
funcmap 0x%x datapath 0x%x alm_id %d
ext_mono[%d] 0x%x 0x%x 0x%x 0x%x 0x%x
ext_ster[%d] 0x%x 0x%x 0x%x 0x%x 0x%x

WAILING A READ REQUEST TO THE CURSOR PROCESS
Free memory
TOTALS

dim_off called - dim_counter %d

Setting transition dm(%d)
BG_transition.c
Clearing transition dm

Disposing transition dm(id %d), bg_displayed_dm(0x%x : id %d)

bg_displayed_dm %d(0x%x)
transition_dm %d(0x%x)

BG_std_donefunc : stat 0x%x
BG_std_eorfunc : bg_a_index %d
BG_std_audiofunc: inx %d
BG_fx.c

Error making clut fct instructions.
CV_ct_setcluts failed for plane %d.

BG_fx_pcl_out : cur_loc 0x%x
Unable to install timer!

end_it %d play_done %d last_a %d bg_a %d mem_sm %d

UNTIL : !evil %d && mem %d && cur %d < %d
Startup - after

end_it_all_please %d || (!end_condition %d && !animating_p %d)

BG_vaguely_legal : returns %d die[0] %d (%d) die[1] %d (%d)

%d to place piece at %d (%d)
afterwards [%d]

BG_player_done : %d == %d

Check direction : magnitude %d tdice[0] %d tdice[1] %d

BG_execute_move : from %d to %d

I am the winner (says player %d(%d)) from_refuse %d pd %d cd %d
from_refuse %d competancy of doubler %d current_double %d

Opening %d rtf file(s)

BG_play.c
Couldn't open RTF %d (%s)
Done with BG_music_pcls!
cv_apath %d sys_apath %d
Done with BG_play_init!

Phnork
Can't create conduct_error_death map
Bringing up disc error : %d

Unable to unlink asset %d rtr %d vchan %d
Unable to free assets rtf %d rtr %d vchan %d

Freeing dmaps 0x%x
Freeing smaps 0x%x
Freeing dblocks 0x%x

BG_do_play : %d %d %d 
%d (%d)
bg_datapath 0x%x (video 0x%x)

Unable to stop play

PCB stat 0x%x Sing 0x%x Recs %d Chan %d Achan %d PCL (0x%x, 0x%x, 0x%x) evil %d play_pos %d
PCL[%d] (0x%x) control 0x%x submode 0x%x info 0x%x
signal 0x%x Next 0x%x Buffer 0x%x Size %d Err 0x%x Off 0x%x
ERROR : size %d resol %d noblks %d offset %d

Must wait for the seek to complete
Unable to abort!

BG_setup_play :
done 0x%x
eor 0x%x
trig 0x%x
video 0x%x
audio 0x%x
data 0x%x
fx 0x%x

Seeking : %d %d
Asset loc done : seeking to : %d
Playing : %d,%d

A
B
Unable to create swapper
Unable to copy data!

Unable to unlink asset %d type %d

New Realman id %d Fake id %d
Unable to get soundmap descriptor
Unable to creat soundmap
Soundmap id %d
Unable to close soundmap %d

BG_music_pcls : 
Unable to allocate big_ster
Unable to loop big_ster!
size in soundgroups %d
size of big_ster    %d
groups in big_ster  %d
addr of big_ster  0x%x

Unable to allocate mono_ptr
Unable to allocate ext_mono[%d]
Unable to allocate ext_ster[%d]
ext_mono[%d] 0x%x id %d size %d smaddr 0x%x grps %d curaddr 0x%x
ext_ster[%d] 0x%x id %d size %d smaddr 0x%x grps %d curaddr 0x%x
pcl[%d] buf 0x%x bufsz %d nxt 0x%x
Done processing %d
Done processing!!!!!

BG_enact_music_pcls

Deact turning audio OFF!
Deact will NOT turn audio OFF!

Looping restricted!
Unable to fuck with loop count

music playlist
BG_buttons.c

EXIT_BTN : No cleanup func!!!
Flashing piece of player %d at slot %d

mask 0x%x btn_shit 0x%x last_flash 0x%x

p_o_f 
BG_2d.c 
vdm

kill_manipulator : task id %d slot %d count %d
flash_manipulator : task id %d slot %d count %d piece_selected %d
Refreshing bar : slot %d physslot %d
REMOVE : player %d is removing a piece from slot %d
BLIT : src %d dest %d xy (%d,%d) wh (%d,%d)

BG_done_forever
BG_3d.c

really_truly_done : in_bio_mode %d
about to show piracy notice

HELP_DONE : vids %d auds %d dats %d
save_last_asset %d saved_asset %d
Drawmap %d 0x%x

bg_fx_count %d bg_dm_index %d(0x%x)

Just before we load the soundmaps...
Unable to alloc 130k

Sound %d at locations 0x%x 0x%x (%d)
silent_man is (%d)
Unable to set cluts PB

About to unlink data slabs
About to create plane of fun
p_o_f
Plane o "FUN" is no more (sniff)!
About to set up plane order
About to set up all sorts of shit
About to clear plane_o_fun
About to display plane_o_fun
b_o_j
All is lost! No buff_o_joy!
Can't CREATE hs
Can't ADD hs
Can't CREATE QUEEN dice hs
Can't ADD QUEEN dice hs

Unable to refresh board

%s
I WON!
YOU WON!
who_is_dark %d player_has_won %d winning_colour %d

s(%d)c(%d)h(%d) lfs(%d)ps(%d)
cnt(%d)slt(%d:%d)cp(%d)hil(%d)

Attempting to refresh bar : slot %d physslot %d

do_cough : CAUGHT!

SoundSync: which_anim %d blastp %d animp %d do_replay %d music %d id %d end_it %d end_cond %d
NO BLAST!
WORKING WITH TIMER!
WORKING WITH SM_OUT!

Resetting background : tanimptr %d %d %d
BG_anim_blast : which %d music_is_on %d Anim frame %d : offset %d which_table %d

AnimFromPlay: which %d animp %d music %d id %d end_it %d end_cond %d

Freeing sound[%d] : %d

BG_slap_audio : slap %d signal_p %d bg_do_replay %d music_is_on %d
Unable to play soundmap %d (0x%x : 0x%x)

BG_music_hush : restart_p %d music_is_on %d anim %d
deleting killboy %d
BG_audio.c

Kill killboy %d
Kill music_id %d

DoMusicAtNextOpportunity INSTALLED : 0x%x : %d
Taking down the music_id %d
Taking down the killboy %d

DoMusicAtNextOpportunity : %d %d

replay_music: animating_p %d mem_sm_to_add %d present_screen_dm 0x%x
killboy %d blob %d mem_sm %d a_inx %d play_id %d evil %d animp %d endcond %d end_it %d

BG_replay_music: killboy %d bg_do_replay %d music_is_on %d
Unable to delete task %d
Task %d deleted

Creating dice!
BG_dice.c
Can't CREATE dice hs
Can't ADD dice hs
Can't CREATE doubling cube hs
Can't ADD doubling cube hs
Defining colors for animation
...and now to present the dice
Doubling cube should be up
Dice should be up

BG_roll_em : which %d bg_do_replay %d
Checking for doubles
Double that bastard!!!!

up_double whom %d amount %d
Src %d,%d Desty %d
New face at %d,%d
Source from %d,%d

do the 2d6: sanity %d animating_p %d bg_do_replay %d
First die: %d
Second die: 
Outputing sound! %d

Game hasn't started
doubler(%d) != player_doubled(%d)
You cannot double more than 2^%d
COMPUTER ANIMATION : %d
Not yet! has_rolled %d best_candidate %d competancy %d

cdi_aimbox
BG_move_quality: your score %d AI score %d Their score %d diff %d 
cand %d retrval %d : got_eval %d moves %d

Done getting moves_possible : %d of %d
BG_ai.c

Counter_attack player %d
Entering evil conduct loop poss %d
Move[%d] from %d to %d
Evil conduct 0x%x from %d to %d
No evil conduct declared
ITERATION
Out of evil conduct loop

(%d:%d) (%d: %d) (%d:%d) (%d:%d)

Player %d is a (%d)
NOVICE
ORACLE
EXPERT
HUMAN

About to figure
me %d their %d diffs %d
Doubling : prob succ %d precent %d result %d
waiting for board eval...
OBTAINED
Pips calls...
DONE!
Player %d my $d their %d Diffs %d Noway %d
I ACCEPT! diffs %d noway %d
I'm a wimp!

BG_expert_would_double : before %d
after %d
cdi_bg_ai_debug
Attempt to fork...
Unable to FORK!
Fork COMPLETED!
Unable to open %s

Unable to send KILL!
Unable to send letter

Received %d type with %d(0x%x) data
Received board eval for player (%d : %d)
Accepting board eval
Rejecting board eval
Received hint : animating_p %d

BOARD EVAL GOBBED

Chunk 2 focuses on the game engine and interacting with the CD-i.

rp_attach_buffer: Reusing video buffer %d for %d
rp_attachbuf.c
rp_attach_buffer: Create video : x : %d y : %d
size : %d Type 0x%x
[%03d:%02d:%04d]
CV_rp_play: WARNING dm_create fails !!!!
rp_attach_buffer: Video %d already exists.
BufSz = %d sectors
rp_attach_buffer: Reusing audio buffer %d for %d
rp_attach_buffer : Create audio : size : %d Type 0x%x
CV_rp_play: BG_sm_create fails
rp_attach_buffer:  audio  %d already exists.
BufSz = %d sectors
rp_attach_buffer: Reusing data buffer %d for %d
rp_attach_buffer: Create data : size : %d
CV_rp_play: WARNING malloc fails
CV_rp_play:  malloc fails
rp_attach_buffer: data %d already exists.
BufSz = %d sectors at 0x%x

CV_sigsend: Unhandled signal received : %d 
signal.c

CV_rp_play: Invalid path %d
rp_play.c
CV_rp_play: Unable to load map information
CV_rp_play: INVALID AUDIO CHANNEL : %d
CV_rp_play: Could not allocate play_loc structure
CV_rp_play: lseek reports byte offset %d
CV_rp_play: Invalid channel spec for rtfpath %d
CV_rp_play: Start at sector %d
CV_rp_play: Could not determine location
CV_rp_play: task_id = %d
CV_rp_play: ss_play fails
rtfpath = %d
stat = 0x%x sig = %d rec = %d
chan = 0x%x achan = 0x%x

CV_rp: map_loc: Invalid rtfpath %d
PLAY_LOC: 
Record : %d Channel : %d First alarm : %d Trigger : %d
          Alloc  Count  Resp  
Video :    %d      %d    %d
Audio :    %d      %d    %d
Data  :    %d      %d    %d
FX    :            %d    %d
Video :    %d      %d    %d
Audio :    %d      %d    %d
Data  :    %d      %d    %d
FX    :            %d    %d

CV_rp_play: Could not allocate array of dmap pointers
vd_count = vd_alloc = %d
CV_rp_play: Could not allocate array of smap pointers
CV_rp_play: Could not allocate array of data pointers

PCL error detected in video_in
PCL error detected in audio_in
PCL error detected in data_in
Restarting clock

ERROR Occurred during play !!!! Stat = 0x%x errno = %d
Calling rp_play_done! stat 0x%x tid %d done 0x%x

Do something here to fix bug
rp_stop.c

CV_rp_stop: releasing play_loc[%d]

rp_play_done: NULL play_loc
rp_playdone.c
rp_play_done : video : %d audio : %d data : %d done %d stat %d
Setting done for lag! tid %d done %d
rp_play_done: invoking done func 0x%x
CV_rp_task: releasing play_loc[%d]
rp_play_done: Setting rp_play_loc to NULL

ERROR
disc_error.c
FONT8X8

The real guy : %d

cm_delete.c
cm_make_hotspot.c

CV_do_fx():  Bad fx (%d) or param (%d)
CV_fix.c

Can't allocate root hotspot resource!
CV_hs_root.c

hs_do_event: checking type: 0x%08x hs: 0x%08x
hs_do_event:    doing type: 0x%08x hs: 0x%08x

SIGFLAG Allocation fails!!!

CV_sigflag: No flag available for sig %d
sigflag.c
CV_sigflag: Invalid operator %d on sig %d

CV_tasks: execute
(0x%x) recursion (%d)
task %d:0x%x

Could not allocate task - task array full
taskinst.c

task_num %d init 0x%x exec 0x%x term 0x%x data 0x%x

CV_rp_asset_loc: Invalid channel number %d for rtr %d
rp_assetloc.c
CV_rp_asset_loc: Invalid index %d for type %d
channel %d rtr %d
CV_rp_asset_loc: Seek to sector %d

rp_clock_start: alm_id = %d sig = %d
rp_clock.c
rp_clock_stop: cancel alm_id = %d sig = %d

rp_clock: Waiting for buffer %d type %d
rp_clock : fx_count = %d tid = %d
rp_clock: Next alarm at %d sectors from now sg = %d

CV_rp_free: Could not get channel pointer
rp_free.c
CV_rp_free: Invalid asset type %d
CV_rp_free: Index %d out of bounds, type %d

CV_rp_get_channel: Invalid path %d
rp_getchan.c
CV_rp_get_channel: Invalid rtrnum %d
CV_rp_get_channel: Channel %d in rtr %d not found

CV_rp_get_clut: Could not get channel pointer
rp_getclut.c
CV_rp_get_clut: Invalid asset type %d
CV_rp_get_clut: Invalid asset index %d
CV_rp_get_clut: type %d index %d -> dblock %d

rp_load_info: Loading path %d
rp_loadinfo.c

rp_play_loc_alloc: OUT OF PLAY LOC STRUCTURES!!!
rp_locs.c
rp_play_loc_alloc: using loc [%d]

rp_map_alloc: size = %d bytes
rp_mapalloc.c

rp_map_open: addr = 0x%x
rp_mapopen.c
rp_map_open: reusing 0x%x for map
rp_map_open: Error allocating map memory
map size: %d bytes, seeking past header

CV_RP: Failed reading map file...retrying
Looking for map at end of RTF...
Can't seek to last sector of RTF!
Can't read end mapfile!
...seeking back %d sectors
Can't seek RTF?!?
Can't read end map header!
End map file successfully read!
CV_RP: Failed reading end map file...retrying
CV_RP: rp_mapopen, Giving up...

CV_RP: Could not read header of map file
rp_mapsize.c
CV_RP: WARNING INVALID CONFIGURATION NUMBER IN MAP FILE
rp_map_size for path %d is %d bytes

CV_rp_open: Seek to 0
rp_open.c

CV_rp_play : opening %s...
CV_rp_play : Could not open '%s'
Open succeeds
.map 
CV_rp_play: Opening info file %s...
CV_rp_play: Could not open info file %s

CV_rp_task: NULL play loc
rp_task.c
CV_rp_task: vd_resp=%d nmaps = %d
CV_rp_task: ad_resp=%d nmaps = %d
CV_rp_task: data_resp=%d nmaps = %d
CV_rp_task: fx_resp=%d nmaps = %d
CV_rp_task: invoking done func 0x%x
CV_rp_task: releasing play_loc[%d]
CV_rp_task: setting rp_play_loc to NULL

CV_rp_unlink: Could not get channel pointer
rp_unlink.c
CV_rp_unlink: Invalid asset type %d
CV_rp_unlink: Index %d out of bounds, type %d

CV_malloc grabbing %d bytes from %x (%s:%d)

CV_free: INVALID POINTER : 0x%x SYNC : 0x%x (%s:%d)
CV_free releasing %d bytes at 0x%x (%s:%d)

Can't ss_enable controls
CV_root.c

Load module %s:%d
applinit.c
CV_appl_init: Unable to load module: %s into plane %d
Open file %s
CV_appl_init: Unable to open file '%s'

pal_bumper.map
ntsc_bumper.map
Open bumper map file %s
playbumper.c
Unable to open map file %s
Unable to read bumper map information
Allocated %d pcls at 0x%x first asset @ %d
Loading bumper into plane %d
Unable to load bumper %s
cdi_bumpdata
Unable to link to bumper data module
Bumper fork failed!!!
PCB error stat = 0x%x
Error in PCL %d

CFREE: _srtmem error %d 0x%x
cfree.c

CV_vd_open : csd_devname fails
vd_open.c
CV_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

CV_mm_send failed for letter requeue (type = 0x%x)
cp_flush.c

CV_cp_hndlr: letter not an event. Type = %d
cp_hndlr.c

Can't create mailbox.
cp_install.c
CP install failed.
cdi_cv_cp

cdi_cp_mail
CV_cp_mail: Can't send letter for type %d.
cp_mail.c
CV_cp_qsize: Can't send Q_SIZE letter.
cp_qsize.c
CV_cp_setpos: Can't send SET_POS letter.
cp_setpos.c
CV_cp_setpos: Can't send SET_POS letter.
cp_setlimits.c
CV_cp_mail failed for query request.
cp_status.c
CV_mm_send failed for letter requeue (type = 0x%x)

ct_lsearch.c

%s: Send_letter failed with type = 0x%x
mm_send.c

cdi_cv_timer
hdm_save.c

Chunk 3 mainly comprises of a comprehensive CD-i graphics editor. It also has some more general, Chunk 2-esque strings near the end.

CV_dm_show: Drawmap is NULL
dm_show.c
Must use plane B for RGB.
CV_dm_show: bad image type 0x%x in dmap %d
CV_dm_show: Drawmap line is bad
CV_dm_show: Can't allocate clut buf.

CV_dm_size: NULL drawmap supplied.
dm_size.c
scr_open.c
scr_close.c

Couldn't load font module for bitmap display.
textinit.c

A : %d bytes B : %d bytes Total : %d Stack : %d 
Malloc'd : %u

Quit 
New Control Table
Dissassemble
Enter Instruction
Help
Search for Instruction
Insert NOPs into the LCT
1.02
CV 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 stransparent

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

Enter address (in hex):
%8x:
%8x %8x %8x %8x %s

Dumping FCT #%d,  starting line=%d numlines=%d
%03d %s

Dumping LCT #%d,  start line=%d numlines=%d
%03d %s

CV_dm_close: drawmap %d not found on resource list
CV_dm_close: dm_close fails (%d) : vpath : %d dnum : %d

CV_dm_create: dm_create fails plane %d width %d height $d length %d
type : %d tag : %s
CV_dm_create: Could not allocate resource node

OFF
UNKWN
CL4
CL7
CL8
RL3
RL7
DYUV
RGB
QHY

DMID Filename   Line Tag                         Size  Plane Type    X    Y
%4d %-10.10s %4d %-25.25s %6d   %c    %-5.5s %4d %4d
Used plane   A: %6d
Used plane   B: %6d
Used total    : %6d

RECT
ERECT
POLY
CIRC
CWDG
ELPS
EWDG
RGN
BFIL
FFIL
CMPLX
CV_hs_spit:  no current hotspot tree

Address: 0x%x
func=0x%x, data=0x%x

Hotspot Tree:

HS_EV_IN
HS_EV_OUT
HS_EV_MOVE
HS_EV_UP0
HS_EV_UP1
HS_EV_DOWN0
HS_EV_DOWN1
HS_EV_DRAG0
HS_EV_DRAG1
HS_EV_UP
HS_EV_DOWN
HS_EV_DRAG

    addr:0x%x type:%s bounds:(%d,%d)-(%d,%d) %sACTIVE
IN
???

Address             Size    Type    Tag
0x%08x-%08x %8d %-8.8s   %s
UNKNOWN

Plane A:
Plane B:

FREE
MODULE
DMAP
DMAPDESC
SMAP
SMAPDESC
DBLOCK
LINE ADR
PROC MEM
DEV MEM
PATH BUF
MOD MEM

Address 
Size
0x%08x %d

Plane A:
Plane B:

%s (line %d): WARNING: %d:
%s (line %d): ERROR: %d:

CV_res_open: Invalid resource type %d
resource.c

cdi_res
CV_res_init: Could not create data module %s
CV_res_find: Invalid resource type %d
CV_res_close: Invalid resource type %d
CV_res_close: No current resource node for type %d
CV_res_close: resource not found: restype : %d node %d

CV_sm_close: soundmap %d not found on resource list
CV_sm_close: sm_close fails : apath : %d snum : %d

CV_ap_open : csd_devname fails
ap_open.c
CV_ap_open : Could not open %s

cdi_file_data
Could not create CV_file_open data module
fileinit.c

Found an open file. name = %s path %d opened = %d
fileopen.c
CV_file_open: could not open %s (%d)

strdup.c

cdi_bg_ai_debug

The second, much smaller file is cdi_bg_ai_debug, and would've been used to specifically test the opponent's AI. Unlike cdi_bg, this file doesn't have a non-debug counterpart.

AI:Operation Cancelled
AI:Received Evaluation request
AI:SENDING MOVES! %d for player %d

AI: board %d wall %d blot %d density %d layout %d : LAGGING %d

Determining Shape : Top of loop... DONE

AI: board %d wall %d blot %d pipage %d TOTAL %d for player %d

slot %d is not a thug!

AI: slot %d has a %d in 36 chance of hitting %d

AI: player %d
race_would_be_on %d
dist_home %d near home %d
lag_check %d
move_dammit %d
targ %d

AI: slot %d tots %d vals %d value %d

AI: Extreme Agony %d

%s: Send_letter failed with type = 0x%xx
mm_send.c

%s (line %d): WARNING: %d:
%s (line %d): ERROR: %d:

Copyright/Abstract/Bibliographic Text

CD-I Backgammon
Interfaced designed by John Hight, Dave Townsend & Mike Willis
Strategy and Implementation by Andy House
Art work by Dave Vallone, Eddie Sutton, & Al Rosson

Version 3.6 - Manufacturing

Version info and credits of some people who worked on the game, stored inside the file abstract.

Generated:    1991 
Prepared by:  Andy House
Template:     CD-I Backgammon
Title:        CD-I Backgammon
Description:  Play backgammon against animated characters
Languages:    English

Details about the game, stored in the file bibliographic.

Copyright (c) 1991 PIMA & Capitol Disc Interactive

This text can be found in the file copyright.