If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
Rescate en el Golfo (Amstrad CPC)
Jump to navigation
Jump to search
Cleanup > Pages missing date references
Cleanup > Pages missing developer references
Cleanup > Pages missing publisher references
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by TRUE SOFT
Games > Games by publisher > Games published by Opera Soft
Outdated translations are marked like this.
Rescate en el Golfo |
---|
Developer: TRUE SOFT This game has uncompiled source code. |
It's a Rescue in the Gulf!
Source Code Fragment
Some code was left in the game, but with loads of comments in European Spanish. This can be seen with a hex editor at address FBA7 in Side A of the .cdt dump of the game.
The comments describe drawing characters, changing their position, checking if objects are present or not present, checking if characters are wounded, and even moving an uncle by helicopter!
Original |
---|
INC (HL) ;HACEMOS QUE TE QUITE UNO DE ENERGIA JP DIBUJAMORO MRETRO DEC C DEC C LD (IX+1),C ;GUARDAMOS LA NUEVA X JR DIBUJAMORO ;DIBUJAMOS EL TERRORISTA MNORETRO LD (IX+8),1 ;LE CAMBIAMOS LA POSICION JR DIBUJAMORO </div> MORODER CALL CAJAPORDER ;MIRAMOS SI HAY CAJA POR LA DERECHA JR C,MNOAVAN ;SI HAY ACARREO NO PUEDE AVANZAR LD L,1 ;PONEMOS LA POSICION PARA COMPROBACION PUSH BC ;GUARDAMOS COORDENADAS CALL POSIBCHOQ ;COMPROBAMOS SI SE CHOCA CON EL PERSONAJE POP BC JR NC,MAVAN ;SI NO SE CHOCA CONTINUAMOS LD A,(FASE) AND 11111110B CP 00000110B JP Z,DIBUJAMORO ;SI ESTA AGACHADO NO LE QUITAN ENERGIA LD HL,ENERGYOUT INC (HL) ;HACEMOS QUE TE QUITE UNO DE ENERGIA JR DIBUJAMORO MAVAN INC C INC C LD (IX+1),C JR DIBUJAMORO MNOAVAN LD (IX+8),0 ;LE CAMBIAMOS LA POSICION JR DIBUJAMORO MORODISPA DEC (IX+10) ;DECREMENTAMOS EL TIEMPO QUE ESTA DISPARANDO JP NZ,DIBMORO LD (IX+5),0 ;SI HA TERMINADO EL DISPARO LE PONEMOS ANDANDO LD A,B SUB 8 LD B,A ;CORREGIMOS LA Y LD (IX+2),A ;LA GUARDAMOS JP NODISPMORO MOROATRAS DEC (IX+9) ;DECREMENTAMOS EL TIEMPO QUE VA HACIA ATRAS LD A,(IX+11) ;COGEMOS LA POSICION PARA LA QUE VA HACIA ATRAS OR A JR Z,MATRASDER ;SI ES 0 VA PARA LA DERECHA MATRASIZQ DEC C DEC C CALL CAJAPORIZQ ;MIRAMOS SI HAY CAJA POR LA IZQUIERDA JR C,DIBMORO ;SI HAY ACARREO NO PUEDE RETROCEDER DEC C DEC C LD (IX+1),C ;GUARDAMOS LA NUEVA X JP DIBMORO MATRASDER INC C INC C CALL CAJAPORDER JR C,DIBMORO INC C INC C LD (IX+1),C ;GUARDAMOS LA NUEVA X JP DIBMORO MOROPARPA DEC (IX+7) ;DECREMENTAMOS EL TIEMPO DE PARPADEO JP Z,ENEMPUNTOS ;DAMOS PUNTOS Y DESCONECTAMOS LD A,(IX+7) BIT 0,A ;UNAS VECES SE DIBUJA Y OTRAS NO JP Z,NEXTENEM JP DIBMORO ;DIBUJAMOS EL MORO DIBUJAMORO LD DE,40*256+12 ;ALTO=40,ANCHO=12 CALL PUNETAZO ;COMPROBAMOS SI LE DAN PUNETAZO JR NC,NOPEGAMOR ;SI NO HAY ACARREO ES QUE NO LE PEGA CALL ALEA AND 11B ADD 5 LD (IX+9),A ;PONEMOS EL TIEMPO QUE SE TIRA HACIA ATRAS DEC (IX+6) ;DECREMENTAMOS EL NUMERO DE GOLPES LD A,(POSICION) ;COGEMOS LA DIRECCION DEL PERSONAJE LD (IX+11),A ;LA PONEMOS EN LA TABLA DEL ENEMIGO NOPEGAMOR LD A,C ;COGEMOS LA X PARA COMPROBAR QUE NO SE SALE DE LA PANTALLA CP 60 ;SI X<60 DESCONECTAMOS EL MORO JP C,DESCMORO CP 184 ;SI X>183 DESCONECTAMOS EL MORO JP NC,DESCMORO LD A,(IX+5) ;COGEMOS LA FASE DE ANIMACION INC A ;LA INCREMENTAMOS CP 4 ;MIRAMOS SI HA LLEGADO A LA ULTIMA JR NZ,MNEXTFAS XOR A MNEXTFAS LD (IX+5),A ;SI HA LLEGADO A LA ULTIMA LA PONEMOS A 0 DIBMORO LD A,(IX+8) ;COGEMOS LA POSICION LD (INVERT+1),A LD A,(IX+5) ;COGEMOS FASE DE ANIMACION LD HL,TABMORO ;APUNTAMOS A LA TABLA DEL MORO CALL DIBUSPRITE ;LO DIBUJAMOS JP NEXTENEM ***********MOVEHELI SE ENCARGA DE MOVER AL TIO EN HELICOPTERO MOVEHELI EX AF,AF' ;PRESERVAMOS EL TIPO DE HELICOPTERO LD C,(IX+1) ;C=X LD B,(IX+2) ;B=Y LD A,(IX+6) ;NUMERO DE GOLPES OR (IX+7) ;TIEMPO DE MUERTE JP Z,NEXTENEM ;SALIMOS SI ESTA DESCONECTADO LD A,(IX+9) ;COGEMOS EL TIEMPO QUE VA HACIA ATRAS OR A JR NZ,HELIATRAS ;SI NO ES 0 ES QUE TIENE QUE IR HACIA ATRAS LD A,(IX+6) ;COGEMOS NUMERO DE GOLPES OR A JP Z,HELIPARPA ;SI ES 0 ES QUE HAY QUE ELIMINAR AL TERRORISTA LD A,(IX+6) ;NUMERO DE GOLPES OR (IX+7) ;TIEMPO DE MUERTE JP Z,NEXTENEM ;SALIMOS SI ESTA DESCONECTADO LD A,(X) ;COGEMOS LA X DEL PERSONAJE CP C JR C,XPERSMEN ;SI HAY ACARREO ES QUE LA X PERSONAJE<X DEL HELI XPERSMAY SUB 2 CP C CALL C,PONGRANADA JR VUELA XPERSMEN ADD 2 CP C CALL NC,PONGRANADA VUELA EX AF,AF' ;A=TIPO DE HELICOPTERO CP 2 JR Z,HELITONTO ;SI ES 2 ES EL HELICOPTERO NORMAL LD A,(X) CP C JR Z,HELIDERIZQ ;SI ES IGUAL NO CAMBIA DE POSICION JR C,HELIIZQ JR HELIDER HELITONTO LD A,(IX+8) OR A ;MIRAMOS SI VA A LA DERECHA O A LA IZQUIERDA JR Z,HELIDER HELIIZQ DEC C DEC C ;DECREMENTAMOS LA X LD (IX+1),C ;LA GUARDAMOS LD (IX+8),1 ;PONEMOS LA POSICION JR HELIDERIZQ ;EL RESTO ES COMUN HELIDER INC C INC C ;INCREMENTAMOS LA X LD (IX+8),0 ;PONEMOS LA POSICION LD (IX+1),C ;Y LA GUARDAMOS HELIDERIZQ LD L,(IX+3) LD H,(IX+4) ;COGEMOS LA DIR DE LOS INCREMENTOS DE Y LD A,(IX+2) ;COGEMOS LA Y ADD (HL) ;LE SUMAMOS EL INCREMENTO DE Y LD (IX+2),A ;GUARDAMOS LA NUEVA Y LD B,A ;B=Y INC HL ;INC PUNTERO DE INCREMENTOS LD A,(HL) CP 255 ;MIRAMOS SI HA LLEGADO AL FINAL JR NZ,NOFININCY LD HL,INCYHELI ;SI HA LLEGADO AL FINAL INICIALIZAMOS LA TABLA NOFININCY LD (IX+3),L ;GUARDAMOS LA NUEVA DIRECCION LD (IX+4),H ;DE LOS INCREMENTOS JP DIBUJAHELI HELIATRAS DEC (IX+9) ;DECREMENTAMOS EL TIEMPO QUE VA HACIA ATRAS LD A,(IX+11) ;COGEMOS LA POSICION PARA LA QUE VA HACIA ATRAS OR A JR Z,HATRASDER ;SI ES 0 VA PARA LA DERECHA HATRASIZQ DEC C DEC C DEC C DEC C LD (IX+1),C ;GUARDAMOS LA NUEVA X JP DIBHELI HATRASDER INC C INC C INC C INC C LD (IX+1),C ;GUARDAMOS LA NUEVA X JP DIBHELI HELIPARPA DEC (IX+7) ;DECREMENTAMOS EL TIEMPO DE PARPADEO JP Z,ENEMPUNTOS ;DAMOS PUNTOS Y DESCONECTAMOS LD A,(IX+7) BIT 0,A ;UNAS VECES SE DIBUJA Y OTRAS NO JP Z,NEXTENEM JP DIBHELI DIBUJAHELI PUSH BC LD HL,SONIHELI CALL SONIDOPSG ;HACEMOS RUIDO DEL HELICOPTERO POP BC LD DE,40*256+12 ;ALTO=40,ANCHO=12 CALL PUNETAZO ;COMPROBAMOS SI LE DAN PUNETAZO JR NC,NOPEGAHELI ;SI NO HAY ACARREO ES QUE NO LE PEGA LD (IX+9),5 ;PONEMOS EL TIEMPO QUE SE TIRA HACIA ATRAS DEC (IX+6) ;DECREMENTAMOS EL NUMERO DE GOLPES LD A,(POSICION) ;COGEMOS LA DIRECCION DEL PERSONAJE LD (IX+11),A ;LA PONEMOS EN LA TABL |
Translation |
INC (HL) ;WE MAKE YOUR CHARACTER TO LOOSE ONE ENERGY POINT JP DIBUJAMORO MRETRO DEC C DEC C LD (IX+1),C ;WE SAVE THE NEW X JR DIBUJAMORO ;WE DRAW THE TERRORIST MNORETRO LD (IX+8),1 ;WE CHANGE ITS POSITION JR DIBUJAMORO MORODER CALL CAJAPORDER ;WE CHECK WHETHER THERE IS ANY BOX ON THE LEFT OR NOT JR C,MNOAVAN ;IF THERE IS A CARRY YOU CAN’T MOVE ON LD L,1 ;WE ENTER THE POSITION FOR CHECKING PUSH BC ;WE SAVE THE COORDINATES CALL POSIBCHOQ ;WE CHECK IF IT COLLIDES WITH THE CHARACTER POP BC JR NC,MAVAN ;IF IT DOESN’T, WE MOVE ON LD A,(FASE) AND 11111110B CP 00000110B JP Z,DIBUJAMORO ;IF IT IS CROUCHED, IT DOESN’T LOOSE ENERGY LD HL,ENERGYOUT INC (HL) ; WE MAKE YOUR CHARACTER TO LOOSE ONE ENERGY POINT JR DIBUJAMORO MAVAN INC C INC C LD (IX+1),C JR DIBUJAMORO MNOAVAN LD (IX+8),0 ;WE CHANGE ITS POSITION JR DIBUJAMORO MORODISPA DEC (IX+10) ; WE REDUCE THE TIME INTERVAL IT IS SHOOTING JP NZ,DIBMORO LD (IX+5),0 ;IF THE SHOOT HAS ENDED, WE SET IT TO WALKING LD A,B SUB 8 LD B,A ;WE FIX THE Y LD (IX+2),A ;WE SAVE IT JP NODISPMORO MOROATRAS DEC (IX+9) ;WE REDUCE THE TIME INTERVAL IT IS GOING BACKWARDS LD A,(IX+11) ;WE TAKE THE POSITION FOR WHICH IT IS GOING BACKWARDS OR A JR Z,MATRASDER ;IF IT IS 0, IT IS ACTUALLY GOING TO THE LEFT MATRASIZQ DEC C DEC C CALL CAJAPORIZQ ; WE CHECK WHETHER THERE IS ANY BOX ON THE LEFT OR NOT JR C,DIBMORO ;IF THERE IS A CARRY IT CANNOT RECOIL DEC C DEC C LD (IX+1),C ;WE SAVE THE NEW X JP DIBMORO MATRASDER INC C INC C CALL CAJAPORDER JR C,DIBMORO INC C INC C LD (IX+1),C ;WE SAVE THE NEW X JP DIBMORO MOROPARPA DEC (IX+7) ;WE REDUCE THE BLINKING TIME INTERVAL JP Z,ENEMPUNTOS ;WE ADD THE SCORES AND DISCONNECT LD A,(IX+7) BIT 0,A ;SOMETIMES IT IS DRAWN AND SOMETIMES IT IS NOT JP Z,NEXTENEM JP DIBMORO ;WE DRAW THE MORON DIBUJAMORO LD DE,40*256+12 ;ALTO=40,ANCHO=12 CALL PUNETAZO ;WE CHECK IF IT GETS PUNCHED JR NC,NOPEGAMOR ;IF THERE IS NO CARRY, IT DOESN’T GET PUNCHED CALL ALEA AND 11B ADD 5 LD (IX+9),A ;WE SET THE TIME INTERVAL IT’S PULLED BACK DEC (IX+6) ;WE REDUCE THE NUMBER OF HITS LD A,(POSICION) ;WE TAKE THE CHARACTER’S DIRECTION LD (IX+11),A ;WE ADD IT IN THE ENEMY’S TABLE NOPEGAMOR LD A,C ;WE TAKE THE X TO CHECK THAT IT DOESN’T MOVE OUT OF THE SCREEN CP 60 ;SI X<60 WE DISCONECT THE MORON JP C,DESCMORO CP 184 ;SI X>183 WE DISCONECT THE MORON JP NC,DESCMORO LD A,(IX+5) ;WE TAKE THE ANIMATION’S PHASE INC A ;WE INCREMENT IT CP 4 ;WE CHECK IF IT IS THE LAST ONE JR NZ,MNEXTFAS XOR A MNEXTFAS LD (IX+5),A ;IF IT IS ACTUALLY THE LAST ONE, WE SET IT TO 0 DIBMORO LD A,(IX+8) ;WE TAKE THE POSITION LD (INVERT+1),A LD A,(IX+5) ;WE TAKE THE ANIMATION’S PHASE LD HL,TABMORO ;WE ADD IT TO THE MORON’S TABLE CALL DIBUSPRITE ;WE DRAW IT JP NEXTENEM ***********MOVEHELI IS USED TO MOVE THE GUY IN HELICOPTER MOVEHELI EX AF,AF' ;WE PRESERVE THE TYPE OF THE HELICOPTER LD C,(IX+1) ;C=X LD B,(IX+2) ;B=Y LD A,(IX+6) ;NUMBER OF HITS OR (IX+7) ;DEATH TIME JP Z,NEXTENEM ;WE JUMP IF IT IS DISCONNECTED LD A,(IX+9) ;WE TAKE THE TIME INTERVAL IT’S MOVING BACKWARDS OR A JR NZ,HELIATRAS ;IF IT ISN’T 0, IT MUST GO BACKWARDS LD A,(IX+6) ;WE TAKE THE NUMBER OF HITS OR A JP Z,HELIPARPA ;IF IT IS 0 WE HAVE TO DELETE THE TERRORIST LD A,(IX+6) ;NUMBER OF HITS OR (IX+7) ;DEATH TIME JP Z,NEXTENEM ;WE EXIT IF IT IS DISCONNECTED LD A,(X) ;WE TAKE THE CHARACTER’S X CP C JR C,XPERSMEN ;IF THER IS A CARRY, THEN THE CHARACTER’S X < HELICOPTER’S X XPERSMAY SUB 2 CP C CALL C,PONGRANADA JR VUELA XPERSMEN ADD 2 CP C CALL NC,PONGRANADA VUELA EX AF,AF' ;A=HELICOPTER TYPE CP 2 JR Z,HELITONTO ;IF IT IS 2, IT IS THE NORMAL HELICOPTER LD A,(X) CP C JR Z,HELIDERIZQ ;IF IT IS THE SAME, IT DOESN’T CHANGE THE POSITION JR C,HELIIZQ JR HELIDER HELITONTO LD A,(IX+8) OR A ;WE CHECK IF IT GOES TO THE LEFT OR TO THE RIGHT JR Z,HELIDER HELIIZQ DEC C DEC C ;WE DCREMENT THE X LD (IX+1),C ;WE SAVE IT LD (IX+8),1 ;WE SET THE POSITION JR HELIDERIZQ ;THE REST IS COMMON HELIDER INC C INC C ;WE INCREMENT THE X LD (IX+8),0 ;WE SET THE POSITION LD (IX+1),C ;AND WE SAVE IT HELIDERIZQ LD L,(IX+3) LD H,(IX+4) ;WE TAKE THE DIR OF THE “Y� DECREMENTS LD A,(IX+2) ;WE TAKE THE Y ADD (HL) ;WE ADD IT THE Y INCREMENT LD (IX+2),A ;WE SAVE THE NEW Y LD B,A ;B=Y INC HL ;INC INCREMENT POINTER LD A,(HL) CP 255 ;WE CHECK IF WHETHER IT HAS GOT TO THE END JR NZ,NOFININCY LD HL,INCYHELI ;IF IT HAS GOT TO THE END, WE REINITIALIZE THE TABLE NOFININCY LD (IX+3),L ;WE SAVE THE NEW DIRECTION LD (IX+4),H ;OF THE INCREMENTS JP DIBUJAHELI HELIATRAS DEC (IX+9) ;WE DECREMENT THE TIME IT’S GOING BACKWARDS LD A,(IX+11) ;WE TAKE THE POSITION FOR WHICH IT GOES BACKWARDS OR A JR Z,HATRASDER ;IF IT IS 0 IT GOES TO THE RIGHT HATRASIZQ DEC C DEC C DEC C DEC C LD (IX+1),C ;WE SAVE THE NEW X JP DIBHELI HATRASDER INC C INC C INC C INC C LD (IX+1),C ;WE SAVE THE NEW X JP DIBHELI HELIPARPA DEC (IX+7) ;WE DECREMENT THE BLINKING TIME JP Z,ENEMPUNTOS ;WE ADD THE SCORES AND DISCONNECT LD A,(IX+7) BIT 0,A ;SOMETIMES IT IS DRAWN AND SOMETIMES IT IS NOT JP Z,NEXTENEM JP DIBHELI DIBUJAHELI PUSH BC LD HL,SONIHELI CALL SONIDOPSG ;WE PLAY THE HELICOPTER NOISE POP BC <div class="mw-translate-fuzzy"> LD DE,40*256+12 ;ALTO=40,ANCHO=12 CALL PUNETAZO ;WE CHECK IF IT GETS PUNCHED JR NC,NOPEGAHELI ;IF THERE IS NO CARRY, THEN IT DOESN’T GET PUNCHED LD (IX+9),5 ;WE SET THE TIME INTERVAL IT’S PULLED BACK DEC (IX+6) ;WE REDUCE THE NUMBER OF HITS LD A,(POSICION) ;WE TAKE THE CHARACTER’S DIRECTION LD (IX+11),A ;WE ADD IT TO THE TABLE |
(Source: Translated by Gogoat.)
Cleanup > Pages missing date references
Cleanup > Pages missing developer references
Cleanup > Pages missing publisher references
Games > Games by content > Games with uncompiled source code
Games > Games by developer > Games developed by TRUE SOFT
Games > Games by publisher > Games published by Opera Soft