Gamen met 1kb flash en 64 bytes ram

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • verleemen
  • Registratie: Augustus 2007
  • Niet online
(overleden)
Nou heb ik een paar weken geleden nog een blog geschreven over oa de Gamebuino, een game handheld die als processor de van arduino bekende atmel328 processor en een 5110 lcd schermpje heeft waar maar 2KB ram in zit. Hiero


Nou ja, moet kunnen, de NES had ook maar 2KB ram.

Kom ik in mijn zoektochten plotseling dit tegen..




Het hele ding draait op een Attiny13A, een 8 bit chip op 1.2khz met 1KB flash en 64 bytes ram (nee dat is geen tiepfout)
En niet alleen draait daar die game op maar dat chipje stuurt ook nog eens het OLED schermpje aan.
Kan iemand me uitleggen hoe dat in godsnaam mogelijk is? Zelfs een ZX81 is een monstercomputer vergeleken met dat ding.

[ Voor 8% gewijzigd door verleemen op 29-12-2017 23:14 ]

The freedom of saying E=MC3


Acties:
  • 0 Henk 'm!

  • TommyboyNL
  • Registratie: Januari 2006
  • Niet online
verleemen schreef op vrijdag 29 december 2017 @ 23:05:
Kan iemand me uitleggen hoe dat in godsnaam mogelijk is?
De source code staat nota bene gelinkt onder de youtube video die je zelf geplaatst hebt... Hoe veel meer uitleg wil je hebben?
https://github.com/kas-shaman/ssd1306_tiny

Acties:
  • 0 Henk 'm!

  • verleemen
  • Registratie: Augustus 2007
  • Niet online
(overleden)
TommyboyNL schreef op vrijdag 29 december 2017 @ 23:36:
[...]

De source code staat nota bene gelinkt onder de youtube video die je zelf geplaatst hebt... Hoe veel meer uitleg wil je hebben?
https://github.com/kas-shaman/ssd1306_tiny
Nou, omdat ik geen programmeur ben?
Ik leer wel de hele tijd bij natuurlijk, ik weet bv dat zon scherm 8kb aan framebuffer nodig heeft wat zelfs op de 328 niet kan en dus streamen ze zo snel scanlines achter mekaar dat je luie oog niet merkt dat er maar en paar pixels teglijk worden gebufferd. Maar dat gebeurt dus in 2048 bytes.

Hier loopt een game in 64 bytes, das 32 keer minder, vind ik wonderbaarlijk. T is ook de enige op heel joetoep die dat voor elkaar gekregen heeft.

The freedom of saying E=MC3


Acties:
  • +1 Henk 'm!

  • TommyboyNL
  • Registratie: Januari 2006
  • Niet online
Het schermpje zelf heeft al een framebuffer, je hoeft dus alleen de wijzigingen daarin weg te schrijven. Dat kost je dus al geen RAM. Verder zijn de spelletjes niet heel stateful, ik verwacht dat je de complete state in minder dan 5 bytes kwijt kan (score, positie van autootje, positie van obstakels, positie van belijning). Op die manier blijven er een ruime 50 bytes over voor het schuiven van data naar het scherm, het bijhouden van een aantal counters, en het uitlezen van de knop.

Acties:
  • 0 Henk 'm!

  • hcQd
  • Registratie: September 2009
  • Laatst online: 10:00
Een VCS 2600 had 4K ROM cardridges en 128 byte RAM, en daar zijn ook zat spellen voor geschreven. Oh, en die Attiny draait niet op 1,2kHz maar 20Mhz.

Acties:
  • 0 Henk 'm!

  • TommyboyNL
  • Registratie: Januari 2006
  • Niet online
hcQd schreef op zaterdag 30 december 2017 @ 00:03:
Oh, en die Attiny draait niet op 1,2kHz maar 20Mhz.
Jullie hebben het beiden fout. Deze ATtiny draait op 1MHz.

Acties:
  • 0 Henk 'm!

  • verleemen
  • Registratie: Augustus 2007
  • Niet online
(overleden)
TommyboyNL schreef op vrijdag 29 december 2017 @ 23:53:
Het schermpje zelf heeft al een framebuffer, je hoeft dus alleen de wijzigingen daarin weg te schrijven. Dat kost je dus al geen RAM. Verder zijn de spelletjes niet heel stateful, ik verwacht dat je de complete state in minder dan 5 bytes kwijt kan (score, positie van autootje, positie van obstakels, positie van belijning). Op die manier blijven er een ruime 50 bytes over voor het schuiven van data naar het scherm, het bijhouden van een aantal counters, en het uitlezen van de knop.
Hmm, ik geloof dat je gelijk hebt
# ssd1306_tiny
4-Wire SPI library, that truly can handle oled/ssd1306 on attiny13a (1kb flash/64bytes mem) by using C++11 compile-time power.
De ssd1306 is een chip
128 x 64, Dot Matrix OLED/PLED
Segment/Common Driver with Controller

