Announcement

Collapse
No announcement yet.

Chip-Eight Hacking Emulator

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Chip-Eight Hacking Emulator

    I've been working on a small emulation project on the side to learn a bit more about how emulation works. This is usually a start for anyone interested in writing emulators, but I decided to make it a bit more than just a beginner emulator project. Chip-Eight has quite a number of features you won't find on any other Chip 8 Emulator, and also has the ability to run most Chip8 and SuperChip games and demos. This project is open source, thus giving anyone interested a peek at how it was created, and a possible starting point for anyone looking to get into emulation.

    I am currently hosting the source code here for anyone interested in following, or checking out the source behind the project. Also, all games are public domain for this "Virtual Machine", and can be found here. If your interested in knowing more about the Chip-8 "Virtual Machine", then you can find that here. In addition to all of this, there are some cheats I've hacked included with the download that will auto load when particular games are loaded up, so be sure to check those out. If you encounter any problems, or have ideas for what could improve the experience then feel free to post them in this thread (feedback is appreciated as this is my first public release). Also, if you make hacks, post them here (though I doubt they are database worthy as this technically isn't a real console)! Enjoy and happy hacking!

    Features:
    • Support for all non hybrid type Chip-8 roms.
    • Support for SuperChip roms.
    • Speed control and pause options.
    • Debugger (Read/Write/Execute breakpoint system, register set/lock options, and full assembly display).
    • Stepping Options (Step Into, Step Over, Step Out).
    • Memory Viewer (has read/write access to the system memory).
    • Trace log support (with optional register dump).
    • Cheat Support (Format: AAAA?CC:VV).
    • Cheat File Support (Add, Update, Delete).
    • Cheat Search Functionality


    Requires:
    • .Net Framework 3.5 or higher.
    • All included files.
    • Imagination.


    Future Goals:
    • Input Mapping.
    • Register Breakpoints (Read/Write).
    • Save States.


    Input:
    • Chip-8/SuperChip use a 15 key layout, and have been mapped to 0-9 and Q-Y for this release (I hope to allow input mapping later on). Most games will use 5 to start, but controls vary per game.
    • Ctrl + P will pause and resume emulation.
    • Ctrl + D will open the Debugger.
    • Ctrl + C will open the Cheats.
    • Ctrl + M will open the Memory Viewer.
    • Ctrl + R will reset the emulator.
    • Plus (+) and Minus (-) will control the emulation speed (may be locked for certain games), and Ctrl + S will set emulation speed back to default.


    Screenshots:








    Hacking Tips:
    • Chip-8 usually stores its values within the registers instead of memory addresses. SuperChip does a mix of both, but with larger games, most of it is stored in memory.
    • There are 35 instructions within the Chip-8 instruction set, and a few additional that are SuperChip only. Since the set is so small, you will have to be creative to work around the limitations when you alter the code (though the emulator is designed to handle Unknown Instructions if your unsure).
    Attached Files
    Not taking any requests at this time.

    Bored? Watch some of my hacks here.

  • #2
    Awesome, it looks nice!
    I had never even heard of the 'system' before.
    It's a pity more games weren't programmed for it.
    http://OldGameHacking.com/
    http://www.youtube.com/user/DreamcastVideos

    Comment


    • #3
      Cool, I'll check it out too!

      Comment


      • #4
        Originally posted by Mezmorize View Post
        Awesome, it looks nice!
        I had never even heard of the 'system' before.
        It's a pity more games weren't programmed for it.
        Thanks. Yea, really wish more would have been created, though I'd imagine limitations of the "system" getting in the way of more advanced games. I believe Revival Studios is still making games for it on and off though. It's been a fun project, and hopefully I can apply what I've learned making this to future emulation projects I pursue.
        Not taking any requests at this time.

        Bored? Watch some of my hacks here.

        Comment


        • #5
          The interface reminds me of Ubuntu 12.04 LTS with classic gnome, pretty sweet (even though I don't have Ubuntu installed ATM). All in all nice work Abystus. Do you use Linux as-well as Windows?

          Comment


          • #6
            Originally posted by 47iscool View Post
            The interface reminds me of Ubuntu 12.04 LTS with classic gnome, pretty sweet (even though I don't have Ubuntu installed ATM). All in all nice work Abystus. Do you use Linux as-well as Windows?
            Thanks. I took a bit of inspiration from FCEUX, along with some of my own custom design. As far as Linux, I've used it before for brief runs, though in the end I found myself hating how every distro uses a different executable type, and it relying strictly on the terminal for certain actions. That coupled with poor compatibility with most PC games kinda turned me off.
            Not taking any requests at this time.

            Bored? Watch some of my hacks here.

            Comment


            • #7
              I agree, Linux isn't really for gaming and that terminal is very annoying.

              Your emulator will make ASM hacking very easy for people like me, and an easy to use debugger just like FCEUX's.
              Respect. It would be great if all emulators had a debugger+breakpoints instead of just a cheat search or nothing at all.
              Last edited by 47iscool; 05-30-2013, 01:19:32 AM.

              Comment


              • #8
                Until you implement other input devices such as controllers, I recommend Xpadder.
                I recently discovered it when I wanted to use a 360 controller with Super Mario 64 DS for the emulator desmume.
                http://OldGameHacking.com/
                http://www.youtube.com/user/DreamcastVideos

                Comment


                • #9
                  Originally posted by 47iscool View Post
                  I agree, Linux isn't really for gaming and that terminal is very annoying.

                  Your emulator will make ASM hacking very easy for people like me, and an easy to use debugger just like FCEUX's.
                  Respect. It would be great if all emulators had a debugger+breakpoints instead of just a cheat search or nothing at all.
                  Well I always thought that if your willing to write an emulator, you should write tools that will benefit the user. Problem is though, most people that write emulators don't hack games. Though, I can imagine them writing similar tools for development purposes that they could re-tool for user use (I mean hey they gotta test the operation somehow). Hopefully we see more emulators with these features in the future, until then there is always MESS...
                  Not taking any requests at this time.

                  Bored? Watch some of my hacks here.

                  Comment


                  • #10
                    Originally posted by Mezmorize View Post
                    Until you implement other input devices such as controllers, I recommend Xpadder.
                    I recently discovered it when I wanted to use a 360 controller with Super Mario 64 DS for the emulator desmume.
                    Wow, I completely forgot about that option. I have Joy2Key somewhere around here... Thanks for bringing that to my attention!
                    Not taking any requests at this time.

                    Bored? Watch some of my hacks here.

                    Comment


                    • #11
                      No problem, I used AutoHotKey in the past but Xpadder is so much easier and works much better.
                      Do you have any plans for emulators/hacking tools after your completely finished with Chip-Eight?
                      If not and you have any interest at all in the Game Gear, I would love to see a tracing feature like FCEUX.
                      I know MESS has tracing but I can never figure it out or at least it's nothing like FCEUX.
                      http://OldGameHacking.com/
                      http://www.youtube.com/user/DreamcastVideos

                      Comment


                      • #12
                        Originally posted by Mezmorize View Post
                        No problem, I used AutoHotKey in the past but Xpadder is so much easier and works much better.
                        Do you have any plans for emulators/hacking tools after your completely finished with Chip-Eight?
                        If not and you have any interest at all in the Game Gear, I would love to see a tracing feature like FCEUX.
                        I know MESS has tracing but I can never figure it out or at least it's nothing like FCEUX.
                        Well I have the source for a Gameboy Advance emulator that I've been meaning to add features to, though not sure when I'll be able to get around to it with life, work, kid, etc... BTW, tracing is easy in MESS. Set a breakpoint/watchpoint like normal, then type in the debugger "trace whatever.txt". When your breakpoint halts execution, type "trace off". All the instructions up until the breakpoint should be in the file. Hopefully I'll get more time for emulator related activities (this has really been a side project that is just now getting stable enough to release).
                        Not taking any requests at this time.

                        Bored? Watch some of my hacks here.

                        Comment


                        • #13
                          Sorry to keep going off topic.
                          This topic by you taught me a lot about the debugger in MESS:
                          http://www.mamecheat.co.uk/forums/vi...php?f=2&t=5743

                          But I like how both Gens and FCEUX's tracing only list things once, and how you don't need to have a watch/break point set.
                          So far every walk thru walls code I have made was created without ever looking for a RAM address.
                          I know I should just figure out how to make one the correct way, but it's fun just randomly exploring =P

                          When I attempt to do what the last poster says to do in the above topic, I easily get overwhelmed when looking at the resulting log file >.<
                          http://OldGameHacking.com/
                          http://www.youtube.com/user/DreamcastVideos

                          Comment


                          • #14
                            I glad really you posted this Abystus, I've never even heard of the Chip 8 TBH. And the ROMs are not even half a kilobyte. Now I know of yet another system I've never even heard of, thanks!

                            Comment


                            • #15
                              Originally posted by Mezmorize View Post
                              Sorry to keep going off topic.
                              This topic by you taught me a lot about the debugger in MESS:
                              http://www.mamecheat.co.uk/forums/vi...php?f=2&t=5743

                              But I like how both Gens and FCEUX's tracing only list things once, and how you don't need to have a watch/break point set.
                              So far every walk thru walls code I have made was created without ever looking for a RAM address.
                              I know I should just figure out how to make one the correct way, but it's fun just randomly exploring =P

                              When I attempt to do what the last poster says to do in the above topic, I easily get overwhelmed when looking at the resulting log file >.<
                              Well, there are several ways that walking bounds are programmed. Though I find the simplest method is to start by seeing if a new value is being written when you touch a wall (no trace). If so, go after that write with a wp/trace. If no new value is written when touching the wall, and all writes either repeat a value or stop writing all together, try looking for a branch over somewhere above that area. Things can get tricky, though there are several tools to help pinpoint branches (ahem BranchFinder) which may simplify this task. I've haven't had the need for a WTW in mess or mame as of yet, and have really only made them in FCEUX and Geigers Snes9x. Also, as pugsy describes in that post, you can ignore certain writes to an address, thus allowing you to easily see what is "stopping" your progression in a direction if it is a forced value type. A few different variations (something I wrote a while back) that may apply to certain games you will encounter can be found here.
                              Not taking any requests at this time.

                              Bored? Watch some of my hacks here.

                              Comment

                              Working...
                              X