domingo, 3 de enero de 2021

12/16KB VIDEOPAC+ GAMES

In order to better understand the paging of 12 and 16KB games with videopac + graphics, and to be able to include those games in my "Videopac micro-SD cart", I have reverse engineered one of these cartridges.

The following games fall into this group:


 - 55+ Neutro Star 

 - 58+ Air Battle 

 - 59+ Helicopter Rescue 

 - 60+ Trans American Rally


Any of those games can serve my purpose as they all use the same type of pagination.

In general they are rare games and they are expensive to acquire, so I have bought the most affordable of all which is the 55+ Neutron Star.

After following the ways with the multimeter I have reached the following diagram:

Basically, this cartridge works as follows:

- The A0-A9 and A11 address lines of the console are connected to the A0-A10 address lines of the ROM chips, resulting in 2K per bank as in standard paging games.
- Any write access to the external RAM (P14 = 0 and P16 = 0) in the range 0800h-0bffh causes the values ​​of D0..D2 of the data bus to be stored in the latch (IC2 in the diagram).
- When P10 = 0 the latch is activated and the stored bank number is selected.
- If P10 = 1 the latch is deactivated and the pull-up resistors select bank 111b.
In the schematic, D0 and D1 are connected to the A11 and A12 address lines of the ROM chips, while D2 is used to select the active chip.

The EPROM chips used in these cartridges are 8KB / 4KB, and are currently hard to find, so I have modified the schematic to allow a single 64KB EPROM to be used much easier to find and also cheaper.


Finally I leave here an image of how the PCB would look once routed.









JUEGOS 12/16KB VIDEOPAC+

Con objeto de entender mejor la paginacion de los juegos de 12 y 16KB con graficos videopac+, y poder incluir dichos juegos en mi cartucho "Videopac micro-SD cart", he realizado ingeniería inversa de uno de estos cartuchos. 
Los siguientes juegos entran dentro de este grupo: 
 - 55+ Neutro Star 
 - 58+ Air Battle 
 - 59+ Helicopter Rescue 
 - 60+ Trans American Rally

Cualquiera de dichos juegos puede servirme para mi propósito, ya que todos utilizan el mismo tipo de paginación.

En general son juegos raros y que son caros de adquirir, por lo que he comprado el más asequible de todos que es el 55+ Neutron Star.

Después de seguir las pistas con el polímetro he llegado al siguiente esquema:






Básicamente, este cartucho funciona de la siguiente manera:

- Las líneas de dirección A0-A9 y A11 de la consola están conectadas a las líneas de dirección A0-A10 de los chips ROM, lo que da como resultado 2K por banco como en los juegos con paginación estándar.  
- Cualquier acceso de escritura a la RAM externa (P14=0 y P16=0) en el rango 0800h-0bffh provoca que se almacenen los valores de D0..D2 del bus de datos en el latch (IC2 en el esquema). 
- Cuando P10 = 0 se activa el latch y se selecciona el número de banco almacenado.
- Si P10=1 el latch se desactiva y las resistencias de pull-up seleccionan el banco 111b.
En el esquema, D0 y D1 están conectados a las líneas de dirección A11 y A12 de los chips de ROM, mientras que D2 se utiliza para seleccionar el chip activo.

Los chips EPROM usados en estos cartuchos son de 8KB/4KB, y actualmente son difíciles de encontrar, por lo que he modificado el esquema para permitir usar una sola EPROM de 64KB mucho más sencilla de encontrar y también más barata.





Por último dejo aquí una imagen de como quedaría la placa una vez enrutada.

lunes, 26 de octubre de 2020

 

The Videopac µSD cart is a revolutionary cartridge allows the loading of Videopac/Magnavox Oddysey2 ROMs from a micro-SD card directly to the console.

 







Features:

·       Supports the Magnavox Oddysey2, Philips Videopac G7000, Videopac+ G7400, JOPAC and all compatible consoles

·       File selection with OLED display and/or ‘on screen’ game selector

·       Supports the following ROM types:

o   Standard P10/P11 games: 2K, 4K and 8K

o   XROM games: Game 31 (Musician) & Game 40 (4 In Row)

o   Videopac+ games: Game 55+ (12K), 58+, 59+ and 60+ (16K)

o   Soren Gust format: 12K

·       Serial transfer from PC for developers

·       Hexadecimal memory monitor for debugging

·       USB upgradable firmware

PREREQUISITES

The following items are required for a working system with the Videopac µSD cart:

1.       A Magnavox Oddysey2, Philips Videopac G7000, Videopac+ G7400, JOPAC etc. console

2.       The Videopac µSD cart itself

3.       A micro-SD card (not supplied)

4.       A copy of the “SD.ZIP” file containing the files for the Videopac µSD cart


 LAYOUT

The Videopac µSD cart connectors and elements are listed below:




1.       Backlit 1.3” OLED display

2.       Direction buttons

3.       Enter & ESC buttons

4.       LED’s for SD & RAM access

5.       Buzzer

6.       Arduino Mega pro 2560

7.       Serial port header

8.       USB connector for programming firmware

9.       RAM

10.   JTAG header to program the CPLD

11.   3.3V regulator

12.   Micro-SD Slot

13.   CPLD for pagination control



Manual de usuario 

User Manual Thanks to Dandore

Manual de usuário Obrigado a Pablo Vidarte

Flash & Serial comunications Utilities

starting pack to copy to your uSD

 

I would like to thank Rene Van Den Enden for his help. Especially in the development of native rom selection software.

CONTACT: wilcoavs at gmail dot com



 

El cartucho “Videopac uSD cart” es un revolucionario cartucho que permite cargar ROMs de Videopac/Magnavox Oddysey2 desde una tarjeta uSD directamente a la consola.

 







Características:

·       Funciona en las consolas Oddysey2, G7000, G7400, JOPAC y todas las consolas compatibles.

·       Selección de archivos desde el display OLED o mediante el “game selector” directamente desde la consola.

·       Soporta los siguientes tipos de ROMs

o   Juegos estándar de 2K, 4K, y 8K

o   Juegos “XROM”: Catucho 31 (Musician) y Cartucho 40 (4 en raya)

o   Juegos de Videopac+ de 12K y 16K: 55+ (12K), 58+, 59+ y 60+ (16K)

o   Formato de Soren Gust: 12K

o   Trasferencia serie para desarrolladores

o   Monitor hexadecimal para depuración

o   Firmware actualizable por USB

PRERREQUISITOS

Se requieren los siguientes elementos para funcionar con Videopac uSD cart:

1.       Una consola Magnavox Oddysey2, Philips Videopac G7000, Videopac+ G7400, JOPAC etc.

2.       Un Videopac µSD cart

3.       Una tarjeta micro-SD (no suministrada)

4.       Una copia del ZIP conteniendo los archivos y utilidades para manejar y configurar el Videopac µSD cart

Se requieren los siguientes elementos para funcionar con Videopac uSD cart:

1.       Una consola Magnavox Oddysey2, Philips Videopac G7000, Videopac+ G7400, JOPAC etc.

2.       Un Videopac µSD cart

3.       Una tarjeta micro-SD (no suministrada)

4.       Una copia del ZIP conteniendo los archivos y utilidades para manejar y configurar el Videopac µSD cart

DESCRIPCION DEL CARTUCHO

Seguidamente se listan los elementos y conectores del Videopac µSD cart.

1.       Display OLED de 1.3”

2.       Botones de dirección

3.       Botones Enter y Esc

4.       LEDs de indicación de acceso a SD y a RAM

5.       Buzzer

6.       Arduino Mega pro 2560

7.       Conector de puerto serie

8.       Conector USB para reprogramar el Arduino

9.       RAM para albergar el juego actualmente en uso

10.   Conector JTAG para programar la CPLD

