|
Cthulhu32
|
 |
« on: June 19, 2010, 01:35:29 PM » |
|
FamiEngine v1.0 C++ FamiCom-Like Engine
Introduction: With the FamiCase art competition coming up on TigForums, I decided I would try an experiment and create a library similar to how the NES actually works. Essentially, you have two VRAM locations (pixel dumping locations), one for the background and the other for the sprites. Then you have two name tables (tile maps) that you can display those backgrounds on, and 64 sprites you can render onto the screen just like the original NES. The engine also provides a sound library to load NSF files and WAV files along with an input system for handling the joystick using SDL_Joystick and regular keyboard mappings. The entire input system is mappable, and the library is designed to be as flexible as you need it to be. Usage: FamiEngine is extremely easy to get compiled into your C++ project. Simply copy the FamiEngine folder into your code location, and use #include "./famiengine/famiengine.h" to trigger everything FamiEngine related. Please see the Tetris FE example for a more programming related version of this. (I will put more information here later.) Build:FamiEngine v1.0FamiEngine Beta v.070910FamiEngine Beta v.061910Examples:Tetris FE beta v.9.20.10 - Build | SourceTetris FE beta v.061910 -Build | Source Controls: [Arrow Keys] [Z,X] B,A [A,S] select, start Or Joystick Mapped to the first joystick ID Restart at grey block screen with start, go back to menu with SelectScreens: 
Please feel free to leave comments/suggestions or things you would like to see in the FamiEngine in this thread. I'm hoping I can get a platformer demo done next week to show how you can make a scrolling side-scroller, and I'll be updating various parts inlucing a pros/cons (real/fake to the actual NES), and hopefully getting the Blargg shader in.
|
|
|
|
« Last Edit: September 21, 2010, 10:02:55 AM by Cthulhu32 »
|
Logged
|
|
|
|
|
Skofo
|
 |
« Reply #1 on: June 20, 2010, 12:08:20 AM » |
|
a library similar to how the NES actually works Hah! This is certainly one of the more interesting game engine projects I've seen. I don't know C++ so I can't easily try this out, but best of luck with it! 
|
|
|
|
|
Logged
|
If you wish to make a video game from scratch, you must first invent the universe.
|
|
|
|
codergames
|
 |
« Reply #2 on: June 20, 2010, 03:00:59 AM » |
|
Looks good to me, haven't tried it, but looks good, probably works as well.
|
|
|
|
|
Logged
|
Be smart, be brutal, they're invading! 
|
|
|
|
Rob Lach
|
 |
« Reply #3 on: June 21, 2010, 06:47:00 AM » |
|
Nice.
|
|
|
|
|
Logged
|
|
|
|
|
Drakkar
|
 |
« Reply #4 on: June 21, 2010, 06:47:28 AM » |
|
Looks pretty boss, I'll try it out when I'm not working on something that will feed me.
|
|
|
|
|
Logged
|
|
|
|
|
Cthulhu32
|
 |
« Reply #5 on: June 21, 2010, 07:56:16 AM » |
|
Yeah I think this really needs a good set of tutorials to help explain why you would want to use the FamiEngine, but hopefully I can get Melly to link it on the main thread when the compo is posted :D Or I'll just put a reply.
Really the best thing about this is the ability to dynamically scroll tiles the same way the NES did it, and allowing the engine to take care of the entire rendering pipeline. Because all you have to do is set attributes, all the messy SDL and OpenGL calls are taken care for you.
Next up, Shaders!
|
|
|
|
|
Logged
|
|
|
|
|
codergames
|
 |
« Reply #6 on: June 22, 2010, 12:46:39 AM » |
|
I finally got it, you made an engine to help us with the compo. The idea is to pick a Famicom game and clone it using your engine that takes away the pain part, right? That's awfully nice from you mate!
What do you do for a living?
Keep up the good work!
|
|
|
|
|
Logged
|
Be smart, be brutal, they're invading! 
|
|
|
|
Cthulhu32
|
 |
