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

Spirou (Game Boy)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Spirou

Developer: Bit Managers
Publisher: Infogrames
Platforms: Game Boy, Super Game Boy
Released in EU: 1996


CodeIcon.png This game has unused code.
SourceIcon.png This game has uncompiled source code.
CopyrightIcon.png This game has hidden developer credits.
DevTextIcon.png This game has hidden development-related text.
LevelSelectIcon.png This game has a hidden level select.


ProtoIcon.png This game has a prototype article

Sub-Page

Read about prototype versions of this game that have been released or dumped.
Prototype Info

Level Select

Spirou GB Level Select.png

Pause the game and press Down, Down, B, Left, Right, A, Down, Up, A.

(Source: GameFAQs (Mezmorize99))

Development-Related Text

The string "BIT-MANAGERS" is used to pad empty space in the ROM.

Compile Information

A ton of the game's compilation info, including a chunk of the source code, can be found throughout the game's data.

Note, the same area in the Prototype version filled with part of the SYMBOL file with names of internal variables and functions.

0x11C00:

NW
 00000001  EXIT_SE
 00000002  EXIT_SW
 000003E8  EXLITAB
 0000DFC0  Error1
 0000DFC2  Error2
 0000DFC4  Error3
 0000DFB2  ExploPointer
 0000DFA3  ExtraHigh
 0000FFDB  FADECNT
 0000DF9F  FADEFAS
 00006C18  FADETAB
 00006C1C  FADING
 00006ECC  FADING0
 00000001  FALL
 0000FFDF  FALLADJ
 00000015  FGRF
 0000203F  FILMATION
 000017AD  FILMODE
 00000000  FIREA
 00000001  FIREB
 0000054C  FIRST
 000000F0  FIRSTNUMPIECE
 0000FFC4  FLAGAN
 0000FFC1  FLAGAN1
 0000FFC2  FLAGANMAIN
 00006268  FLECHA
 00000D01  FMARKS
 0000FFF3  FRASE
 000017AD  FT
 0000FFC9  FX
 0000FFF0  FXINI
 00000268  FXTINA1
 0000DF5E  FXVOL
 0000DD66  FXX
 0000DD6F  FXXTXT
 00000004  FXXX
 0000000D  FXXY
 0000FFCB  FY
 0000FFCD  FZ
 00002057  FilmationGet
 000026F6  FilmationOver
 000070FA  FilmationPut
 00002348  FilmationSprite
 0000002C  FirstExitPiece
 0000DF68  FirstLoop
 00000445  GAME
 00001B8B  GEN_CHAR
 000070DA  GEPEGRF
 000070DA  GEPEMAP
 00001027  GETCARTAB
 00001E2E  GETDUM
 00002C00  GETDUM_P
 00000AE0  GETJOY
 0000FFEA  GETT
 00000C39  GET_GRTAB
 00000CBB  GET_HIGH
 00001FAC  GET_MAP
 00004CAE  GET_PTB
 00000C0C  GET_START
 00000C2B  GET_STTAB
 00000008  GHO
 00006CAE  GOTXT
 00006C6B  GOVER
 0000DE1C  GRAFTAB
 00000020  GREEN
 0000DFA1  GRF_BNK
 0000DF9D  GRF_D
 0000DF9C  GRF_E
 000009AF  GS_GRF
 00000003  GTL
 00001DC9  GXYZBOY
 00001DD0  GXYZSCR
 00000004  GameSpeed
 00001B75  GenerateInvTab
 00002C55  GetImageBuffAdd
 00002987  GetMap
 00002957  GetMapAdd
 00002964  GetPiece
 000023A6  GetPixel2D
 000029BD  GetWork
 00004B8A  GravDown
 00004B4E  GravEnd
 00004B35  GravStart
 00004B70  GravUp
 00004B20  Gravity
 00000008  GravityHero
 000070DA  HADAGRF
 000070DA  HADAMAP
 00006B82  HADA_OUT
 0000DF9E  HADFAS
 0000178D  HALT
 000070BF  HBON
 00000003  HDLEN
 0000DD9E  HeroAnimCnt
 0000DD9D  HeroAnimFas
 00006756  HeroExplo
 0000675F  HeroWater
 000072C3  Hola
 0000FF8A  Huffman
 0000FFFF  IE
 0000FF90  IEB
 00000002  IE_LCDC
 00000004  IE_Timer
 00000001  IE_VBlank
 00000004  INBONU
 00000006  INFINAL
 00000000  INGAME
 00006EBC  INIATCH
 00000278  INIMUS
 0000024B  INIT41
 00001043  INI_BAD
 00006AF6  INI_GRFBON
 00001036  INI_GRT
 00000671  INI_HERO
 00007008  INI_LETS
 00000683  INI_SCR
 00007017  INI_STARS
 0000000F  INM
 00000003  INMENU
 00000001  INNOTHING
 00000005  INPARP
 00000007  INPRESENT
 00000002  INSETUP
 000002B8  INT_OFF
 000002A0  INT_ON
 0000DF1A  IconBuffer
 000056B7  IncLive
 000057E7  IniAddTab
 0000DFB6  IniCoins
 000010CD  IniOneBad
 0000109E  IniSomeBads
 00000038  IniSpdyHero
 00000060  IniSpdyHeroBig
 00005533  InitApart
 0000520A  InitHeroCoords
 000051E0  InitHeroExplo
 000051F2  InitHeroWater
 00007026  InitPosTab
 00006768  InitPosTab0
 00006771  InitPosTab1
 0000681A  InitPosTab10
 00006E34  InitPosTab100
 00006E35  InitPosTab101
 00006E36  InitPosTab102
 00006E37  InitPosTab103
 00006E38  InitPosTab104
 00006E39  InitPosTab105
 00006E4A  InitPosTab106
 00006E6B  InitPosTab107
 00006E7C  InitPosTab108
 00006E95  InitPosTab109
 00006823  InitPosTab11
 00006EB6  InitPosTab110
 00006ED7  InitPosTab111
 00006EF0  InitPosTab112
 00006EF9  InitPosTab113
 00006F0A  InitPosTab114
 00006F1B  InitPosTab115
 00006F24  InitPosTab116
 00006F3D  InitPosTab117
 00006F46  InitPosTab118
 00006F5F  InitPosTab119
 00006834  InitPosTab12
 00006F70  InitPosTab120
 00006F81  InitPosTab121
 00006F9A  InitPosTab122
 00006FAB  InitPosTab123
 00006FAC  InitPosTab124
 00006FC5  InitPosTab125
 00006FD6  InitPosTab126
 00006FDF  InitPosTab127
 00006FF0  InitPosTab128
 00007001  InitPosTab129
 0000684D  InitPosTab13
 00007012  InitPosTab130
 00007013  InitPosTab131
 00007014  InitPosTab132
 00007015  InitPosTab133
 00007016  InitPosTab134
 00007017  InitPosTab135
 00007018  InitPosTab136
 00007019  InitPosTab137
 0000701A  InitPosTab138
 0000701B  InitPosTab139
 00006856  InitPosTab14
 0000701C  InitPosTab140
 0000701D  InitPosTab141
 0000701E  InitPosTab142
 0000701F  InitPosTab143
 00007020  InitPosTab144
 00007021  InitPosTab145
 00007022  InitPosTab146
 00007023  InitPosTab147
 00007024  InitPosTab148
 00007025  InitPosTab149
 00006867  InitPosTab15
 00006878  InitPosTab16
 00006891  InitPosTab17
 0000689A  InitPosTab18
 000068AB  InitPosTab19
 00006782  InitPosTab2
 000068BC  InitPosTab20
 000068CD  InitPosTab21
 000068D6  InitPosTab22
 000068EF  InitPosTab23
 000068F8  InitPosTab24
 00006909  InitPosTab25
 0000691A  InitPosTab26
 00006933  InitPosTab27
 00006944  InitPosTab28
 00006965  InitPosTab29
 00006793  InitPosTab3
 00006976  InitPosTab30
 0000698F  InitPosTab31
 000069A8  InitPosTab32
 000069C1  InitPosTab33
 000069E2  InitPosTab34
 000069FB  InitPosTab35
 00006A1C  InitPosTab36
 00006A35  InitPosTab37
 00006A56  InitPosTab38
 00006A67  InitPosTab39
 000067A4  InitPosTab4
 00006A80  InitPosTab40
 00006A91  InitPosTab41
 00006AA2  InitPosTab42
 00006AB3  InitPosTab43
 00006AC4  InitPosTab44
 00006AD5  InitPosTab45
 00006AEE  InitPosTab46
 00006AFF  InitPosTab47
 00006B10  InitPosTab48
 00006B21  InitPosTab49
 000067AD  InitPosTab5
 00006B3A  InitPosTab50
 00006B43  InitPosTab51
 00006B4C  InitPosTab52
 00006B5D  InitPosTab53
 00006B6E  InitPosTab54
 00006B7F  InitPosTab55
 00006B90  InitPosTab56
 00006B99  InitPosTab57
 00006BAA  InitPosTab58
 00006BBB  InitPosTab59
 000067C6  InitPosTab6
 00006BCC  InitPosTab60
 00006BDD  InitPosTab61
 00006BEE  InitPosTab62
 00006BFF  InitPosTab63
 00006C10  InitPosTab64
 00006C19  InitPosTab65
 00006C1A  InitPosTab66
 00006C2B  InitPosTab67
 00006C3C  InitPosTab68
 00006C3D  InitPosTab69
 000067DF  InitPosTab7
 00006C4E  InitPosTab70
 00006C5F  InitPosTab71
 00006C70  InitPosTab72
 00006C81  InitPosTab73
 00006C9A  InitPosTab74
 00006CAB  InitPosTab75
 00006CBC  InitPosTab76
 00006CC5  InitPosTab77
 00006CD6  InitPosTab78
 00006CE7  InitPosTab79
 000067F0  InitPosTab8
 00006CF8  InitPosTab80
 00006D09  InitPosTab81
 00006D1A  InitPosTab82
 00006D2B  InitPosTab83
 00006D44  InitPosTab84
 00006D4D  InitPosTab85
 00006D5E  InitPosTab86
 00006D6F  InitPosTab87
 00006D80  InitPosTab88
 00006D81  InitPosTab89
 00006809  InitPosTab9
 00006D92  InitPosTab90
 00006DA3  InitPosTab91
 00006DAC  InitPosTab92
 00006DBD  InitPosTab93
 00006DD6  InitPosTab94
 00006DE7  InitPosTab95
 00006DF8  InitPosTab96
 00006E09  InitPosTab97
 00006E1A  InitPosTab98
 00006E2B  InitPosTab99
 00000000  IntType
 0000DF5F  J100CNT
 0000DF60  J100FAS
 00000B58  J100TAB
 0000FFD7  JOY
 0000DD63  JOYT
 000061E4  JOYT1
 000061E8  JOYT2
 0000DE38  JOYTAB
 0000DD67  JOYTTXT
 0000DE5B  JPPTAB
 00000000  JUMP
 0000441C  JpInMuelle
 0000143A  JpWhereTab
 00000004  JumpBig
 00000001  JumpDown
 00000003  JumpEnd
 00000002  JumpStart
 00000000  JumpUp
 0000DF65  KCNT
 00000D63  KEYOFF
 0000DF64  KILLED
 000046F2  KILL_BOY
 00000D73  KOFF
 00000D69  KON
 0000FF40  LCDC
 0000DF59  LCDCINT
 00000001  LCDC_BG
 00000008  LCDC_BG_Bnk
 00000010  LCDC_BG_Chr
 00000002  LCDC_OBJ
 00000004  LCDC_OBJ_Size
 00000DE2  LCDC_OF10
 00000DD8  LCDC_OFF
 00000DC9  LCDC_ON
 00000080  LCDC_Start
 00000040  LCDC_WinBnk
 00000020  LCDC_Window
 000011D4  LC_BGP_ON
 00006750  LC_ScrollPres
 00001796  LDIR
 00000E21  LDIRBL
 00000432  LDIRCPL
 0000043C  LDIRNOR
 00000005  LEFT
 00000010  LENPIECE
 0000042C  LETMENTAB
 00000009  LETN
 0000DF11  LETTAB
 0000DFB4  LIVES
 0000DD50  LIVTXT
 00000002  LLX
 00000011  LLY
 00000CD4  LOADMAP
 00004337  LOAD_JPP
 00002C60  LOD_GRF
 00007053  LTPOSTAB
 0000FF44  LY
 0000FF45  LYC
 00000100  LenBuffSpr
 00000007  LenClaves
 00000100  LenObjDefHero
 00000040  LenPack
 00002C6C  LoadBuffAdd
 0000430A  LoadHigh
 0000430C  LoadHighNoName
 00001178  LoadIcon
 00004443  LoadPerso
 00001220  LoadPresChars
 0000123A  LoadPresent
 00001A49  LookForExit
 00005E70  MAINMENU
 00000F55  MANDO
 0000DB00  MAPEADO
 00000412  MAPLETTER
 000003F6  MAPLETTERI
 00004000  MAPTAB
 00000013  MARC_PIEZ
 00000008  MARK1_PIEZ
 00000010  MARKERS_CoinX
 00000010  MARKERS_CoinY
 00000000  MARKERS_FaceX
 0000000F  MARKERS_FaceY
 00000012  MARKERS_IconX
 0000000F  MARKERS_IconY
 00000003  MARKERS_TimeX
 00000010  MARKERS_TimeY
 0000000B  MARKN_PIEZ
 000014FA  MARKS
 0000000A  MARK_BARS_X
 00000005  MARK_CROS_X
 00000003  MARK_HEAD_X
 00000006  MARK_LIVE_X
 00000032  MAXBOSQUE
 00000064  MAXCASTLE
 00000032  MAXPI
 0000FFD1  MAXX
 0000FFD2  MAXY
 0000FFD3  MAXZ
 0000001A  MES
 0000FFF1  MIDPIF
 0000FFCE  MINX
 0000FFCF  MINY
 0000FFD0  MINZ
 0000FF9C  MJPFLAG
 00000010  MON
 0000FFDE  MOVED
 00004281  MOVE_BOY
 000042AD  MOVE_THEM
 0000702B  MOV_LETS
 00004900  MOV_SAVE
 00004979  MOV_SPR
 0000705C  MOV_STARS
 00006E4F  MOV_S_O
 00004BAE  MOV_X
 00004C2E  MOV_Y
 00004DAF  MOV_Z
 00000016  MUE
 000068AE  MURTAB
 0000DD65  MUSIC
 0000DD6D  MUSICTXT
 00000004  MUSX
 0000000B  MUSY
 0000DF5C  MUZAKGO
 0000DFA2  MainHigh
 0000C500  MaskBuff
 00005C35  MoveWithPollo3