11.   Regulador de tensión a 3,3V para alimentar la CPLD

12.   Slot para la tarjeta uSD

13.   CPLD para controlar las señales de paginado.


              Manual de usuario 

              User Manual Thanks to Dandore

              Manual de usuário Obrigado a Pablo Vidarte

CONTACT: wilcoavs at gmail dot com


Manual de usuario 

User Manual Thanks to Dandore

Manual de usuário Obrigado a Pablo Vidarte

Flash & Serial comunications Utilities

starting pack to copy to your uSD

 

I would like to thank Rene Van Den Enden for his help. Especially in the development of native rom selection software.



viernes, 7 de septiembre de 2018

VIDEOPAC MULTIROM CART version 1.2 (con display)

Aquí os dejo una nueva version de mi anterior cartucho para Videopac.
El sistema de microswitches era sencillo y barato, pero algo farragoso de usar, por lo que me he decidido a añadirle un display y 4 botones al cartucho para seleccionar los juegos.

A nivel de hardware, para controlar el display, vamos a utilizar un pequeño arduino Nano, basado en el microcontrolador ATM328

Imagen





ESQUEMA




INSTRUCCIONES DE USO DEL CARTUCHO

Nada mas arrancar la consola nos aparecerá en el display del cartucho una pantalla de bienvenida como la de la foto de cabecera y pasados unos segundos nos acabará apareciendo el nombre del primer juego de la lista contenido en el display.


En la primera línea del display veremos el número del juego que tenemos en pantalla en este momento y a su derecha la posición de los jumpers a que correspondería en la versión 1.1
En la segunda línea se mostrará el nombre del juego.


Utilizando los botones "Up" y "Down" podremos ir cambiando el juego que se visualiza en la pantalla OLED.

Una vez tenemos en pantalla el juego que deseamos seleccionar para jugar deberemos pulsar "Enter", y veremos aparecer un recuadro sobre el nombre del juego indicando que ese juego ha sido seleccionado.


Una cosa importante es que cada vez que seleccionemos un nuevo juego en el display, deberemos pulsar "RESET" en nuestra Videopac.

MODIFICANDO LOS NOMBRES DE LOS JUEGOS

Cuando lo recibimos, nuestro cartucho ya viene con todos los nombres que contiene la memoria flash, pero si alguna vez cambiamos el contenido de la memoria flash con un grabador, podríamos necesitar modificar los nombres del display.

Si queremos modificar el nombre del juego que tenemos en este momento en pantalla deberemos mantener pulsado el boton Enter durante unos segundos. Tras liberar el botón nos aparecerá una lista de 230 nombres pregrabados con todos los juegos conocidos de videopac ordenados por orden alfabético.


Con los botones "Up" y "Down" buscaremos el nombre del juego que queremos asignar a la posición en curso y pulsaremos "Enter".


NOMBRES CUSTOMIZADOS

Es de prever que nunca vamos a necesitar introducir un nombre personalizado, pero si por lo que sea necesitamos modificar un nombre a nuestro gusto, lo podremos hacer pulsando el boton "Down" cuando estamos situados sobre el primer nombre de la lista.
Nos aparecerá una pantalla como esta:


Pulsaremos unos segundos "Enter" para indicar al sistema que queremos modificar ese Custom Name

Utilizaremos las teclas "Up" y "Down" para seleccionar cada letra seguida de "Enter", y cuando terminemos pulsaremos prolongadamente la tecla "Enter" para aceptar.


Si ahora volvemos a pulsar "Enter" se seleccionará ese custom name para la posición actual.


GUARDANDO Y CARGANDO ROMSETS

Un ROMSet es un conjunto de 32 nombres. Nuestro cartucho puede almacenar hasta 4 ROMSets diferentes que pueden ser cargados posteriormente con facilidad.

Para acceder a la gestion de ROMSets pulsaremos el botón "ESC" desde la pantalla principal, tras lo que nos aparecerá el siguiente menú:

Desde esta pantalla podremos acceder a cargar o salvar el ROMSet actual en o desde cualquiera de los cuatro ROMSets disponibles.


MINIJUEGO INCLUIDO

Ademas de las opciones de Salvar y cargar, en el menu anterior aparece una tercera opción que nos permitirá acceder a un minijuego que se podrá jugar directamente en el display del cartucho.


RESTAURANDO LA CONFIGURACION DE FABRICA

Si por lo que sea, queremos recuperar la configuracion que venía cuando adquirimos nuestro cartucho podremos hacerlo pulsando simultáneamente las teclas "ESC"+"ENTER" en el momento aparezca la siguiente pantalla (tras haber pulsado el boton de reset del arduino).


Tras ello aparecerá el texto indicativo de que se ha restaurado la configuración.


MODIFICANDO EL ROMSET DE FABRICA

A partir de la versión 1.6 del Videopac ROMSet maker, podemos generar código automático que nos permitirá incluir nuestro propio romset en uno de las cuatro posiciones que permite almacenar el cartucho.

Esto mismo lo podemos hacer manualmente, pero hacerlo de esta manera automática nos permitirá ahorrar tiempo y además nos permitirá seleccionar el  cuales son los ROMSets que se restauraran cuando utilicemos la opcion de restablecer los valores de fábrica.

El primer paso que tenemos que realizar es cargar el proyecto que contenga nuestro ROMset en el Videopac ROMSet Maker.


Una vez cargado el ROMSet pulsaremos el botón "Code", tras lo que nos aparecerá una ventana como la siguiente.


Dicho cuadro de dialogo nos permitirá seleccionar la posición donde se guardará el ROMset y el nombre que le daremos.
Una vez pulsemos OK se generará un archivo ".h" con el mismo nombre que hayamos seleccionado en ROMSetName.


Repitiendo este proceso podremos generar hasta 4 archivos .h correspondientes a cada uno de las posiciones disponibles en nuestro cartucho.

Dichos archivos deberemos copiarlo a la carpeta donde tengamos descargado el programa del arduino y los renombraremos con los nombres "ROMSET0.H", .... "ROMSET3.H", sobreescribiendo los existentes si es necesario. 



Posteriormente cargaremos el programa desde el IDE de Arduino y lo transferiremos al arduino del cartucho. 

Finalmente, resetearemos y restableceremos la configuracion de fábrica, tal y como se indica más arriba.

VIDEOPAC MULTIROM CART version 1.1


As part of a learning process about the Phillips Videopac G7000 console, I have designed a MultiROM cart handled with microswitches.

Imagen

I have made the cart able to be placed in a standard case of a old original cartridge.

Perhaps you have to make a little modification in both sides.

Imagen

Maximum size of a videopac game is 12KB. Memory is organized in 4KB pages but the first KB is allways internal ROM, and then only 3KB is available to use.

To reduce the complexity of the cartridge I have divided it in block of 16KB. Due to it, there are room for 32 games in each cartridge.

SCHEMATICS





viernes, 7 de julio de 2017

PROJECT DOUBLE CLON ZX80/ZX81 

Reading the works of Grant Searle, I have decided to start with the project to build a full computer to understand in depth his functionality. What can be more proper that a ZX80 totally based in discrete chips? 

In my spare time, I have started to work on it and you can find the results in the following lines.

I have copyied the schematics from the original zx80, and have made some modifications on it.

- I have added the extra circuitery to generate /NMI signal (Grant Searle Schematics), making possible to have two machines in one, by selecting it through a switch.
- Original 1K RAM in two chips have been replaced by one SRAM chip of  32KB.
- Original 4K ROM have been replaced by a EEPROM of 32KB. It necesary to store both ROMs (ZX80/ZX81) and it is cheaper than other smaller EPROMs.
-  RF modulator have been removed and replaced by a circuit to generate the standard back porch, missing in the original ZX80 PAL signal.


Imagen 

