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 Gear)
Jump to navigation
Jump to search
Cleanup > Articles needing translation > Articles needing translation/es
Cleanup > Pages missing developer references
Cleanup > To do
Games
Games
Games > Games by content > Games with hidden level selects
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by Bit Managers
Games > Games by platform > Game Gear games
Games > Games by release date > Unreleased games
Games > Games by release date > Unreleased games > Unreleased Game Gear games
Games > Games by series > Spirou series
Spirou |
---|
Developer: Bit Managers This game has uncompiled source code. |
This game was never completed and/or given a public release. As a result of this, keep in mind that the developers might have used or deleted some of the content featured here, had the game actually been released. |
To do: Document any source code fragments that were missed and other development-related stuff that made its way into the ROM. |
Contents
Level Select
Pause the game and press Down, Down, 1, Left, Right, 2, Down, Up, 2.
Source Code Fragments
...But what does it mean? This game has text or audio that needs to be translated. If you are fluent with this language, please read our translation guidelines and then submit a translation! |
Present throughout much of the bottom third of the ROM space, alongside messages from the compiler used.
0x63E81
and #0f PRTA 1,0,3 ldal PersoJump PRTA 2,0,3 ENDIF ldal vargen2 inc a stal vargen2 PRTA 3,4,3 is60 jr,$GUdiff_chdes ; Origin is not a 60 ldal vargen2 inc a stal vargen2 PRTA 3,4,3 +\2*8 ldhll var1 PRTHL 3,4,5 ldhll var1 PRTHL 3,4,5 ldal vargen2 inc a stal vargen2 PRTA 3,4,3 ldhll var1 PRTHL 3,0,5 ldhll var1 PRTHL 3,0,5 ldal vargen2 inc a stal vargen2 PRTA 3,4,3 ldal vargen2 inc a stal vargen2 PRTA 3,4,3 $GUdiff_chdes ; MARCA call GetHigh60\1 ; X ld c,a cmp #80 if narg=3 \3 z else \3 z,\4 endif bit 7,a jnz $\@yes ldal Perso\2 ; Y and #0f cmp c if narg=3 \3 c else \3 c,\4 endif \1 ; $GUdiff_chdes ; MARCA ;is60 jr,$GUdiff_chdes ; Origin is not a 60 jp c,$GUdiff_chdes jp $ ; jp z,$GUdiff_chdes ; jp c,$GUdiff_chdes ; MARCA $adjwhenmovex ; MARCA if 1 endif lda vargen inc a sta vargen ;PRTA 3,0,3 lda vargen inc a sta vargen ;PRTA 3,0,3 lda vargen inc a sta vargen PRTA 3,0,3 lda vargen inc a sta vargen PRTA 3,0,3 ;Dani arreglo start ;ldal WORLD ;cpx AEREO ;jz $GUdiff_in ;Dani arreglo end IF 0 ENDIF IF 0 $GUadjAnt jz $GUadjAnt jc $GUadjAnt jz $GUadjAnt jc $GUadjAnt ; MARCA START ; MARCA END ld a,(hl) cmp MAXSLOPE bcs $\@si ldhll ld a,(hl) cmp MAXSLOPE bcs $\@si cp ; MARCA END IF 0 ; MARCA START ; Origen en una inclinada call GetHigh60XAnt ld c,a cmp #80 jp z,$GUdiff_chdes bit 7,a jnz $yes ldal PersoY and #0f cmp c jp nc,$GUdiff_chdes $yes ; isin XAnt,Y,jp,$GUdiff_chdes ; MARCA END ENDIF cp MAXSLOPE jnc cp MAXSLOPE jc $GUdiff_chdes jr $ok jc $GUdiff_chdes push af pop af ld a,c pop af IF 0 diff_chdes diff_chdes ld c,a ld a,c ld a,c ldhll HOTY ld a,(hl) IF 1 ENDIF AEREO PANTANO ;AEREO 512+40 ;5/2 ;4/2 stal CachoMuro $cont CUEVA FABRICA IF MASRNC
0x6587A
$=S_TxtMenu dw AL_TxtMenu IdiomaOptions: dw IN_TxtOptions dw FR_TxtOptions dw ES_TxtOptions dw AL_TxtOptions ; Rutina de menu MenuMain: $Whitechar = 128 ; Codigo pieza blanco $Codecursor = 0 ; Codigo pieza spr.cursor IF GB $InitPosYM = 68+16 ; Pos.inicial Y cursor menu $InitPosXM = 36+8 ; Pos.inicial X cursor menu $InitPosYO = 68+16 ; Pos.inicial Y cursor opt. $InitPosXO = 36+8 ; Pos.inicial X cursor opt. ELSE $InitPosYM = 68+#17 ; Pos.inicial Y cursor menu $InitPosXM = 36+#30 ; Pos.inicial X cursor menu $InitPosYO = 68+#17 ; Pos.inicial Y cursor opt. $InitPosXO = 36+#30 ; Pos.inicial X cursor opt. ENDIF $IncYMovCursor = 16 ; Incr.mov.Y cursor menu $IncYMovCursor2 = 48 ; Incr.mov.Y cursor opciones $LimDownYCursor = $IncYMovCursor*3 ; Lim.down Y cursor menu $LimDownYCursor2 = $IncYMovCursor2*2 ; Lim.down Y cursor opc. $OptStart = 0 $OptOptions = $IncYMovCursor $OptPassword = $IncYMovCursor*2 if GB ldal IE push af and 00000001b stal IE endif xor a stal PosCursorP ; Init. posicion del cursor password dec a stal NextWorld call MakeClears IF GB EI CallMusic INIT_GBS HALT_ DI ENDIF ldal OkPassword and a ; call nz,CheckPasswordBnk $ReturnFromPass: DI IF GB EI xor a stal SGB_FlagMarkers ld hl,PAL_TIT SGB SetPalette DI ENDIF ld hl,IdiomaOptions ldal Langua add a,a ld c,a ADDHLA LDHLHL STHLL ST_ALL2 ; Dir.texto idioma opciones xref IdiomaLevels ld hl,IdiomaLevels ld a,c ADDHLA LDHLHL STHLL ST_ALL3 ; Dir.texto idioma opciones IF GB ld hl,#8800 callx DumpWhite ENDIF callx DumpChapeau ; Vuelca gorrito callx DumpCharsBig2 ; Vuelca graficos set gordo callx DumpTitulo $InitMenu xor a stal PosCursorM ; Init. posicion del cursor menu IF GB ld a,$Whitechar sta ST_ALL callx BG1 ELSE call SetPalSt ld a,FIRSTCHARBIGPIECE sta ST_ALL callx BG1 ENDIF call PrintTitulo ld hl,IdiomaMenu ldal Langua add a,a ADDHLA LDHLHL IF GB ld de,#9800+8*32+6 ELSE ld de,#7800+8*64+6*2 ENDIF call DumpTxtBig IF GB ldal LCDC or LCDC_OBJ stal LCDC ld hl,OBJRAM ldal PosCursorM add $InitPosYM ldhlia ld a,$InitPosXM ldhlia ld a,$Codecursor ldhlia xor a ld (hl),a ELSE ldal PosCursorM add $InitPosYM stal OBJRAM2 ld a,#d0 stal OBJRAM2+1 ld a,$InitPosXM stal OBJRAM ld a,$Codecursor stal OBJRAM+1 ENDIF ldal MusicOn and a jnz $nomusic IF GB ld a,4 CallMusic FADE_IN HALT_ ENDIF xref MAIN LD HL,MAIN callx DoCallMusic $nomusic callx LCDC_ON ;---------- Control de menu principal -------- $w HALT_ callx CONT ldal TRG1 bit UP,a jp nz,$Upcursor bit DOWN,a jp nz,$Downcursor bit SELECT,a jp nz,$Downcursor and BIT_START+BIT_FIREA+BIT_FIREB jz $w ; Decide que opcion de ha elegido ldal PosCursorM cp $OptStart jz $StartGame cp $OptPassword jz $MenuPassword cp $OptOptions jz $MenuOptions $MenuPassword InitFx SELOP HALT_ callx LCDC_OFF ; call PassWordsFromMenu ldal OkPassword and a jz $error InitFx OK jr $retpass $error InitFx ERROR $retpass callx LCDC_OFF jp $ReturnFromPass ; Start game $StartGame InitFx OK HALT_ callx LCDC_OFF IF GB pop af or 00000010b stal IE ENDIF ret $TabIncCursorY if GB db $InitPosYO,$InitPosYO+40,$InitPosYO+40+16 $MaxTabInc equ $-$TabIncCursorY db #ff ELSE db $In
0x6687C
ENDIF call PrintTitulo LDHL ST_ALL2 ; texto opciones IF GB ld de,#9800+8*32+6 ELSE ld de,#7800+8*64+6*2 ENDIF call DumpTxtBig ld a,1 stal PrtOptions EI CallMusic TURNOFF HALT_ callx LCDC_ON ; Control de menu de opciones $w2 HALT_ callx CONT ldal TRG1 bit UP,a jp nz,$UpCursorOpt bit DOWN,a jp nz,$DownCursorOpt IF GB bit SELECT,a jp nz,$DownCursorOpt ENDIF bit LEFT,a jnz $izq bit RIGHT,a jp nz,$der bit FIREB,a jnz $izq bit FIREA,a jp nz,$der and BIT_START jz $w2 callx LCDC_OFF xor a stal PrtOptions ldal OptMusic stal MusicOn jp $InitMenu ; Mueve izquierda nivel $izq xor a stal FxPnt InitFx SELOP ldal PosCursorO and a jz $levizq dec a jp nz,$nofxc ldal OptFX sub 1 stal OptFX jp nc,$w2 ld a,1 stal OptFX jp $w2 $nofxc ldal OptMusic sub 1 stal OptMusic jp nc,$w2 ld a,1 stal OptMusic jp $w2 $levizq xor a stal CaraPos0 stal CaraPos1 stal CaraPos2 xref CALLES ld a,CALLES stal WORLD ldal OptLevel sub 1 stal OptLevel jp nc,$w2 ld a,2 stal OptLevel jp $w2 ; Mueve derecha nivel $der xor a stal FxPnt InitFx SELOP $no1 ldal PosCursorO and a jz $levder dec a jnz $nofx2 ldal OptFX inc a stal OptFX cp 2 jp c,$w2 xor a stal OptFX jp $w2 $nofx2 ldal OptMusic inc a stal OptMusic cp 2 jp c,$w2 xor a stal OptMusic jp $w2 $levder xor a stal CaraPos0 stal CaraPos1 stal CaraPos2 ld a,CALLES stal WORLD ldal OptLevel inc a stal OptLevel cp 3 jp c,$w2 xor a stal OptLevel jp $w2 ; Cursor abajo opciones $DownCursorOpt InitFx MOVOP ld hl,$TabIncCursorY ldal PosCursorO inc a stal PosCursorO cp $MaxTabInc jnz $noend xor a stal PosCursorO $noend ld e,a ld d,0 add hl,de ;ldal PosCursorO ;add $IncYMovCursor2 ;stal PosCursorO ld a,(hl) $baja2 ;add $InitPosYO IF GB stal OBJRAM ELSE stal OBJRAM2 ENDIF jp $w2 ; Cursor arriba opciones $UpCursorOpt InitFx MOVOP ld hl,$TabIncCursorY ldal PosCursorO sub 1 stal PosCursorO jnc $ok ld a,$MaxTabInc-1 stal PosCursorO $ok ld e,a ld d,0 add hl,de ;ldal PosCursorO ;sub $IncYMovCursor2 ;stal PosCursorO ;jnc $sube2 ;ld a,$LimDownYCursor2-$IncYMovCursor2 ;stal PosCursorO $sube2 ;add $InitPosYO ld a,(hl) IF GB stal OBJRAM ELSE stal OBJRAM2 ENDIF jp $w2 ; Cursor abajo menu principal $Downcursor InitFx MOVOP ldal PosCursorM add $IncYMovCursor stal PosCursorM cp $LimDownYCursor jnz $baja xor a stal PosCursorM $baja add $InitPosYM IF GB stal OBJRAM ELSE stal OBJRAM2 ENDIF jp $w ; Cursor arriba menu principal $Upcursor InitFx MOVOP ldal PosCursorM sub $IncYMovCursor stal PosCursorM jnc $sube ld a,$LimDownYCursor-$IncYMovCursor stal PosCursorM $sube add $InitPosYM IF GB stal OBJRAM ELSE stal OBJRAM2 ENDIF jp $w ; Imprime titulo DoPrintTitulo: ld de,MAP_BUFF ld hl,TITULOM sthll DirMapPan ld a,TITULOMBNK stal BnkMapPan IF GB ld hl,#9800+2 ELSE ld hl,#7800+3*2 ENDIF sthl ST_ALL7 IF GB ld a,16 sta ST_ALL8 ld a,7 sta ST_ALL9 ELSE ld a,14 sta ST_ALL8 ld a,6 sta ST_ALL9 ENDIF call DumpPantMap ret ; Rutina que visualiza secuencias ; de presentacion,fases intermedias y final CineMain: xor a stal CNTGEN2 stal WaitScrCine DI IF GB ldal IE push af and 00000001b TER=OFF if 0 endif WAITB 11b,$set ldal ProgramCounter and 11b jz $reset GenEnemy RVOL CALLGEN macro xref \1 sta var3 xor a sta var4 ld de,#100*(\2)+\3 ld bc,#100*(\1)+#ff callx GenEneOff endm CALLGEN macro xref \1 sta var3 xor a sta var4 ld de,#100*(\2)+\3 ld bc,#100*(\1)+#ff callx GenEneOff endm GenEnemy RVOL stal NumEneDeath xor a xor a GenEnemy KAMIK jnc $nomuere jp GestFuel ;COLBALA 1 ;jnc $nomuere ;ldal WORLD ;cp AEREO ;jp nz,$noaereo ;DIRHERO AN_RVOL ; Tratamiento robot volante fase aerea. jnc $nomuere jp GestFuel ESP_ORDEN sta Pollo PersoSpeedY DS 1 ;> PersoPixY DS 1 ;> CONT_MOV DS 2 ;> FMUERTO DS 1 ;> CNTENER DS 1 ;> Pollo1 ds 1 ;> Pollo2 ds 1 ;> DS 1 ;> DS 1 ;> DS 2 ;> DS 1 ;> DS 1 ;> ds 1 ;> ds 1 ;> FASANIM DS 1 ;> SON DE ENETAB FPOLLO DS 1 ;> sta FASANIM DS 1 ;> SON DE ENETAB sta FPOLLO DS 1 ;> if 1 CALLGEN BFUMEE,0,0 xref BFUEL ld a,BFUEL stal NOMBRE xor a sta FASANIM sta FPOLLO if 1 sta PersoSpeedY sta PersoPixY sta CONT_MOV sta FMUERTO sta CNTENER sta Pollo1 sta Pollo2 endif endif ldal NumEneDeath PRTA 3,0,3 GenEnemy RVOL APARYDOWNBASE EQU 5*8*2 ; RANGO "Y" DESAPARICION INFERIOR ENE. APARYJUMPBASE EQU 8*8 ; RANGO "Y" APARICION EN BASE SI JUMP AEREO APARYDOWNBASE EQU 5*8*2 ; RANGO "Y" DESAPARICION INFERIOR ENE. APARYJUMPBASE EQU 8*8 ; RANGO "Y" APARICION EN BASE SI JUMP +6*8 jr $normal ld a,2 ; ¨Porque con HeroY y no con PersoY? BASE ldal HeroAgarra and a jnz $nost ldhll HeroYLast PRTHL 0,0,5 ;28 FABRICA ld a,2 C A STAL CNTGEN PRTA 1,0,3 LDAL CNTGEN2 INC A STAL CNTGEN2 PRTA 1,0,3 ret ret nz jz $set ADDWL PersoX,1 ret nz jnc $set $check cp 4 if 0 ldal X_SCR ld l,a ldal PersoX sub l ret c cp 4 ret c endif ret c jr $set ret c AEREO JUGUETES a,(hl) ld a,(hl) ldhll HeroX ld a,l ldhll HeroY ld a,l C_ ldal CNTGEN2 inc a stal CNTGEN2 PRTA 2,0,3 ADDWL PersoX,2 AEREO jz $GENERA ret ret z and a ret ;cp 1 ;ret nz JUGUETES APARYFAB EQU 0*8 ; RANGO "Y" APARICION DE ENEMIGOS APARYFAB EQU -1 ; RANGO "Y" APARICION DE ENEMIGOS DESAYFAB EQU 3*8 ; RANGO "Y" DESAPARICION DE ENEMIGOS DESAYFAB EQU 0 ; RANGO "Y" DESAPARICION DE ENEMIGOS LD DE,ANCHOP+DESAYFAB STDEL ST_ALL8 ALTOP+DESAYFAB ALTOP LD DE,ALTOP+DESAYFAB STDEL ST_ALL8 LD DE,ALTOP STDEL ST_ALL8 LD DE,ALTOP+DESAYFAB STDEL ST_ALL8 LD DE,-DESAYFAB STDEL ST_ALL7 LD DE,-DESAYFAB STDEL ST_ALL7 -DESAYFAB FABRICA BASE +16*2 +16*2 APARYJUMPBASE RANGO "Y" APARICION EN BASE SI JUMP +2*8 DESAYFABDOWN DE ENE RANGO "Y" DESAPARICION ABAJO APARYDOWNBASE EQU 16*2 ; RANGO "Y" DESAPARICION INFERIOR ENE. APARYJUMPBASE EQU 8*8 ; RANGO "Y" APARICION EN BASE SI JUMP APARYBASE EQU 0 ; RANGO "Y" APARICION EN BASE SI NO JUMP DESAXFAB EQU 3*8 ; RANGO "X" DESAPARICION DE ENEMIGOS DESAYFABUP EQU 0 ; RANGO "Y" DESAPARICION ARRIBA DESAYFABDOWN EQU 16*2 ; RANGO "Y" DESAPARICION INFERIOR ENE. EQU 8*8 ; RANGO "Y" APARICION EN BASE SI JUMP EQU 0 ; RANGO "Y" APARICION EN BASE SI NO JUMP EQU 3*8 ; RANGO "X" DESAPARICION DE ENEMIGOS EQU 0 ; RANGO "Y" DESAPARICION ARRIBA ;ld de,-APARYFAB+8*8 ;ld de,-APARYFAB RANGO "Y" DESAPARICION ABAJO -DESAYBASE DESAYBASE EQU 3*8 ; RANGO "Y" DESAPARICION EQU 3*8 ; RANGO "Y" DESAPARICION FABRICA BASE ;D_Pos 16*140,16*10 ;Original AEREO jr $NOAEREO ret jp CMP_SCRY ldal HeroXAnt and #0f PRTA 4,0,3 LDHL DIRCENTROA ld a,(hl) cp SL_IZQ45_A ret c cp SL_IZQ45_A+4 ret nc ret nc cp ldal PersoXAnt and #f0 ld c,a ldal PersoX and #f0 cp c jnc $read lda PersoXAnt lda PersoXAnt ldhll PersoXAnt lda PersoX sub l lda PersoX+1 sbc h jnc $read ld a,l PersoXAnt lda PersoXAnt Ant ; Solo para fase aerea
0x686E2
; ;/* -------------------------------------------------------------------------- ; MainLoop: ldal CNT2 stal CNT1OLD InitBuffNum IF MARCA=OFF ;ldhl DIRCENTRO ;ld a,(hl) ;PRTA 0,0,3 ;ldhll HeroY ;PRTHL 0,0,5 ;ldal HeroJump ;PRTA 1,0,3 ;PRTCOORDS ENDIF ldal ProgramCounter inc a stal ProgramCounter xor a stal HeroHidden ; Usually can be seen stal ObjFlag ; calL ld a,BYTE&(METRO_SPL) STAL PAL ld a,METRO_SPL/256 STAL PAL+1 ld a,METRO_SPLBNK callx SET_PAL2 pop hl ENDIF ldahli ld e,a stal DirGrfPan ldahli stal DirGrfPan+1 ;Direccion Grafico ldahli stal DirMapPan ldahli stal DirMapPan+1 ;Direccion Mapa ldahli stal BnkGrfPan ;Banco Grafico ldahli stal BnkMapPan ;Banco Mapa push hl ldal Langua add a,a ADDHLA ldahli sta ST_ALL5 ldahli sta ST_ALL5+1 ;Direccion Texto call LoadCine IF GG ld hl,MAP_BUFF ld de,MAP_BUFF+1 ld bc,20*60 ld a,FIRSTCHARPIECE ld (hl),a zldir xor a stal POSYLINE stal POSXCHAR ENDIF ld hl,MAP_BUFF ;COLBUFV lda ST_ALL5 ld e,a lda ST_ALL5+1 ld d,a ld c,FIRSTCHARPIECE ;BYTE&(FIRSTCHARPIECE_AZ-("A"-" ")) ld b,0 call CallGenerateText ; llamar aqui si esta en banco lda var1 add 7 IF GB add a,a add a,a add a,a ENDIF sta var4 IF GB call DumpTxt ENDIF pop hl ld a,l add MaxLangua*2 ld l,a ld a,h adc 0 ld h,a STHLL DirCineTab ;ST_ALL ;Puntero de tabla IF GB LDlo a,LYC_SCRTXT stal LCRUT+1 LDhi a,LYC_SCRTXT stal LCRUT+2 LD A,96-1 STA LYC ;Pos.Y scroll texto xor a stal CNTGEN2 ENDIF ldal MusicOn and a jnz $nomusic xref MAIN LD HL,MAIN callx DoCallMusic $nomusic IF GG ld hl,#7B00 ld a,l stal VRAMCHAR ld a,h stal VRAMCHAR+1 ld a,BYTE&(MAP_BUFF) stal RAMCHAR ld a,MAP_BUFF/256 stal RAMCHAR+1 ENDIF callx LCDC_ON IF GG ld a,1 stal FlgCinemati ENDIF ; Bucle de scroll e impresion $wait HALT_ IF GG ldal ProgramCounter inc a stal ProgramCounter and 11b jnz $wait ldal RAMCHAR add 1 stal RAMCHAR ldal RAMCHAR+1 adc 0 stal RAMCHAR+1 ldal POSXCHAR inc a stal POSXCHAR cp 20 jnz $noendl lda var4 dec a sta var4 jz Endscr ldal POSYLINE inc a stal POSYLINE cp 6 jnz $noendline dec a stal POSYLINE ld a,2 stal FlgCinemati $noendline xor a stal POSXCHAR $noendl add a,a ld c,a ldal POSYLINE ld l,a ld h,0 rept 6 add hl,hl endr ld de,#7B00 add hl,de ld e,c ld d,0 add hl,de ld a,l stal VRAMCHAR ld a,h stal VRAMCHAR+1 ENDIF IF GB ldal CNTGEN2 cp 2 jz Endscr ld a,1 stal CNTGEN2 ENDIF callx CONT ldal CNT1 and a jz $wait ld c,a IF GB and BIT_FIREA+BIT_FIREB+BIT_SELECT ELSE and BIT_FIREA+BIT_FIREB ENDIF jnz Endscr ld a,c and BIT_START jp z,$wait callx LCDC_OFF jr FinCine Endscr callx LCDC_OFF IF GB xor a ; stal CNTGEN2 stal DIRSCRX stal DIRSCRY stal DIRSCRX_Old stal DIRSCRY_Old stal WaitScrCine ELSE xor a stal FlgCinemati ENDIF jp NextCine FinCine CallMusic TURNOFF IF GB xor a stal CNTGEN2 ELSE xor a stal FlgCinemati ENDIF IF GB pop af stal IE ENDIF ret IF GB ; Rutina interrupcion de scan ; Solamente para Game Boy LYC_SCRTXT push bc,de,hl ldal CNTGEN2 and a jz $exitscan LDA STAT AND 10B JR NZ,LYC_SCRTXT ldal ProgramCounter inc a stal ProgramCounter and 111b jnz $setscr ldal DIRSCRY inc a stal DIRSCRY sta SCY ldal WaitScrCine inc a stal WaitScrCine ld c,a lda var4 cp c jnz $setbg2 ld a,2 stal CNTGEN2 jr $setbg2 $setscr ldal DIRSCRY stal SCY $setbg2 ldal LCDC or LCDC_BG_Bnk stal LCDC $exitscan pop hl,de,bc ei ret ENDIF ; Vuelca texto letra a letra de buffer a VRAM ; Solamente para Game Gear.
0x696A6
#ff IF SPIROU ; Efectua decremento de vida ; y repone la energia DoDecLife: ldal Life and a jp nz,$cont EI callx LCDC_OFF IF GB ldal IE and 00000001b stal IE ENDIF callx MakeClears IF GB xref PAL_PAS xor a stal SGB_FlagMarkers ld hl,PAL_PAS SGB SetPalette DI ENDIF if GG callx SetPalSt endif ; Imprime GAME OVER en pantalla PushBank ld a,MUSICDATABNK SetBank NoUpdate callx STURNOFF P xor a out (VDP_DATA),a dec c jnz $dumpline dec b jp nz,$newline ld a,1 stal FlgCinemati ld a,e add 64 out (VDP_COMM),a ld a,d adc 0 out (VDP_COMM),a ld c,20 $lineblack ld a,FIRSTCHARPIECE out (VDP_DATA),a xor a out (VDP_DATA),a dec c jnz $lineblack ret ENDIF IF GB ; Vuelca texto de buffer descomprimido a VRAM ; Solamente para Game Boy. DumpTxt: ld hl,MAP_BUFF ;COLBUFV ld de,#9C00+0+19*32 $nextline push de ld b,20 $prt ldahli LDDEIA dec b jnz $prt pop de ldal var1 dec a stal var1 ; Dec.numero lineas ret z ld a,e add 32 ld e,a ld a,d adc 0 ld d,a cp #a0 jnz $nextline ld d,#9c jr $nextline ENDIF TxtPass: db "PASSWORD",#FF TxtPassAL: db "PASSWORT",#FF ; Texto seleccion de lenguajes ; SPC,A-Z,x,:,¥,š,',0-9 TxtLenguajes: db "ENGLISH",0 db 0,0 db "FRANCAIS",0 db 0,0 db "ESPA",29+"@","OL",0 db 0,0 db "DEUTSCH",0 db #ff ; Vuelca texto big en pantalla ; In: ; HL=Direccion texto ; DE=Direccion VRAM DumpTxtBig: $enter push de $nextletter if GG ld a,e out (VDP_COMM),a ld a,d out (VDP_COMM),a endif ldahli and a jz $nextline cp #ff jz $endprt sub "@" jnc $normal xor a $normal add a,a add FIRSTCHARBIGPIECE IF GB LDDEIA inc a ld c,a ELSE out (VDP_DATA),a inc a ld c,a xor a out (VDP_DATA),a ENDIF push de IF GB ld a,e add 31 ld e,a ld a,d adc 0 ld d,a ld a,c LDDEIA pop de jr $nextletter ELSE ld a,e add 64 out (VDP_COMM),a ld a,d adc 0 out (VDP_COMM),a ld a,c out (VDP_DATA),a xor a out (VDP_DATA),a pop de ld a,e add 2 ld e,a ld a,d adc 0 ld d,a jr $nextletter ENDIF $nextline pop de IF GB ld a,e add 32 ;32*2 ld e,a ld a,d adc 0 ld d,a ELSE ld a,e add 64 ld e,a ld a,d adc 0 ld d,a ENDIF jr $enter $endprt pop de ret DefCine macro dwx \1 dwx \2 dbx \3 dbx \4 dwx IN_\5 dwx FR_\5 dwx ES_\5 dwx AL_\5 endm SetCine MACRO xdef \2 \2 EQU Cine_C DW \1 Cine_C = Cine_C+2 ENDM Cine_C = 0 CineTabla SetCine CineEscen0,Escene_00 SetCine CineEscen1,Escene_01 SetCine CineEscen2,Escene_02 SetCine CineEscen3,Escene_03 SetCine CineEscen4,Escene_04 SetCine CineEscenEnd,EsceneEnd CineEscen0 dwx PAL_PR1 DefCine PRESEN1G,PRESEN1M,PRESEN1GBNK,PRESEN1MBNK,TXT00A IF GB dwx PAL_PR2 DefCine PRESEN3G,PRESEN2M,PRESEN3GBNK,PRESEN2MBNK,TXT00B ELSE dwx PAL_PR2 DefCine PRESEN2G,PRESEN2M,PRESEN2GBNK,PRESEN2MBNK,TXT00B ENDIF dwx PAL_PR3 DefCine PRESEN3G,PRESEN3M,PRESEN3GBNK,PRESEN3MBNK,TXT00C dw #ffff CineEscen1 IF GB dwx PAL_RED DefCine REDUCEG,REDUCEM,REDUCEGBNK,REDUCEMBNK,TXT01 dw #ffff ELSE dwx PAL_RED DefCine CINE1G,REDUCEM,CINE1GBNK,REDUCEMBNK,TXT01 dw #ffff ENDIF CineEscen2 IF GB dwx PAL_CN1 DefCine REDUCEG,CINE1M,REDUCEGBNK,CINE1MBNK,TXT02 dw #ffff ELSE dwx PAL_CN1 DefCine CINE1G,CINE1M,CINE1GBNK,CINE1MBNK,TXT02 dw #ffff ENDIF CineEscen3 IF GB dwx PAL_C2A DefCine CINE2CG,CINE2AM,CINE2CGBNK,CINE2AMBNK,TXT03 dwx PAL_C2B DefCine CINE2CG,CINE2BM,CINE2CGBNK,CINE2BMBNK,TXT04 ELSE dwx PAL_C2A DefCine CINE2AG,CINE2AM,CINE2AGBNK,CINE2AMBNK,TXT03 dwx PAL_C2B DefCine CINE2BG,CINE2BM,CINE2BGBNK,CINE2BMBNK,TXT04 ENDIF dwx PAL_C2C DefCine CINE2CG,CINE2CM,CINE2CGBNK,CINE2CMBNK,TXT05 dw #ffff CineEscen4 dwx PAL_MON DefCine NAVEROTAG,NAVEROTAM,NAVEROTAGBNK,NAVEROTAMBNK,TXT06
0x6A880
ld de,#8000 ld bc,16 zldir ELSE ld hl,GORRET_G xor a out (VDP_COMM),a ld a,#40 out (VDP_COMM),a ld b,32 $repe ldahli out (VDP_DATA),a djnz $repe ENDIF PopBank ret ; Menu de seleccion de lenguajes Lenguajes: PushBank ld a,LengBNK SetBank call DoLenguajes PopBank ret ; Llama a GenerateText CallGenerateText PushBank xref BNKWindow ld a,BNKWindow SetBank xor a callx GenerateText PopBank ret IF GG SetPalSt ld a,BYTE&(CHARSBIGPAL) STAL PAL ld a,CHARSBIGPAL/256 STAL PAL+1 ld a,CHARSBIGPALBNK callx SET_PAL ld a,BYTE&(METRO_SPL) STAL PAL ld a,METRO_SPL/256 STAL PAL+1 ld a,METRO_SPLBNK callx SET_PAL2 ret ENDIF ; Llama a Cine Cine ldal LastWorld ld c,a ldal WORLD cp c ret z ;No hay Cine si mismo WORLD lda ActiveBank push af ld a,CineBNK SetBank call CineMain pop af SetBank ret ; Carga pantallas LoadCine lda ActiveBank push af ldal BnkGrfPan ;Banco Grafico SetBank LDHLL DirGrfPan ;Direccion del grafico ;ld de,MAP_BUFF ld de,OBJRAM callx UNPACK $unpack if GB ld hl,OBJRAM ;MAP_BUFF ld de,#9000 ld bc,128*16 zldir ld de,#8800 ld bc,128*16 zldir ELSE ld hl,OBJRAM ;MAP_BUFF ld de,#2000+#4000 ld a,e out (VDP_COMM),a ld a,d out (VDP_COMM),a ld bc,192*32 $dump2 ldahli out (VDP_DATA),a dec bc ld a,b or c jnz $dump2 ENDIF callx DumpChars IF GB ld hl,#9800 ld de,#9801 ld bc,1023 ld (hl),l zldir ld hl,#9C00 ld de,#9C01 ld bc,1023 ld (hl),l zldir ELSE ld a,FIRSTCHARPIECE sta ST_ALL callx BG1 ENDIF LD DE,MAP_BUFF IF GB LDlo a,#9800+32*2+2 sta ST_ALL7 LDhi a,#9800+32*2+2 sta ST_ALL7+1 ELSE LDlo a,#7800+64*2+2*2 sta ST_ALL7 LDhi a,#7800+64*2+2*2 sta ST_ALL7+1 ENDIF ld a,16 stal ST_ALL8 ld a,10 stal ST_ALL9 call DumpPantMap pop af SetBank ret ; Vuelca mapeado en pantalla ; In: ; DE=Buffer descompresion mapeado ; DirMapPan=Direccion mapa ; BnkMapPan=Banco mapa ; ST_ALL7=Destino VRAM Map. ; ST_ALL8=Ancho caracteres ; ST_ALL9=Alto caracteres DumpPantMap: PushBank ldal BnkMapPan ;ST_ALL4+1 ;Banco Mapa SetBank LDHLL DirMapPan ;ST_ALL3 ldahli cmp "R" bne $nornc ldahli cmp "N" bne $nornc ld a,(hl) cmp "C" bne $nornc LDHLL DirMapPan ;ST_ALL3 ;Direccion Mapa callx UNPACK bra $rnced $nornc push de,hl ldal ST_ALL8 if GB ELSE add a,a ENDIF ld e,a ld d,0 ld l,d ld h,d ldal ST_ALL9 ld b,a $mult add hl,de ; multiplica ancho*alto dec b jnz $mult ld c,l ld b,h pop hl,de LDHLL DirMapPan ;ST_ALL3 ;Direccion Mapa zldir $rnced LD HL,MAP_BUFF LDDEL ST_ALL7 lda ST_ALL9 ld c,a ; Alto car. $Alto lda ST_ALL8 ld b,a ; Ancho car. IF GG ld a,e out (VDP_COMM),a ld a,d or #40 out (VDP_COMM),a ENDIF push de $Ancho ldahli IF GB ld (de),a inc de ELSE out (VDP_DATA),a ldahli set 0,a out (VDP_DATA),a ENDIF dec b jr nz,$Ancho pop de ld a,e add 32*(DIMCOD+1) ld e,a ld a,d adc 0 ld d,a dec c jr nz,$Alto PopBank ret ; Imprime texto gordo DumpTxtBigBNK PushBank ld a,1 SetBank call DumpTxtBig PopBank ret ; Desconecta sprites numeros IF GG ClearNums: xor a OUT (VDP_COMM),A ld a,#3f+#40 OUT (VDP_COMM),A ld b,32 xor a $repe out (VDP_DATA),a djnz $repe ret ENDIF ; Convierte digitos a texra fase aerea LDHL DIRCENTROA ld a,(hl) cp SL_IZQ45_A jc $read cp SL_IZQ45_A+4 jnc $read ldal DIRCENTRO sub l ldal DIRCENTRO+1 sbc h jnc $read lda PersoXAnt and #0f jz $read lda PersoX and #f0 sta PersoX ret ldal CNT1 PRTA 3,0,3 ld a,1 PRTA 3,0,3 ld a,1 PRTA 3,0,3 ld a,1 PRTA 3,0,3 ld a,1 PRTA 3,0,3 ld a,1 PRTA 3,0,3 ld a,1 PRTA 3,4,3 ld a,1 PRTA 2,0,3 ldal HeroJump PRTA 2,0,3 ldal HeroJump PRTA 2,4,3 ld a,1 PRTA 3,4,3 ld a,1 PRTA 3,4,3 ldal HeroJump PRTA 2,0,3 $noprt $noprt ldal ProgramCounter and 1b jnz $noprt ldal HeroJump PRTA 2,4,3 ld a,1 PRTA 3,4,3 ld a,1 PRTA 3,8,3 ld a,1 PRTA 3,8,3 ld a,1 PRTA 3,8,3 xor a PRTA 3,0,3 PRTA 3,0,3 ld a,1 PRTA 3,0,3 ld a,1 PRTA 3,4,3 ld a,1 ld a,1 PRTA 3,4,3 ld a,1 PRTA 3,4,3 xor a PRTA 3,0,3 $noprt $noprt ldal ProgramCounter and 1b jnz $noprt ld a,1 PRTA 3,0,3 ld a,1 PRTA 3,0,3 ldal ProgramCounter and 1b jnz $noprt ldal ProgramCounter and 1b jnz $noprt $noprt ;ldal HeroJump ;PRTA 2,0,3 $noprt ProgramCounter $noprt ldal ProgramCounter PRTA 3,0,3 ldal ProgramCounter bit 0,a jnz $noprt ldal ProgramCounter bit 0,a jnz $noprt vargen ds 1 ds 1 xor a PRTA 3,4,3 xor a xor a vargen2 ds 1 ds 1 ldal vargen2 inc a stal vargen2 PRTA 3,4,3 ldal vargen2 inc a stal vargen2 PRTA 3,4,3 ldal vargen2 inc a stal vargen2 PRTA 3,4,3 ldal HeroX and #0f PRTA 0,0,3 ldal HeroY and #0f PRTA 1,0,3 ldal HeroJump PRTA 2,0,3 IF MASTER=OFF ldal HeroX and #0f PRTA 0,0,3 ldal HeroY and #0f PRTA 1,0,3 ldal HeroJump PRTA 2,0,3 ENDIF HeroX HeroY IF MASTER=OFF ldal PersoX and #0f PRTA 0,0,3 ldal PersoY and #0f PRTA 1,0,3 ldal PersoJump PRTA 2,0,3 ENDIF IF MASTER=OFF ldal PersoX and #0f PRTA 0,0,3
0x6D07D
stal WORLD ;jr $fadeout $nada ldal WORLD stal LastWorld $fadeout call FadeOut ;ret jp InitWorld ; Offsets para generacion explosiones ; Formato: ; dw Offsx,Offsy OffsExplo dw -17,0 dw -10,-10 dw 17,-20 dw 15,-20 dw -8,-10 dw 10,-20 dw 8,0 dw -17,-10 dw 10,0 dw -15,0 dw -8,-20 dw 15,-10 dw #8080 ; Codigo final ; Formato: ; dw Cx,Cy ; Posiciones x/y de mapeado de las puertas. ; Hot point en centro inferior. CoordDoorsMonte ;dw 333,544 dw 333+6*8,544 dw 1229,80 if 0 CoordDoorsBase dw 337,272 dw 637,128 endif ; Genera explosiones puerta en monte ESP_Monte ldal FlgDumpDoor and a jp z,$ret2 $repe ldal ProgramCounter and 11b jp nz,$ret2 xref MONTE if 0 ldal WORLD cp MONTE jz $monte ld hl,CoordDoorsBase jr $dirmap endif $monte ld hl,CoordDoorsMonte $dirmap ;ldal ContAuto ;dec a ldal ContVramDump dec a add a,a add a,a ld e,a ld d,0 add hl,de ld c,l ld b,h ld hl,OffsExplo ldal ContTablaExplo ;CONT_MOV inc a stal ContTablaExplo ;CONT_MOV add a,a add a,a ld e,a ld d,0 add hl,de ld a,(hl) cp #80 jnz $noend xor a stal ContTablaExplo ;CONT_MOV jr $ret2 ; Pone explosiones en ENETAB $noend LDABCI add (hl) inc hl sta var1 LDABCI adc (hl) inc hl sta var1+1 ; Store Perso_X LDABCI add (hl) inc hl sta var2 LDABCI adc (hl) sta var2+1 ; Store Perso_Y xor a sta var3 sta var4 xref BEXPLO1 ld
0x7D9DD
P15 Low P14 Hi LDCA LD A,B AND 0FH SWAP A LD B,A LDAC ; DUMMY(WAITE) LDAC ; DUMMY(WAITE) LDAC ; DUMMY(WAITE) LDAC ; DUMMY(WAITE) LDAC ;
0x7EA9B
* ;* TRATAMIENTO FASE AEREO * ;* * ;******************************************************************** TabFall: $num = 8 ; Velocidad caida,Empuje subida db #30-$num,#12-$num db #30-$num,#38-$num db #38-$num,#2A-$num db #20-$num,#10-$num db #30-$num,#12-$num db #30-$num,#38-$num db #38-$num,#2A-$num db #20-$num,#10-$num db #FF TreatAereo: $Limx_scr = 3200 $ProfCaida = 144+100 $FrecApa = 1 $LimitTimeFuel = 220 ;160 ; Rutina tratamiento de nave IF GB ldal Fuel add NUMS stal MARC_BUFF+11+20 ldal Fuel+1 add NUMS stal MARC_BUFF+10+20 ENDIF ldal StatusAereo and a jz $checkgen cp ChecklimAereo jp z,$checklim2 cp CaeNave jp z,$cae cp SubeNave jp z,$sube cp CaeSinCntr jp z,$sincntr cp TemblorAereo jp z,$ret cp EndAereo jp z,$endaereo cp DestruccionNave jp nz,$ret ; Nave destruida ldal CNTGEN sub 1 stal CNTGEN jnc $next0 call $setcoords GenEnemy BEXPLO1 ld a,10 stal CNTGEN $next0 call $NaveCaeVacio jp nc,$ret ld a,DIE_DECLIFE stal HeroDie ret $checkgen ldal CntFuel inc a stal CntFuel cp $LimitTimeFuel jnz $checklim xor a stal CntFuel ldal Fuel dec a stal Fuel and #0f cp 10 jc $checklim ldal Fuel+1 dec a stal Fuel+1 and #0f cp 10 jnc $nofuel ld a,9 stal Fuel jr $checklim $nofuel xor a stal Fuel stal Fuel+1 ld a,DestruccionNave ; Empty fuel stal StatusAereo xor a sta PersoSpeedY sta PersoPixY jp $ret $checklim ldal X_SCR sub BYTE&($Limx_scr) ldal X_SCR+1 sbc $Limx_scr/256 jp c,$efecdisp $okclear ld a,ChecklimAereo stal StatusAereo $checklim2 call $ChecklimX jnc $checky call $ChecklimY jc $centro jp $ret $checky call $ChecklimY jp $ret $centro call $setcoords GenEnemy BEXPLO1 ld a,CaeNave stal StatusAereo xor a stal CNTGEN ldal CNTGEN ld e,a ld d,0 inc a stal CNTGEN ld hl,TabFall add hl,de ld a,(hl) cp #ff jnz $cont ld a,CaeSinCntr stal StatusAereo jp $ret $cont sta PersoSpeedY xor a sta PersoPixY ; Nave pierde el control y cae $cae PushY 2,down jnc $noend ld a,SubeNave stal StatusAereo ldal CNTGEN ld e,a ld d,0 inc a stal CNTGEN ld hl,TabFall add hl,de ld a,(hl) sta PersoSpeedY xor a sta PersoPixY jp $ret $noend lda PersoY add c sta PersoY lda PersoY+1 adc 0 sta PersoY+1 jp $ret ; Empuje ascendente $sube PushY 2,down jnc $noend2 call $setcoords GenEnemy BEXPLO2 ld a,CaeNave stal StatusAereo ldal CNTGEN ld e,a ld d,0 inc a stal CNTGEN ld hl,TabFall add hl,de ld a,(hl) cp #ff jnz $cont2 ld a,CaeSinCntr stal StatusAereo jp $ret $cont2 sta PersoSpeedY xor a sta PersoPixY jp $ret $noend2 lda PersoY sub c sta PersoY lda PersoY+1 sbc 0 sta PersoY+1 jp $ret
(Source: Original TCRF research)
The Spirou series
| |
---|---|
Game Boy (Color) | Spirou (Prototype) • Spirou: The Robot Invasion |
Game Gear | Spirou |
Genesis | Spirou |
SNES | Spirou |
Cleanup > Articles needing translation > Articles needing translation/es
Cleanup > Pages missing developer references
Cleanup > To do
Games
Games
Games > Games by content > Games with hidden level selects
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by Bit Managers
Games > Games by platform > Game Gear games
Games > Games by release date > Unreleased games
Games > Games by release date > Unreleased games > Unreleased Game Gear games
Games > Games by series > Spirou series