A variety of development system's parameter names starting at 0x3881D:

 Linker

Libraries
~Graphics library
Turbo ~Vision
ObjectWindows Library
N~one
S~tatic
D~ynamic
Container Class Library
~None
~Static
~Dynamic
Standard Run-time Libraries
Non~e
Stat~ic
Dyn~amic

 Libraries

Options
~Generate list file
~Case sensitive library
~Purge comment records
Create ~extended dictionary
~Library Page Size

 Librarian Options

Source Debugging
~On
~Standalone
~None
Display Swapping
Non~e
Sma~rt
~Always
Inspectors
Show ~inherited
Show ~methods
Show ~decimal
Show ~hex
Show ~both
~Program Heap Size
K bytes

 Debugger

Code ~Segment
Code ~Group
Code ~Class
~Data Segment
D~ata Group
Da~ta Class
~BSS Segment
BSS G~roup
BSS C~lass
Far Data Segme~nt
Far Data Grou~p
~Far Data Class

 Segment Names

~Include Directories
~Library Directories
~Output Directory
~Source Directories

 Directories

~Arguments

 Program Arguments

 Information

~IDE, C++ Language, and Windows API
~ObjectWindows API
~Turbo Vision API

 Active Help File

C:\PROJET\TINTIN\MAP_SPR.ASM
C:\PROJET\TINTIN\HEROCTRL.ASM
C:\PROJET\TINTIN\HEROANIM.ASM
HEROCTRL
HEROCTRL.ASM
HEROANIM.ASM
ANIMTAB.ASM
WINDOW.ASM
*.ASM
MUSIC.ASM
SCREENS.ASM
SGB.ASM
TXTSPI.ASM
INCBIN.ASM

 Include Files
Include files for

  ~View

~Include files        Location

 Local Options
Project Item:
~Command Line Options
Output ~Path
Project File ~Translators
~Overlay this module
~Exclude debug information
Exclude from ~link

$NOSWAP
$NOSWAP $CAP MSG(TASM2MSG)
$NOSWAP $CAP EDIT
/m /i /p @SPIROU.LNK,SPIROU,,SPIROU $NOSWAP $CAP MSG(TASM2MSG)
/z /i /oc+ /ol+ /ow- /od+ /l $NOSWAP $EDNAME,F:\$NAME($EDNAME) $CAP MSG(TASM2MSG)
$SAVE ALL $NOSWAP
$SAVE ALL
/oan+ /z /i /oc+ /ol+ /ow- /od+ /l $NOSWAP $EDNAME,D:\$NAME($EDNAME) $CAP MSG(TASM2MSG)
/oan- /z /i /oc+ /ol+ /ow- /od+ /l $NOSWAP $EDNAME,D:\$NAME($EDNAME) $CAP MSG(TASM2MSG)
/MX /ZI /O $TASM
/c /b /m /i /p @d:\LINK.LNK,d:\game,,D:\game $NOSWAP $CAP MSG(TASM2MSG)
/b /m /i /p @d:\LINK.LNK,d:\game,,D:\game $NOSWAP $CAP MSG(TASM2MSG)
/z /i /oc+ /ol+ /ow- /od+ /l $NOSWAP $EDNAME,D:\$NAME($EDNAME) $CAP MSG(TASM2MSG)