The final result is nor a exact copy of the original as the case of Grant, but the board match accurately in the original case, and I very happy with the result.

TECHNICAL & ASSEMBLY INFORMATION

Below you can find the necesary information to build your own zx80. I think the most funny way to obtain your clon is to do it from zero, but if you wanna a clon and need the PCB or you have not enough knowledge or experience to assembly it, I have some spare PCBs and componentes, and I can sell them or assembly the clon for you. Please feel free to contact me and I'm sure we can reach an agreenment. ;)

Current version: 1.1



 







JUMPER POSITION

JP1: RAMOE, Not relevant but must be present in one position
JP2:
              1-2 - Inverse Video
              2-3 - Standard Video
S2: ZX80/81 Mode selection (If you use external selection from the expansion board this jumper have to be removed)
              1-2 - ZX81 mode
              2-3 - ZX80 mode.

S4: Function of the Pin23B in the expansion bus. 
In original ZX80 pin 23B of the expansion bus is spare, but in a ZX81 PIN23B is use as /ROMCS signal.
If you want to use external zx81 mode selection form the expansion board you have to use position 1-2. In this case (in zx81 mode) cards replacing the internal ROM will not works.
If you prefer to use this kind of cards, you have to wire the zx81 selector (S2) directly to an accesible switch and set S4 in 2-3 position (remember to remove JP1 in the expansion board)
              1-2 - ZX81/ZX80 mode selection in PIN 23B
              2-3 - /ROMOE in PIN 23B

Back porch Grant Searle solution:

              JP3 = 2-3
              JP5 = OFF
              JP6 = 1-2

Back porch generation José Leandro solution:
              Adjust image with R37 & R33
              JP3 = 1-2
              JP5 = ON
              JP6 = 2-3

Without Backporch generation (origina ZX80 video)
              JP3 = 1-2
              JP5 = OFF
              JP6 = 1-2

EXPANSION BOARD

Imagen 

This board has double functionality, first leaves enough room to connect zx81 cards  without trip with the video connector, and by other hand adds some extra functionality to the main board.

Layout add-on
Eagle Files
GERBER files
Schematics in PDF format




Expansion board let you to supply power to the computer with a miniUSB charger. If you plan to use external cards using 9V you will must to connect the computer to a 9V PS through the standard conector.
If you use the miniUSB supply, you could use the ON/OFF switch present in the board (S1) to turn on the computer.
S2 is a reset button, and it will works in any case.
JP7 Lets you to select ZX80/81 mode from the board if the position of the main jumper S4 is 1-2 and JP1 in the expansion board is ON.

JP1 Lets you aisle pin23B in the computer from the JP7 selector. It must be OFF if computer jumper S4 is 2-3.

Clon working together with the ZXBlast

CONTACT: wilcoavs at gmail dot com


Update 01/02/2020.
Fix to resolve an incompatibility with some 74LS00s who inverts the screen. It is necessary to insert a 47K resistor between pin 1 and pin 14 of IC 11.

Update 17/02/2021 (many thanks to Augusto Baffa)
Quoted Augusto Baffa:
"My signal clock from IC18 PIN 9 was about (0-3v) and the High Pass Filter created by R25 and C11 was about (0-1v). It works on IC16 PIN 9 to generate the pulse that loads S/L on IC9 PIN 1 but was not working to load the latch'd on normal/inverse circuit 'cos IC11 pin 3 was always high.

So, after some testing I found that it's necessary to use another high pass filter to feed IC11 PIN2. I'm using a 100pF capacitor and a 3k6 resistor. After that it works fine. 



there is another item that could be improved. I've tested the Ear/cassete interface and it's producing a very low signal to IC10 PIN2.
 I analyzed the circuit on proteus and compared with original zx81 schematics and get the following:

Blue signal (it's dark... sorry)  is the signal produced by the original Searle's version. The red one is my propose in order to use the same PCB holes. and the green is the signal produced by the original zx81 circuit."