Well, the time is upon us folks, here it is, WrestleFest for the Analogue Pocket. It is an absolute blast to play with your friends and Technos did a great job on the spritework for being a limited palette.
The core runs smooth and stable at 98Mhz on the SDRRAM and master system clock. The resolution is 320x240.
But first, some backstory. There's a story to every single board and game I own in my collection. I don't buy any game that I don't have some kind of personal connection to in the past. For me, WrestleFest was a game I remember the car service around the corner from my house used to have. I used to go there all the time to play the arcades, and there was also a laundromat next door to that and Italian bakery across the street they had games as well.
Growing up, I was a big pro wrestling fan. I certainly played this game and other wrestling games. I watched WWF and WCW shows on video tapes and on TV constantly, and my Dad, when he was alive, also took me to some of the shows and meet and greets when I was young.
To me, this game means a lot. It brings me back to the good old days, and also reminds me of my Dad. So, I hope you enjoy playing this game as much as I did.
Making the base platform was a short project for me, because now I have a lot of experience, but the real board was necessary to make the core function properly. There is a lot of documentation on this platform in Raine and MAME, however, some of it is inaccurate and had to be verified against the real board. The implementation in MAME also has some glitches that I noticed late in development so I had to go back and check the board for those details. So, overall, it wasn't a bad project, and I gained some useful experience as always. However, had someone used MAME as their only source, the core would not work properly. There are critical pieces concerning the video layer buffer timings/ sequence as well as interrupts that are not implemented correctly, thereby causing some glitches. I will document the Technos 16-bit Platform in another post and/or video so that other developers may amend MAME and other emulators with the features and make it work as intended without glitches.
atrac17 did a great job on testing as always, and helped me uncover bugs in the process. He also did the peripheral devices programming and inputs, which he is an expert in.
Thanks to Darren for confirming and analyzing the video display timings and giving me a refresher!
This core has a slightly different procedure than other cores, in that there is a rom build script that also needs to be executed to decompress the graphics data in an optimal way to cut down on SDRAM reads and make everything more efficient. I felt it to be a waste of resources programming this system in verilog, and it wouldn't be like how the real board functioned anyway, so I thought a pre-processor script was better and more efficient.
Anyway, the real board graphics are arranged in segmented bitplanes and use RLE compression. There are buffer RAMs attached to each of the segments (4), and they are buffered out, decompressed, and eventually merged together to get the pixel data out (via a Technos custom chip that handles the interface).
So, do to this scheme properly in an FPGA core, I would need to arrange the data in a merged format that has all the bitplanes pre-combined. Otherwise, I would have to do quadruple the number of reads per pixel that I would normally do (because each of the bitplanes is in a disparate section of the ROM, causing non-sequential address reads). Since the game writes heavily in hblank, line buffer out occurs at the end of horizontal sync, so it may not really enough time to be doing all those fetches for rendering 4 layers. Plus, it taxes the SDRAM more and creates instability issues.
By the way, storing the data in this way, the developers of the game achieved a 50% compression ratio. Since the bitplanes are separated and compressed with RLE, the individual bitplane data is of course highly redundant, leading to a higher compression rate. Technos is really smart though, and you will see in my detailed platform post about their design and architecture for the platform.
Install Directions (Windows):
1) Please install Python (latest version is ok) on your system. Do not use version 2.x. This is needed to run my custom script.
2) Unzip the package somewhere on your computer (these instructions are for Windows computers).
3) In the root folder, you should have mra.exe, assemble_wf.bat, technos_gfx_repack.py, pocket_dist and mra objects.
4) Take a look at the mra/ folder to confirm the MRA for your rom version.
5) Put the ROM zip file in the root folder.
6) EDIT the assemble_wf.bat to point to the MRA for your ROM and save (default is WORLD version).
7) Double click the batch file to run it.
8) After some time, there will be a wrestlefest.rom file outputted in the pocket_dist/Assets/wrestlefest/Common/ directory.
9) Copy the contents inside of pocket_dist (ie. Assets, Cores, Platforms) to the root of your Analogue Pocket SD Card. It should merge in the folders in your existing structure.
10) Play!
-pram0d
norman george
2024-09-14 19:25:03 +0000 UTCatrac17
2024-04-21 18:47:25 +0000 UTCFrank McDonald
2024-04-21 18:44:54 +0000 UTCatrac17
2024-04-19 13:28:32 +0000 UTCFrank McDonald
2024-04-19 09:41:54 +0000 UTCMichaelColeFan
2024-04-19 08:50:49 +0000 UTC80's spaceman
2024-04-13 00:58:14 +0000 UTCHT
2024-04-12 22:18:50 +0000 UTCatrac17
2024-04-12 19:58:07 +0000 UTCRachel Schaeffer
2024-04-12 19:57:51 +0000 UTCatrac17
2024-04-12 19:55:09 +0000 UTCRachel Schaeffer
2024-04-12 19:50:34 +0000 UTCRautz
2024-04-12 19:35:29 +0000 UTCLouis Martinez
2024-04-12 19:31:25 +0000 UTC