E~xpression
~Result
~New Value
 ~Evaluate
 ~Modify
 Cancel
 Help

 Evaluate and Modify

~Inspect

 Data Inspect

~New Value

 Modify Data

~Starting Index
~Count

 Range Inspect

~Watch Expression

~Call Stack

 Call Stack

DIRENEP
DEFG

144
$checknum
checknum

~Breakpoint List             Line#  Condition                Pass

  O~K
 ~Edit
 ~Delete
 ~View
  ~At

 Breakpoints

~Condition
~Pass Count
~File Name
~Line Number
 ~Modify
 ~New
 Cancel
 Help

 Breakpoint Modify/New

Symbol Name

 Breakpoint At Function

After system messages goes some portions of the source files starting at 0x03B077:

$NOHUNT\@   call	CheckLimitsY
$okeyy\@
	ENDM

;	Persigue al hВroe en X o en Y&
;	\1=Mаscara frecuencia de persecuciвn
;	\2=Velocidad persecuciвn
;	\3=Distancia de desconexiвn con respecto coordenada de origen.
;	Devuelve Carry=0 en la desconexiвn.
HUNT_HEROX	MACRO
	LD	C,\2
	LD	DE,\3
	WAITB	\1,$NOHUNT\@
	CALL	HUNT_X
	jr	$okeyx\@
$NOHUNT\@	call	CHECKLIM_HUNTX
$okeyx\@
	ENDM

HUNT_HEROY	MACRO
	LD	C,\2
	LD	DE,\3
	WAITB	\1,$NOHUNT\@
	CALL	HUNT_Y
	jr	$okeyy\@
$NOHUNT\@	call	CHECKLIM_HUNTY
$okeyy\@
	ENDM

;	Persigue al hВroe en X o en Y&
;	\1=Mаscara frecuencia de persecuciвn
;	\2=Velocidad persecuciвn
;	\3=Distancia de desconexiвn con respecto coordenada de origen.
;	Devuelve Carry=0 en la desconexiвn.
HUNT_HEROX	MACRO
	LD	C,\2
	LD	DE,\3
	WAITB	\1,$NOHUNT\@
	CALL	HUNT_X
	jr	$okeyx\@
$NOHUNT\@	call	CHECKLIM_HUNTX
$okeyx\@
	ENDM

HUNT_HEROY	MACRO
	LD	C,\2
	LD	DE,\3
	WAITB	\1,$NOHUNT\@
	CALL	HUNT_Y
jr	$okeyy\@
$NOHUNT\@	call	CHECKLIM_HUNTY
$okeyy\@
	ENDM

;	Guarda coordenadas
CheckLimitsX
	LDAL	HeroX
	STAL	Hero
	LDAL	HeroX+1
	STAL	Hero+1
	LDA	PersoX
	STAL	Perso
	LDA	PersoX+1
	STAL	Perso+1
	call	CHECKLIM_HUNTX
	LDAL	Perso
	STA	PersoX
	LDAL	Perso+1
	STA	PersoX+1
	ret