« Reply #7 on: June 22, 2010, 01:08:04 PM » |
|
I finally got it, you made an engine to help us with the compo. The idea is to pick a Famicom game and clone it using your engine that takes away the pain part, right? That's awfully nice from you mate!
What do you do for a living?
Keep up the good work!
Hah thanks! Yeah I'm trying to give us C++ guys a nice boost and a streamlined system to make Famicom/NES games in. I'm making some progress on the FBO shader, but I'll need to include directions on how to compile with GLEW because OpenGL 2 is a pain in the ass to get working right  I'm a full-time C++ programmer (non-game related) working at a coupon company. I used to work in the game industry for about 2 years but my company let everyone go in January of 2009. Here's my portfolio if you want to see the games I worked on : http://cthulhu32.kraln.com/portfolio/
|
|
|
|
|
Logged
|
|
|
|
|
JamesGecko
|
 |
« Reply #8 on: June 24, 2010, 12:00:34 AM » |
|
Very nice. Props for making it cross platform. 
|
|
|
|
|
Logged
|
|
|
|
|
codergames
|
 |
« Reply #9 on: June 24, 2010, 03:41:00 AM » |
|
I'm very impressed mate! You did quite a lot of stuff. I never worked in a company as a full-time only as a freelance developer. So because I have a lot of spare time often, decided to try myself as an indie game dev making casual games and hand-held console types of game on a PC computer.
|
|
|
|
|
Logged
|
Be smart, be brutal, they're invading! 
|
|
|
|
belbeeno
|
 |
« Reply #10 on: June 28, 2010, 03:17:08 AM » |
|
Pretty cool! I'm looking forward to seeing it with the simulated Composite NTSC artifacts and bleeding in.
|
|
|
|
|
Logged
|
|
|
|
|
Cthulhu32
|
 |
« Reply #11 on: July 09, 2010, 05:00:06 PM » |
|
Quick update, I realized for some very odd reason I decided that 8*8 = 0xFF... which is definitely not true. So the VRAM sizes have been increased to 16*16 (proper sizing), along with giving proper defines in the famisets.h so you can make your VRAM any power of 8 you want (64, 128, 256, 512, etc.), mipmap coding is up to you  Also fixed the very small window resize bug (2 line fix) that I had already done in my shader version, but didn't add to this. I'm not sure if I'll have time/interest to finish the Shader before the compo is over, but the engine is solid as it is now.
|
|
|
|
|
Logged
|
|
|
|
|
codergames
|
 |
« Reply #12 on: July 11, 2010, 08:00:49 AM » |
|
And what's a compo again? I keep reading about compo, it just occurred to me that I don't know what that is.
|
|
|
|
|
Logged
|
Be smart, be brutal, they're invading! 
|
|
|
|
Cthulhu32
|
 |
« Reply #13 on: September 21, 2010, 10:02:34 AM » |
|
Updated to version 1.0 now that I have OpenAL fully integrated. Before I was having issues with SDL sound threads crashing when OpenGL would conflict, so I sort of abandoned the idea of keeping that sound system going. But now, I'm using OpenAL instead and streaming per-update. I know some of the timings need to be fixed a little, but thanks to KittyCat on #OpenAL, Bobo, and everyone else who tested on the IRC it seems to be fully working without crashes.
Next I need to write some tutorials to give people a better idea of how to use FamiEngine. At the same time I should develop a Megaman style game to show the potential (and low CPU usage) of the engine. I'll also make sure to have a Linux and OSX build showing off how easy it is to port between the systems :D
|
|
|
|
|
Logged
|
|
|
|
|
Melly
|
 |
« Reply #14 on: September 21, 2010, 04:21:05 PM » |
|
You're making me want to make a NES game. Stop it. I have too many ideas already. 
|
|
|
|
|
Logged
|
|
|
|
|