CMOS

SSD1306 is a single-chip CMOS OLED/PLED driver with controller for organic / polymer light emitting diode dot-matrix graphic display system. It consists of 128 segments and 64 commons. This IC is designed for Common Cathode type OLED panel.

The SSD1306 embeds with contrast control, display RAM and oscillator, which reduces the number of external components and power consumption. It has 256-step brightness control. Data/Commands are sent from general MCU through the hardware selectable 6800/8000 series compatible Parallel Interface, I2C interface or Serial Peripheral Interface. It is suitable for many compact portable applications, such as mobile phone sub-display, MP3 player and calculator, etc.

Features
Resolution: 128 x 64 dot matrix panel
Power supply
- VDD= 1.65V - 3.3V, <VBAT for IC Logic
- VBAT= 3.3V - 4.2V for charge pump regulator circuit
- VCC= 7V - 15V for Panel driving
For matrix display
- Segment maximum source current: 100µA
- Common maximum sink current: 15mA
- 256 step contrast brightness current control
Embedded 128 x 64 bit SRAM display buffer
Pin Selectable MCU Interfaces:
- 8-bit 6800/8080-series parallel interface
- 3/4-wire Serial Peripheral Interface
- I2C interface
Screen saving continuous scrolling function in both horizontal and vertical direction
Internal charge pump regulator
RAM write synchronization signal
Programmable Frame Rate and Multiplexing Ratio
Row Re-mapping and Column Re-mapping
On-Chip Oscillator
Chip layout for COG & COF
Wide range of operating temperature -40ºC to 85ºC
Embedded 128 x 64 bit SRAM display buffer, das dus 8192 bit oftewel precies 1KB

Alleen, ik kijk al een tijdje op aliexpress naar al die schermpjes maar ik heb daar nog nooit iets als een ic op zon module gezien. Alles wat ik zie is scherm, al dan niet op een printplaatje met een paar weerstandjes.


Toch heb ik ergens gelezen (op hackaday geloof ik) dat er bij de atmega328 gamehandhelds met hun Nokia 5110 lcd en oledschermpjes alleen een software library wordt gebruikt om het scherm aan te sturen. daarom bufferen ze in die handhelds ook lijnsegmenten wat dus een extreme vorm van interlacing is. Zo werd het tenminste uitgelegd.

In principe heb je als je scherm het aankan maar 1pixel per frame nodig. Een schermpje van 96x64
Moet dan wel 64x96x20=122880 keer per seconde refreshen om dat als een beeld te zien ( ahum, dat lijkt me een beetje te snel voor zon arm oledschermpje)

Om nog meer off-topic te gaan is dat precies hoe ze de originele TRON uit 82 hebben gerenderd.
Daar stond een camera 10 minuten met de sluiter open tegenover een 4K CRT waar dus in die tien minuten een enkel beeldpunt over het scherm liep. Aan t eind had je dus alleen op film het compleet gerendeerde beeld.
hcQd schreef op zaterdag 30 december 2017 @ 00:03:
Een VCS 2600 had 4K ROM cardridges en 128 byte RAM, en daar zijn ook zat spellen voor geschreven. Oh, en die Attiny draait niet op 1,2kHz maar 20Mhz.
De tiny13a heeft de helft minder ram he, maar ook voor de VCS vind t behoorlijk knap.
Hij kan op 20 MHz, maar in de video draait ie op 1mhz (dat was namelijk de challenge) op 20 MHz gebruikt ie meer stroom.

Maar zelfs die atmega328 2kb ram chips, dat ze daar wolfenstein achtige games op draaien. In veel van die games draait dan ook nog een soft synth voor de muziekjes. Daar wordt ik nou blij van:)




Die tinyarcade hier draait nog op de atmega328 maar in de nieuwere versie zijn ze overgestapt op een compacter model waar het scherm samen met een arm cortex m0+ en een sdkaartlezer is gecombineerd. Daar kan wat meer mee, maar dit is dus nog het oude 8 bits model.

[ Voor 42% gewijzigd door verleemen op 30-12-2017 02:42 ]

The freedom of saying E=MC3


Acties:
  • +1 Henk 'm!

  • verleemen
  • Registratie: Augustus 2007
  • Niet online
(overleden)
Dobbelflops

[ Voor 117% gewijzigd door verleemen op 30-12-2017 02:39 ]

The freedom of saying E=MC3


Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 10:22

Damic

Tijd voor Jasmijn thee

De buffer chip zit op de flatflex of juist voor het scherm.

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag

Pagina: 1