Este archivo es una recopilación de trucos para los juegos que jugaba en los 90. Gran parte de este archivo se volcó en su día en cheating.isgreat.org, pero actualmente esa página la tengo abandonada desde que perdí sus datos.
Nota: Puede que las “Cosas que hay” se hayan desplazado al pegarlas desde la tabla original, que no era una tabla sino columnas paralelas de wordperfect.
Lugares donde hay cosas: | Cosas que hay |
Despeñadero al N. de las White Towers | Blue potion |
Michel Delving | Blue potion |
Ruina al E. de Mt. Gundabad | Blue potion |
Grey Havens | Blue potion |
Entre el Isen y el ¿Arnor? ¿Guodlo? | Blue potion |
Sur de Forlond | Cristal (Pallantir) |
N. de Erebor | Cristal (Pallantir) |
Belegost | Dwarven Hammer. |
Rivendell | Mithril Mail |
Forlond | Mithril Mail |
Tuckborough | Black Flask |
S. de Ost-In-Edhil | Black Flask |
Bombadil's House | Ancient Sword |
Barrow Downs (Colinas justo al E. de Bombadil's House) | Elven blade |
Colinas más allá de Barrow Downs | Elven blade |
Final del camino de Buckland a Bombadil's House | Elven Blade |
Lago al W. de Annuminas | Gnarled Staff |
Ruina al norte, entre las montañas y el bosque | Sceptre |
Lorien | Silver Orb, Glowing Vial |
Cerca de la desembocadura del Isen, en un pueblo en un bosque | Elven Cloak |
Cerca del bosque anterior, en otro pueblo | Coil of Rope , |
Sur de Mount Gram | Blue potion, Glowing Vial, Flecha Roja |
La tecla Mayús-L sirve para subir de Nivel, perdiendo 15 minutos. Escribiendo “PRINCE MEGAHIT” se activa una serie de opciones para facilitar el juego:
Tecla: | Función: |
T | Vida extra |
+ | Aumenta el tiempo |
- | Disminuye el tiempo |
U | Ver pantalla sup. |
H | Ver pantalla izq. |
J | Ver pantalla dch. |
N | Ver pantalla inf. |
El cargador Basic permite cambiar los valores de la partida grabada. Para utilizarlo, archivar el programa como “TRUCOPRI.BAS” y ejecutarlo con “GWBASIC TRUCOPRI.BAS” antes de cargar el juego
Nota: en el momento en que desarrollé este cargador, la Convención de Berna y la directiva europea de derechos de autor permitían el uso de ingeniería inversa sobre documentos o datos del usuario para permitir la interoperatividad de software. Dado que los archivos de partidas grabadas no son programas, sino documentos del usuario, el uso en aquel momento de estas técnicas era legal. Desconozco su legalidad en estados piratas como los que hay al otro lado del Atlántico, donde no se respetan las leyes internacionales y, en cambio, se nos exige a los ciudadanos de otros estados respetar sus leyes.
10 REM Truco para Prince of Persia 20 REM Por J. G. M. 40 ' Comprobando la existencia del archivo Prince.sav 50 ON ERROR GOTO 200 60 OPEN "prince.sav" FOR INPUT AS #1:CADENA$=INPUT$(8,1) 70 PRINT "Ya existe el archivo PRINCE.SAV" 80 PRINT "Tiempo:";ASC(MID$(CADENA$,1,1));"minutos" 90 PRINT "Valor desconocido:";ASC(MID$(CADENA$,3,1));ASC(MID$(CADENA$,4,1)) 100 PRINT "Nivel:";ASC(MID$(CADENA$,5,1)) 110 PRINT "Vidas:";ASC(MID$(CADENA$,7,1)) 120 CLOSE #1:INPUT "1-cambiar de nombre 2-dejar como está 3-sobreescribir";A 130 ON A GOTO 140, 190, 220 140 FILES 150 ON ERROR GOTO 600:INPUT "¿nuevo nombre?";N$ 160 NAME "prince.sav" AS N$:ON ERROR GOTO 170 PRINT "De acuerdo." 180 GOTO 210 190 GOTO 400 200 PRINT "No existe el fichero Prince.sav":RESUME 210 210 ON ERROR GOTO 220 INPUT "¿ Tiempo? (máx teórico 60 minutos; máximo práctico 255 minutos)";T 230 IF T>255 THEN 220 240 LINEA$=CHR$(T)+CHR$(0)+CHR$(&HB9)+CHR$(2) 250 INPUT "¿Nivel? (sólo hay 12 niveles). NOTA: N=13 para luchar con sultán.";N 260 IF N>13 THEN GOTO 250 270 LINEA$=LINEA$+CHR$(N)+CHR$(0) 280 INPUT "¿Vidas? (Máx. práctico 255; máx. aconsejado 10)";V 290 IF V>255 THEN GOTO 280 300 LINEA$=LINEA$+CHR$(V)+CHR$(0) 310 OPEN "prince.sav" FOR OUTPUT AS #1 320 PRINT #1,LINEA$ 330 CLOSE #1 400 GOSUB 500 405 PRINT "Pulse 'Retorno de carro' para salir a DOS" 410 INPUT ENTER$: SYSTEM 500 PRINT "Para activar esta configuración, pulse CONTROL-L cuando aparezca el" 510 PRINT "mensaje 'LOADING'." 520 RETURN 600 PRINT "Nombre de archivo erróneo o ya existe el archivo":RESUME 160
En cierto número de PC-Manía se asegura que pulsando F10 en la pantalla de récords se activan unas funciones especiales (Teclas F7-F9). Pero al pulsar F10 se sale del programa, se esté donde se esté.
En un número de PCReview se dice que pulsando F7 (en vez de Intro) en la pantalla de selección de modo de video, y luego Espacio nada más comenzar a jugar, se obtienen vidas infinitas. Pero Espacio siempre dispara, en la configuración de teclado que sea, y no produce otro efecto. Quizá haya que disponer de Joystick. [NOTA: Alguna vez me ha funcionado, pero no sé cómo. Cuando funciona, es la energía lo que es infinito.]
Hay que hacer las siguientes cosas:
Este juego tiene -según veo en su archivo .EXE) teclas secretas para facilitar el juego, pero no las conozco. Lo que sí se es cómo modificar ciertos valores en las partidas grabadas:
10 'Editor Keen Dreams 20 DIM NumeroValido(6) 30 CLS 40 PRINT "Editar partida grabada del KEEN DREAMS" 50 PRINT 60 PRINT , "Número", "Nombre" 70 FOR F = 0 TO 6 80 OPEN "SAVEGM" + RIGHT$(STR$(F), 1) + ".KDR" FOR RANDOM ACCESS READ AS #1 90 FIELD 1, 28 AS NOMBRE$ 100 IF NOT LOF(1) = 0 THEN 130 110 CLOSE 1: KILL "SAVEGM" + RIGHT$(STR$(F), 1) + ".KDR": GOTO 210 130 GET 1, 1 140 IF NOT MID$(NOMBRE$, 1, 3) = "KDR" THEN 190 150 N$ = MID$(NOMBRE$, 7) 160 I = INSTR(N$, CHR$(0)) 170 IF I > 0 THEN N$ = MID$(N$, 1, I) 180 PRINT , F, N$ 185 NumeroValido(F) = -1 190 CLOSE 1 220 NEXT 230 INPUT ">Entre el número de partida a modificar>"; N 240 IF N < 0 OR N > 6 OR N <> INT(N) THEN PRINT "Entre un número del 0 al 6": GOTO 230 250 IF NOT NumeroValido(N) THEN PRINT "No existe el archivo o es incorrecto": GOTO 230 260 OPEN "SAVEGM" + RIGHT$(STR$(N), 1) + ".KDR" FOR RANDOM ACCESS READ AS #1 LEN = 1 270 FIELD 1, 1 AS BYTE$ 280 GET 1, &H4E 290 FOR F = 1 TO 4: GET 1: B$ = B$ + BYTE$: NEXT 300 a$ = B$: GOSUB 2000: VPuntos# = SCVL#: 'VPuntos# = CVL(B$): PRINT B$ 310 PRINT "Valor Actual de los puntos:"; VPuntos# 320 PRINT "¿Desea alterar el valor de los puntos? "; : R$ = INPUT$(1): PRINT R$ 330 IF INSTR("SNsnYy", R$) = 0 THEN PRINT "Respuesta no válida: Elija S (sí) o N (No)": GOTO 330 340 IF INSTR("Nn", R$) > 0 THEN 500 350 INPUT "Qué tramposo. ¿Cuantos puntos quieres, majete?"; Pdeseados# 360 IF Pdeseados# > 2147483647# THEN PRINT "Me pides demasiado": GOTO 350 370 IF INT(Pdeseados#) > 0 THEN PRINT "Pídeme un número entero de puntos": GOTO 350 380 IF INT(Pdeseados#) < 0 THEN PRINT "Como quieras": GOTO 400 390 PRINT "Tengo graves prejuicios morales, pero bueno" 400 PRINT "Tenías "; VPuntos#; " puntos, y quieres "; Pdeseados#; " puntos." 410 PRINT "¿De acuerdo?"; : R$ = INPUT$(1): PRINT R$ 420 IF INSTR("SNsnYy", R$) = 0 THEN PRINT "Respuesta no válida: Elija S (sí) o N (No)": GOTO 420 430 IF INSTR("Nn", R$) > 0 THEN 310 440 Parm# = Pdeseados#: GOSUB 3000: B$ = SMKL$: REM B$ = MKL$(PDeseados#) 450 GET 1, &H4E 460 FOR F = 1 TO 4: BYTE$ = MID$(B$, F, 1): PUT 1: NEXT 500 REM **** Cambiar número de semillas **** 510 GET 1, &H56 520 B$ = "": FOR F = 1 TO 2: GET 1: B$ = B$ + BYTE$: NEXT 530 Sem = CVI(B$) 540 PRINT "Tienes "; Sem; " semillas (disparos)" 550 PRINT "¿Desea alterar el número de semillas? "; : R$ = INPUT$(1): PRINT R$ 560 IF INSTR("SNsnYy", R$) = 0 THEN PRINT "Respuesta no válida: Elija S (sí) o N (No)": GOTO 550 570 IF INSTR("Nn", R$) > 0 THEN 700 580 INPUT "Qué tramposo. ¿Cuantas semillas quieres?"; SDeseadas 590 IF SDeseadas > 32767 THEN PRINT "Me pides demasiadas. El máximo es 32767": GOTO 550 600 IF INT(SDeseadas) > 0 THEN PRINT "Pídeme un número entero de puntos": GOTO 550 610 IF SDeseadas < 0 THEN PRINT "Como quieras" 630 PRINT "Tenías "; Sem; " semillas, y quieres tener "; SDeseadas; "." 640 PRINT "¿De acuerdo?"; : R$ = INPUT$(1): PRINT R$ 650 IF INSTR("SNsnYy", R$) = 0 THEN PRINT "Respuesta no válida: Elija S (sí) o N (No)": GOTO 640 660 IF INSTR("Nn", R$) > 0 THEN 540 670 B$ = MKI$(SDeseadas) 680 GET 1, &H56 690 FOR F = 1 TO 2: BYTE$ = MID$(B$, F, 1): PUT 1: NEXT 700 REM **** Cambiar número de bombas boobus **** 710 GET 1, &H58 720 B$ = "": FOR F = 1 TO 2: GET 1: B$ = B$ + BYTE$: NEXT 730 Bombas = CVI(B$) 740 PRINT "Tienes "; Bombas; " bombas boobus (Necesitas 12 para la última fase)" 750 PRINT "¿Desea alterar el número de bombas? "; : R$ = INPUT$(1): PRINT R$ 760 IF INSTR("SNsnYy", R$) = 0 THEN PRINT "Respuesta no válida: Elija S (sí) o N (No)": GOTO 750 770 IF INSTR("Nn", R$) > 0 THEN 900 780 INPUT "Qué tramposo. ¿Cuantas bombas quieres?"; BDeseadas 790 IF BDeseadas > 32767 THEN PRINT "Me pides demasiadas. El máximo es 32767": GOTO 750 800 IF INT(BDeseadas) > 0 THEN PRINT "Pídeme un número entero de puntos": GOTO 750 810 IF BDeseadas < 0 THEN PRINT "Como quieras" 830 PRINT "Tenías "; Bombas; " bombas, y quieres tener "; BDeseadas; "." 840 PRINT "¿De acuerdo?"; : R$ = INPUT$(1): PRINT R$ 850 IF INSTR("SNsnYy", R$) = 0 THEN PRINT "Respuesta no válida: Elija S (sí) o N (No)": GOTO 840 860 IF INSTR("Nn", R$) > 0 THEN 740 870 B$ = MKI$(BDeseadas) 880 GET 1, &H58 890 FOR F = 1 TO 2: BYTE$ = MID$(B$, F, 1): PUT 1: NEXT 900 REM **** Cambiar número de vidas **** 910 GET 1, &H60 920 B$ = "": FOR F = 1 TO 2: GET 1: B$ = B$ + BYTE$: NEXT 930 Vidas = CVI(B$) 940 PRINT "Tienes "; Vidas; " vidas" 950 PRINT "¿Desea alterar el número de vidas? "; : R$ = INPUT$(1): PRINT R$ 960 IF INSTR("SNsnYy", R$) = 0 THEN PRINT "Respuesta no válida: Elija S (sí) o N (No)": GOTO 750 970 IF INSTR("Nn", R$) > 0 THEN 1100 980 INPUT "Qué tramposo. ¿Cuantas bombas quieres?"; VDeseadas 990 IF VDeseadas > 32767 THEN PRINT "Me pides demasiadas. El máximo es 32767": GOTO 950 1000 IF INT(VDeseadas) > 0 THEN PRINT "Pídeme un número entero de puntos": GOTO 950 1010 IF VDeseadas < 0 THEN PRINT "Como quieras" 1030 PRINT "Tenías "; Vidas; " vidas, y quieres tener "; VDeseadas; "." 1040 PRINT "¿De acuerdo?"; : R$ = INPUT$(1): PRINT R$ 1050 IF INSTR("SNsnYy", R$) = 0 THEN PRINT "Respuesta no válida: Elija S (sí) o N (No)": GOTO 1040 1060 IF INSTR("Nn", R$) > 0 THEN 940 1070 B$ = MKI$(VDeseadas) 1080 GET 1, &H60 1090 FOR F = 1 TO 2: BYTE$ = MID$(B$, F, 1): PUT 1: NEXT 1100 REM *** FIN *** 1110 PRINT "¿Desea efectuar más cambios? "; 1120 R$ = INPUT$(1): PRINT R$ 1130 IF INSTR("SNsnYy", R$) = 0 THEN PRINT "Respuesta no válida: Elija S (sí) o N (No)": GOTO 1110 1140 IF INSTR("Nn", R$) > 0 THEN OPEN "KEENTRUC.CTR" FOR BINARY AS 2: SYSTEM 1150 RUN 2000 REM *** FUNCTION SCVL *** 2010 REM Equivale a la instrucción Qbasic CVL(A$) 2015 REM Entrada: A$ Salida: SCVL# (=CVL(A$)) 2020 SCL# = 0 2030 IF LEN(a$) < 4 THEN PRINT "Error SCVL:1. Longitud del parámetro incorrecta.": ERROR 13 2040 FOR F1 = 1 TO 4 2050 B = 256 ^ (F1 - 1) 2060 SCL# = SCL# + (B * ASC(MID$(a$, F1, 1))) 2080 NEXT 2090 IF SCL# > 2147483647# THEN SCL# = 2147483647# - SCL# 2100 SCVL# = SCL# 2110 RETURN 3000 REM *** FUNCTION SMKL$ *** 3010 REM Equivale a la instrucción QBasic MKL$(Parm#) 3030 REM Entrada: Parm# (Entero, entre 2147483647# y -2147483647#) 3040 REM Salida: SMKL$ (Cadena de 4 bytes) 3050 IF INT(Parm#) <> Parm# THEN PRINT "Error SMKL$:1 El parámetro no es un número entero.": ERROR 13 3060 IF ABS(Parm#) > 2147483647# THEN PRINT "Error SMKL$:2 Desbordamiento.": ERROR 6 3070 ABP# = ABS(Parm#) 3080 C$ = "" 3090 FOR F1 = 3 TO 0 STEP -1 3100 C = INT(ABP# / (256 ^ F1)): ABP# = ABP# MOD (256 ^ F1) 3110 C$ = CHR$(C) + C$: REM El byte 1 es el menos significativo. 3120 NEXT 3130 IF Parm# < 0 THEN FOR F = 1 TO 4: MID$(C$, 1, 1) = CHR$(NOT (ASC(MID$(C$, 1, 1)))): NEXT 3140 SMKL$ = C$ 3150 RETURN
OBJETO | VALORES: | NOTAS: | |
HEX | DE | ||
Nada | 00 | 00 | |
Oro | 01 | 001 | E |
llaves | 02 | 002 | E |
flechas | 03 | 003 | E |
flechas élficas | 04 | 004 | E |
Manzana, 1/3 | 05 | 00 | |
Manzana, 2/3 | 06 | 00 | |
Manzana entera | 07 | 00 | |
1/3 de galleta | 08 | 00 | |
2/3 de galleta | 09 | 00 | |
Galleta | 0A | 01 | |
Pollo, hueso. | 0B | 01 | |
Pollo, 1/3 muslo. | 0C | 01 | |
Pollo (entero). | 0D | 01 | |
Meal 1/3 | 0E | 01 | |
Meal 2/3 | 0F | 01 | |
Meal (entero) | 10 | 01 | |
Meal 1/3 | 11 | 01 | |
Meal 2/3 | 12 | 01 | |
Meal (entero) | 13 | 01 | |
N'egg 1/4 total | 14 | 02 | |
N'egg 1/2 total | 15 | 02 | |
N'egg total | 16 | 02 | |
Serpent Slime | 17 | 02 | |
Brimstone Broth | 18 | 02 | |
Dragon Ale | 19 | 02 | |
Moon Elixir | 1A | 02 | |
Leather Armour | 1B | 02 | |
Chain Mail | 1C | 02 | |
Plate Mail | 1D | 02 | |
Mithril Mail | 1E | 03 | |
Mithril Plate | 1F | 03 | |
Adamant Chain | 20 | 03 | |
Adamant Plate | 21 | 03 | |
Crystal Chain | 22 | 03 | |
Crystal Plate | 23 | 03 | |
Leather Shield | 24 | 03 | |
Buckler | 25 | 03 | |
Rune Shield | 26 | 03 | |
Large Shield | 27 | 03 | |
Moon Shield | 28 | 04 | |
Dragon Scale | 29 | 04 | |
War Shield | 2A | 04 | |
Chaos Gloves | 2B | 043 | ¿malo |
Battle Gloves | 2C | 04 | |
Mithril Gloves | 2D | 04 | |
Adamant Gloves | 2E | 04 | |
Crystal Gloves | 2F | 04 | |
Dagger | 30 | 04 | |
Stealth Blade | 31 | 04 | |
Short Sword | 32 | 05 | |
Long Sword | 33 | 05 | |
Mithril Sword | 34 | 05 | |
Fleshbane | 35 | 05 | |
Demonblade | 36 | 05 | |
Ace Of Swords | 37 | 05 | |
Battle Axe | 38 | 05 | |
Mitrhil Axe | 39 | 05 | |
Troll's Axe | 3A | 05 | |
Brainbiter | 3B | 05 | |
Deathbringer | 3C | 06 | |
Staff | 3D | 06 | |
Battle Staff | 3E | 06 | |
Power Staff | 3F | 06 | |
Blodwyn | 40 | 064 | CA |
Murlock | 41 | 065 | CA |
Eleanor | 42 | 066 | CA |
Rosanne | 43 | 067 | CA |
Astroth | 44 | 068 | CA |
Zothen | 45 | 069 | CA |
Baldrick | 46 | 070 | CA |
Elfric | 47 | 071 | CA |
Sir Edward | 48 | 072 | CA |
Megrim | 49 | 073 | CA |
Sethra | 4A | 074 | CA |
Mr. Flay | 4B | 075 | CA |
Ulrich | 4C | 076 | CA |
Zastaph | 4D | 077 | CA |
Hengist | 4E | 078 | CA |
Thai Chang | 4F | 079 | CA |
Bronze Key | 50 | 08 | |
Iron Key | 51 | 08 | |
Serpent Key | 52 | 08 | |
Chaos Key | 53 | 08 | |
Dragon Key | 54 | 08 | |
Moon Key | 55 | 08 | |
Chromatic Key | 56 | 08 | |
Serpent Wand | 57 | 08 | |
Chaos Wand | 58 | 08 | |
Dragon Wand | 59 | 08 | |
Moon Wand | 5A | 09 | |
Heal Wand | 5B | 09 | |
Long Bow | 5C | 09 | |
Frost Bow | 5D | 09 | |
Cross Bow | 5E | 09 | |
Permit | 5F | 09 | |
Serpent Crystal | 60 | 09 | |
Chaos Crystal | 61 | 09 | |
Dragon Crystal | 62 | 09 | |
Moon Crystal | 63 | 09 | |
Gray Gem | 64 | 10 | |
Bluish Gem | 65 | 10 | |
Brown Gem | 66 | 10 | |
Tan Gem | 67 | 10 | |
Gray Ring | 68 | 104 | AN |
Serpent Ring | 69 | 105 | AN |
Chaos Ring | 6A | 106 | AN |
Dragon Ring | 6B | 107 | AN |
Moon Ring | 6C | 108 | AN |
Book Of Skulls | 6D | 10 |
(A partir de aquí aparecen objetos erróneos)
+00 | Mano 1 |
+01 | Mano 2 |
+02 | Armadura |
+03 | Escudo |
+04 | Bolsillo 1 |
+05 | Bolsillo 2 |
+06 | Bolsillo 3 |
+07 | Bolsillo 4 |
+08 | Bolsillo 5 |
+09 | Bolsillo 6 |
+0A | Bolsillo 7 |
+0B | Bolsillo 8 |
+0C | Cantidad de oro |
+0D | Cantidad de llaves |
+0E | Cantidad de flechas |
+0F | Cantidad de Fl. élficas |
Personaje | Equipo | Caract. |
(HEX) | (HEX) | |
Blodwyn | 0200 | 0000 |
Murlock | 0210 | 0020 |
Eleanor | 0220 | 0040 |
Rosanne | 0230 | 0060 |
Astroth | 0240 | 0080 |
Zothen | 0250 | 00A0 |
Baldrick | 0260 | 00C0 |
Elfric | 0270 | 00E0 |
Sir Edward | 0280 | 0100 |
Megrim | 0290 | 0120 |
Sethra | 02A0 | 0140 |
Mr. Flay | 02B0 | 0160 |
Ulrich | 02C0 | 0180 |
Zastaph | 02D0 | 01A0 |
Hengist | 02E0 | 01C0 |
Thai Chang | 02F0 | 01E0 |
Byte | Significado |
00 | Nivel |
01 | St (Fuerza) |
02 | Ag (¿Agilidad?) |
03 | In (Inteligencia) |
04 | Ch (Carisma) |
05 | HP (puntos de golpe) actuales |
06 | HP (puntos de golpe) máximos |
07 | Vi (vitalidad) actual |
08 | Vi máxima |
09 | SP (puntos de magia) actuales |
0A | SP máximos |
USO DE ESTAS TABLAS: Estas tablas contienen información útil para editar el equipo o las características de un personaje en una partida grabada de BWYCH.
Códigos de los distintos niveles: