***************************************************************************** Amoric (v1.5): Documentación [3/4] El primer emulador de ORIC-1/Atmos 48K para Amiga © Copyright 1995-96 Jean-François Fabre Traducción al español de Dámaso D. Estévez ***************************************************************************** [Continuación...] La frecuencia de muestreo le será pedida por el programa, mostrando a continuación el programa información sobre el fichero, como su nombre y longitud, y procediendo a leer los datos. Debido a una diferencia en la temporización entre el Oric-1 y el Atmos, antes de leer los datos el programa salta algunos bytes en el fichero (tiempo en el que el Atmos muestra 'Saving... GAME OF THE DEATH C', mientras que el Oric-1 muestra simplemente el mensaje 'Saving...'). Si se produce un error, intente la transferencia de la forma siguiente: > transf fichero.lo8 GAME.DAT wretwr donde 'wretwr' puede ser 'eiruti' o 'uerhgiugh' (o incluso 'nbmnmbn'), ya que el test es realizado únicamente sobre el nº de argumentos suministrados al programa. En este caso, el programa no saltará bytes del fichero: por contra se debería (normalmente) producir un error en el primer byte... como me es difícil motivar a Boris para que corrija el programa, tome este error como una prestación adicional ;-). 55 U Error found. New value: <- Aquí debe introducir el valor superior en hexadecimal (en este caso 55) Si se produce otro error, hay dos posibles razones: 1.- Su magnetofón o reproductor de cintas de cassette está RIP. 2.- La frecuencia de muestreo no es suficientemente alta. 3.- El volumen no está lo suficientemente alto. 4.- El programa no utiliza el mismo método para leer la cinta de cassette que el 6522, pues éste es un componente analógico que funciona por impulsos (frentes ascendientes, descendientes) y aquí trabajamos con datos numéricos. 5.- Simplemente que la unidad de cassette es para ZX-Spectrum. Bueno, en realidad son cinco posibilidades, pero no es el fin del mundo. Si consigue cargar cintas en el Oric (siempre que su gato no se haya paseado por encima del teclado) pero no con este emulador, use un programa copiador con el Oric y envie directamente la salida de éste al digitalizador (el programa maneja perfectamente la señal directa del Oric). Si aún así no funciona o no quiere desplazar su Oric, grabe la señal en una nueva cinta de cassette: esto mejorará la señal. El chip 6522 del Oric es muy bueno leyendo las cintas y corrigiendo errores eventuales: basta tomar las rutinas de carga de la ROM del Oric como referencia... Si el juego tiene varias partes, guárdelas separadamente, y luego únalas (cat o join)... a veces, necesitará introducir algunos bytes 0x16 entre ellas (no me pregunte el porqué) y ¡buena suerte!... yo lo he conseguido, entonces ¿porqué no usted?. Para cuestiones técnicas, no dude en contactar conmigo. PS: Le proporciono el código fuente en C de 'transf'. Debe compilarlo sin modificaciones bajo estaciones UNIX y pC, si se encuentra con que le es más fácil digitalizar sonido en esas plataformas (el programa ha sido desarrollado bajo UNIX y utilizado en PC). De todas formas, puede obtener la mayor parte de los juegos existentes en su página Web. IMPORTANTE: Si Amoric rechaza cargar algún juego, es debido a que las marcas de sincronía de la "cinta virtual" son demasiado pequeñas: ¡¡¡es culpa mía!!! He probado juegos conseguidos de esta página Web y me he encontrado con el mismo problema. Para remediarlo, emplee el programa TapeInfo que se proporciona con el paquete. ************ UTILIZANDO SOX ********** Algunos usuarios de Amiga me han informado de problemas cuando transfieren sus cintas de cassette porque no pueden convertir el formato de Amiga estándar IFF 8SVX utilizado habitualmente por los digitalizadores al formato RAW .lo8 (8 bits sin signo) necesitado por el programa "Transf". La solución es utilizar el maravilloso conversor 'SOX', que puede encontrar en Aminet: el comando debe tener un aspecto similar al del ejemplo si dispone de una digitalización llamada JUEGO.8SVX... sox -u -b JUEGO.8SVX JUEGO.raw o sox -u -b -t raw JUEGO.8SVX JUEGO(.lo8) donde, u indica que sea sin signo (0->255), b indica que sea bytes (8 bits), t indica el tipo de conversión. El tipo 'raw' es el más sencillo: sin cabecera. Utilice entonces "Transf" sobre el sonido digitalizado en formato raw. Debería funcionar. 13. Otras plataformas ~~~~~~~~~~~~~~~~~ ***** VERSION UNIX ***** Como ya dije con anterioridad, mi primer intento de emulación del Oric fue bajo Unix. Distribuí por Internet una versión que emulaba los gráficos de manera imprecisa y limitada, contactando con Fabrice Frances inmediata- mente, que había escrito un emulador para PC (Euphoric), el cual me presentó a Olivier Balet que ha mejorado mi versión Unix optimizando los gráficos (no la he visto funcionar pues se basa en prestaciones no presentes en todos los Unix). Junto a Fabrice intenta lanzar una buena versión Unix (¡traidores! :D; yo también trabajo en una versión OSF/Motif). ***** VERSION PC ***** Si tiene amigos usuarios de un PC y si desean un buen emulador, deberían probar Euphoric ('Euforia') de Fabrice Frances. Fabrice es un programador asombroso y su emulador es realmente una joya en la jungla del soft para PC. Puede obtenerlo en ftp.ensica.fr o aquí. A menudo hemos intercambiado ideas y sugerencias con Fabrice. Si es usted un desafortunado usuario de pC, Euphoric (versión 0.9) debería subirle la moral: es rápido, emula el sonido, el Oric 1 y el Atmos, el Telestrat (!), los microdiscos de Oric, Jasmin, los discos virtuales, RS232 (Unix...). La compatibilidad con el Oric es casi total y prácticamente no se le echa nada en falta (los joysticks). ***** VERSION ATARI-ST ***** Olivier Galibert consiguió mi emulador para UNIX y me envió un mensaje por correo electrónico (e-mail) para informarme de un error y para comunicarme que iba a realizar una versión para el Atari ST (680x0). Me ha dado sugerencias muy buenas que me han permitido mejorar la emulación y su velocidad. Espero que su excelente conocimiento del procesador 680x0 le permita terminar su emulador dentro de poco, incluso aunque el Atari haya caido un poco en el olvido (recordad, el Amiga...). ***** VERSION ORIC ***** Muy fiel; ha sida desarrollada por Oric Systems (Reino Unido) en 1983. ***** VERSION ZX-81 ***** Lo siento, pero no parece existir versión para esta plataforma. -------------------------------=====--------------------------- 14. Cambios desde la última versión ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Amoric ya se encuentra en la versión 1.5: se han corregido errores y nuevas prestaciones han visto la luz. * Velocidad ajustable del 1% al 999% (limitado por la potencia del equipo, naturalmente). * Soporte local. * Emulación de CPU ligeramente más rápida (teóricamente). * Método de visualización amigable con el sistema (WritePixel) añadido para compatibilidad con las diferentes tarjetas gráficas. * Mejora de la emulación 6522 (Manic Miner y Scuba Dive funcionan: ¡al fin! :-)) * Refresco de vídeo más rápido (modo 'planar/de bitplanos'). * Refresco completo ('total') al fin correcto. * Ahora captura de pantalla (a fichero IFF-ILBM) correcto en modo monocromo. * Error de refresco al cambiar del modo 'TEXT' al 'HIRES' eliminado. * Se ha añadido una opción para activar/desactivar la redefinición del carácter espacio (en versiones anteriores estaba desconectada). -------------------------------=====--------------------------- 15. Errores y problemas ~~~~~~~~~~~~~~~~~~~ Los errores más importantes son debidos a las dificultades de emular correctamente al Oric original. He tenido problemas para que algunos juegos funcionasen. De hecho, algunos de estos errores detectados me han enseñado mucho sobre la estructura interna del Oric y me han permitido mejorar enormemente la emulación: personalmente, considero absolutamente imprescindible probar al menos 10 o 20 juegos cuando se programa un emulador (y digo juegos, porque es la principal utilidad que le encuentro a una emulación de un ordenador de 8 bits). * En primer lugar, no he implementado las instrucciones no documentadas (y hay un buen montón) como tales, sino que las emulo en forma de instrucciones NOP con saltos de contador de instrucciones. Al contrario que los programadores de Apple II y C64 se emplean poco en el Oric, y así por desgracia es frecuente por ejemplo el error cometido por los programadores con la instrucción BRK, que al retornar al programa deja el contador de instrucciones (PC) incrementado en dos unidades y no una como debiera. Si no me cree, pruebe esto en su Oric: DOKE #400,#6000 -> BRK -> RTS POKE #402,#4C -> JMP $FAE1 (ZAP) DOKE #403,#E1FA Si ejecuta CALL #400 oirá un ZAP, que querrá decir que la instrucción RTS ha sido saltada sin ser ejecutada. Nota: En el C64 y el Apple II, las instrucciones no documentadas son encontradas muy convenientes por algunos programadores alocados y usadas sin ningún pudor. Actualmente, Amoric maneja las instrucciones no documentadas avanzando el contador de instrucciones (PC) el mismo nº de bytes que lo haría un 6502 real, pero sin realizar ninguna operación (utilizando instrucciones NOP). Amoric sólo falla (lo que le obliga a terminar y a salir a usted del emulador) si se encuentra alguna de las instrucciones que originalmente en un Oric harían que se bloquease (como las de la familia $x2), proponiéndole al usuario un reinicio total (como si apagase y encendiese su Oric) o salir del emulador. * En segundo lugar, no he implementado un sistema de refresco de pantalla de manera demasiado natural por razones de velocidad. Justamente por ello algunos errores pueden producirse cuando se produce un cambio 'HIRES'/'TEXT', o si se usa, como en algunos juegos, el modo de vídeo mixto 'Half-TEXT/Half-HIRES' (DOGGY, FIRE FLASH, STYX...) pues este modo es bastante difícil de reproducir con mi técnica de refresco actual. Estos modos no son emulados, pero ya he prometido en la documentación de la versión 0.8 que lo serían en la próxima versión (supongo que es ahora justamente cuando se percata de que he mentido ;-). Aún así, prometo que haré lo posible para implementarlo: mis últimas pruebas han sido infructuosas... en este momento, podría incorporarlo pero supondría ralentizar la emulación considerablemente, así que busco alguna solución ingeniosa para solucionarlo. Un simpático usuario me ha sugerido un truquillo, e intentaré probarlo. * Por último, el chip VIA 6522, utilizado para gestionar las entradas y salidas (teclado, sonido) y las interrupciones del reloj, es bastante complejo de emular. Mejoraré esta parte del código sin cesar, ya que siempre surjen pequeños problemas. -------------------------------=====--------------------------- 16. Juegos probados que funcionan correctamente con Amoric ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ He aquí una lista, que no pretende ser exhaustiva, de juegos que funcionan sobre AmOric: la lista se incrementa de una versión del programa a la siguiente. Algunos de estos juegos deben ser parcheados para funcionar pues necesitan una emulación demasiado precisa (rutinas de cinta...): están en negrita y precedidos por un asterisco *. 3D-FONGUS (Loriciels) 3D-MUNCH (Loriciels) L'Aigle d'Or (Loriciels) Andromeda et Persepolus Le Spectre d'Anubis(Eric Chahi) Archerons'S Rage Arena Baston (Sprites) Bering (Dialog) Bombyx (Dialog) James Bond Part 1 (Severn) Breakout (Tansoft) Categ-Oric (No Man's Land) Centipede (PSS) Chess I y II (Tansoft) Chopper (Severn) Corsaire (Hebdogiciel) Crocky (Loriciels) Damsel in Distress (IJK) DEFENCE FORCE (Tansoft) Le Diamant de l'île maudite (Loriciels) Don Juan et Dragueurs (Micropuce) Don't press 'Q' (Andrew Moore) Dracula's Revenge (PSS) Driver (Dialog) Elektro Storm (PSS) Esquive (Oric France) NO EMPLEE LA VERSION DE LA PAGINA Frelon (Loriciels) <=== WEB 'ORIC': ¡¡¡ESTA CORRUPTA!!! Frogger GALAXION (Loriciels) GASTRONON (Loriciels) Le Manoir du Docteur Genius (Loriciels) Ghost Gobbler (IJK) GHOSTMAN (Infogrames) GRAPH (Loriciels) Gravitor (Severn) HADESASM HADESMON HARRIER ATTACK (Durell) The Hobbit (Melbourne) Honey Kong (Sprites) Hopper (PSS) Hu*Bert (Loriciels) HunchBack (Ocean) Hyper Olympics ('Jueguecillo' mío de 1984) Insect Insanity INVADERS (IJK) L'Immonde Dr Kokus ('Jueguecillo' mío de 1986) Karate (Gazoline Software) KRILLYS LAND-ILL (Tansoft) Light Cycle (PSS) Lilla et Jacky (MicroPuce) LMPLUS LOCUS M-A-R-C (PSS) Macadam Bumper (ERE) Manic Miner <=== ¡AHORA FUNCIONA! :-) MISSION MR WIMPY (Ocean) Mushroom Mania Le Trident de Neptune (No Man's Land) Nibbler (Hebdogiciel) Nowotnik Adventure Orion (Loriciels) Panic (No Man's Land) Pastablasta (Arcadia) Pengo Playground 21 (IJK) Psychiatric (SPRITES) <=== ¡AHORA FUNCIONA! Tendre Poulet (Sprites) The Ultra (PSS) <=== ¡AHORA FUNCIONA! Probe 3 (IJK) Le Protector (Loriciels) Psychiatric (Ere) Lone Raider (Infogrames) Le rendez-vous de la terreur (Ere) Le retour du Dr Genius (Loriciels) Ratsplat (Tansoft) S.A.G.A (Ere) Scuba Dive (Durell) <=== ¡AHORA FUNCIONA! SKRAMBLE (Micropuce) Sorvivor (Loriciels) Spooky Mansion StarFighter (Severn) Starter 3D (No Man's Land) Strip 21 (Micropuce) Super Jeep (Loriciels) Two Gun Turtle Le secret du tombeau (Loriciels) Le tour du monde en 80 jours Them Triathlon (Ere) TrickShot (Ijk) Trouble in store TYRANN (Norsoft) Ultima Zone (Tansoft) WAYDOR WYX (Hebdogiciel) XENON 1 (IJK) XENON 3 (IJK) ZEBBIE (IJK) ZODIAC (IJK) Zoolympics (No Man's Land) Zorgon's Revenge (IJK) Los siguiente juegos pueden NO funcionar: Galaxians (Softek) M-A-R-C (PSS) Painter y por razones gráficas: Doggy (Loriciels) Fireflash (No Man's Land) Styx (No Man's Land), pero es jugable. Por favor, indíqueme los problemas que tenga con software no mencionado aquí. [Continúa...]