I am back with new experiment - real emulator of my second favorite retro platform for my first favorite retro platform :)
You can show virtual keypad by pressing B on P2 controller, then use P2 arrows and A button to press keys.
Emulator is preloaded with those games:
- Rush Hour by Hap
- Astro Dodge (hi-res)
- Worm V4 (hi-res)
- Space Invaders by David Winter
- TRIP8 hi-res demo
Rush Hour controls:
- ARROWS - movement
- Z - select
Only code I found: 4A10 :D
Worm V4 controls:
- ARROWS - movement
- Z - reset
Astro Doge controls:
- ARROWS - movement
- Z - start
Space Invaders controls:
- LEFT/RIGHT - movement
- Z - shoot
- LEFT/RIGHT - move
- UP - rotate
- DOWN - drop
Some technical details:
- emulator runs at 1500 cycles per second (successfully tested at 3000 cycles per second)
- timers are set correctly to 60Hz
- game rom is stored as map data (currently 1 game per pico rom)
- screen is stored directly in spritesheet
- pico keys are custom-mapped to chip8 keys
- cpu specification: 35 opcodes, 16 8-bit registers, 64x32 b/w screen, 4k rom/ram
If anyone want to take a look and play, please use RUSH-HOUR rom. Many bugs I found are fixed there ;)
I was playing with crazy idea in my mind again and just wanted to give it a go. I was wondering how hard it would be to create emulator for PICO8. Program that can load catridges and play them (read bbs player without bbs). Since it's all based on lua (witch I have no experience implementing) and I am really bad at bitwise operations (witch are really crucial when working with retro stuff) I decided to create one to learn something new. Here is my first attempt. Far from being good or complete and I don't know if I would ever want to finish it...but...you never know :D
- written in C# .NET 4.5 profile
- used NLua library/wrapper for code execution
- cartridge loading from png files (anyone want .net library for this? I can create one)
- screen is blitted to windows form directly, no graphics libraries used so it's not very fast when scaled up
- implemented features:
- _update/_draw methods calling
- fully working palette manipulation (pal, palt)
- flipping graphics from ram to vram (flip)
- clear screen buffer (cls)
- full implementation of basic sprite drawing (spr)
- some mathematical functions (flr, sin, cos)
Ps: I am Windows Phone user, I don't think there will ever be official player for my mobile platform so I will maybe create my own :D
Current testing cartridge:
I was experimenting with png cartridge format (thanks asterick for your awesome work) and I got this little idea:
For nearly every console in the past, there were unofficial, hacked cartridges with unlicensed or pirated games, and this is something that even PICO should have!
Go ahead and grab my pirated copy of Celeste, it's shipped on dark cartridge with custom print on top!
Recently I started playing with raycasting and I immediately wanted to create a real game with it, so here is first preview of my 3D suqare dungeon.
- wall text system
- portal system
- ground/ceiling color can change in locations
- item system (food+gold)
- gui (health, gold, experience/level, compass)
Notable bug: when you try to read text that is not defined it's id will popup on screen and game will be stopped.
- raycasting engine with dynamic rendering quality for smooth movement
- collisions based on tile flags
- 16x16 pixels textures
- 8x16 pixels transparent sprites rendered using simple (column based) z-buffer
- basic npc system that allows random movement of monsters around map
Controls: arrows for movement
Original 3d experiment thread is here.
Simple ray-caster experiment.
It's not perfect, but it's kinda working and I hope it can serve as starting point for some awesome 3D games - especially I am thinking about some cool dungeon/rpg, that would be awesome!
Controls: arrows to move
- added fish-eye effect reduction
- added dynamic quality settings (when camera moves, quality is lowered)
- draw distance, step & quality setting can be adjusted in code
Hello, anyone knows how "files" from system api works? I want to have all cartridge names in array or something like that...
- I tried to use it as function - it's a nil value
- I tried to print it - result is "false"
- I tried to iterate using foreach(files,print) - nothing happened
Am I missing something or this is not yet implemented?
Two mighty Viking warriors are splitting loot after great battle but only the clever one can have more of it!
Simple game for 1-2 players. Loot is falling onto table, you can grab it by pressing your action button, but be sure not to wait too long, otherwise your opponent will sure take it first! Whoever reaches limit first wins the game.
Red-bearded warrior: Z
Blue-bearded warrior: DOWN ARROW
Limit selection: LEFT & RIGHT ARROWS
This game was heavily inspired by Mind Fuck by Anna Anthropy (auntiepixelante.com)