;	Guarda coordenadas
CheckLimitsY
	LDAL	HeroY
	STAL	Hero
	LDAL	HeroY+1
	STAL	Hero+1
	LDA	PersoY
	STAL	Perso
	LDA	PersoY+1
	STAL	Perso+1
	call	CHECKLIM_HUNTY
	LDAL	Perso
	STA	PersoY
	LDAL	Perso+1
	STA	PersoY+1
	ret

;	Enemigo persigue al hВroe sвlo en X o Y$
;	Entradas: C=Velocidad persecuciвn.
;	DE=Distancia de desconexiвn con respecto coordenada de origen.
;	Carry=0 fuera rango / Carry=1 dentro rango.
HUNT_	MACRO
$SEP	=	4	; Separaciвn pixels entre dos lбmites.
	LDHLL	Hero
	PUSH	HL
	LD	A,L
	SUB	$SEP
	LD	L,A
	LD	A,H
	SBC	0
	LD	H,A	; HL=Lбmite derecho.
	LDAL	Perso
	SUB	L
	LDAL	Perso+1
	SBC	H
	JNC	$LIM2
	ADDWL	Perso,C
	POP	HL
	JR	$LIMITS
$LIM2	POP	HL
	LDAL	Perso
	SUB	L
	LDAL	Perso+1
	SBC	H
	JC	$LIMITS
	SUBWL	Perso,C
$LIMITS
	IF	strcmp('\1','X')
CHECKLIM_HUNTX
	ENDIF
	IF	strcmp('\1','Y')
CHECKLIM_HUNTY
	ENDIF
	;MORDENx7
	call	MORDENx7
	LDBCL	SPR_SAL
	INC	BC
	INC	BC
	IF	strcmp('\1','Y')
	INC	BC
	INC	BC
	ENDIF
	ADD	HL,BC
	xref        BNK_ENETAB
	GETHLHL	BNK_ENETAB
	PUSH	HL
	ADD	HL,DE
	LDAL	Perso
	SUB	L
	LDAL	Perso+1
	SBC	H
	JC	$CHECKMIN
	LD	A,L
	STAL	Perso
	LD	A,H
	STAL	Perso+1
	POP	HL
	XOR	A
	ret
$CHECKMIN   POP	HL
	SUBHLDE
	BIT	7,H
	JZ	$COMP
	LD	HL,0
$COMP	LDAL	Perso
	SUB	L
	LDAL	Perso+1
	SBC	H
	JNC	$IN
	LD	A,L
	STAL	Perso
	LD	A,H
	STAL	Perso+1
	XOR	A
	ret
$IN	SCF
$EXIT	RET
	ENDM
$CHECKMIN
RIO
	D_Pos
	callx	Creditos
	ld	a,1
	CALL	InitializeOnce
	stal	OkPassword
	stal	OptFX
	stal	OptMusic
	stal	FlgPresent
	stal	CaraPos0
	stal	CaraPos1
	stal	CaraPos2
	stal	PrtFaces
	stal	PrtOptions
	stal	FlgActEnd
	xref	SELWORLD
	LD	A,SELWORLD
	STAL	WORLD
	dec	a
	stal	LastWorld
	ENDIF
	stal	ScoreD0
	ld	a,1
Hard_LCDC_OFF
	callx	Hard_LCDC_OFF
	stal	FlgPr

This item and the next one include substantial text in Spanish. It seems to describe the enemy logic and the player logic. For example, "Enemy follows the hero only in X or Y". The assembled code may be found in the Release version disassembly between 0xED0C and 0xEDE9.

0x03FEE1

Final de la rutina de musica

"End of the music routine".


(Source: nensondubois)