|
ForumsSega Master System / Mark III / Game GearSG-1000 / SC-3000 / SF-7000 / OMV |
Home - Forums - Games - Scans - Maps - Cheats - Credits Music - Videos - Development - Hacks - Translations - Homebrew |
![]() |
Goto page 1, 2 Next |
Author | Message |
---|---|
|
[Homebrew Tutorial] Ms. Pac-Man Classic
![]() Last edited by xfixium on Sat Feb 01, 2025 7:43 pm; edited 5 times in total |
Homebrew classic Ms. Pac-Man. I made this with the idea of making video tutorials on how to setup and use Devkit SMS to make this game (Which are in the works). There are some small ghost behavior issues, but the game is mostly functional.
1 player, 2 player, and team modes Pac boost option Stage Select Player lives increase Holiday stage is included (Stages 22-25). Source: https://github.com/xfixium/SMS-Ms-Pac-Man Tutorials: Updates: 01/03/2024 Minor bug fixes All audio included 01/04/2024 Bug fixes: Fixed bonus audio not always playing Fixed VRAM update when P2 is off screen 01/04/2024 Pellet sound added Previous pellet sound now moved to "confirm" sound Game Download: https://www.pyxosoft.com/projects/sms_ms_pac_man/mspacman.sms Huge thank you to Slogra and EnricoPallazzo for the audio tracks and SFXs. |
|
![]() ![]() |
|
|
![]() |
Hi, xfixium. Your work is brilliant. But i dont undestand why the screen srolling even if arcade no did it. | |
![]() ![]() |
|
|
![]() |
The original arcade version had a vertical resolution greater than the Master System's typical resolution of 192. Thus the scrolling. The official Ms. Pac-Man SMS release also scrolls in arcade mode. I chose this game primarily to present a tutorial series revolving around Devkit SMS, eventually releasing on YouTube. Inspired by Orange Revolt and their Tetron series, which was a Tetris clone way back when I started learning to use Devkit SMS. Sadly I think they took the videos down. The game is also very well documented, and I personally favor the original graphics over the official release. |
|
![]() ![]() |
|
|
![]() |
Great idea for a tutorial series! | |
![]() ![]() ![]() |
|
|
![]() |
This is pretty impressive. I might already prefer it over the Tengen version.
There's now a page for your project at SMSPower: https://www.smspower.org/Homebrew/MsPacManClassic-SMS. As soon as you upload the tutorial videos, I'll add the links to the page. |
|
![]() ![]() ![]() |
|
|
![]() |
Thank you, xfixium! This is just great. I'm very curiuous how you coded this game. I will check out the totorial/code when you share it.
Not so sure about the music though, so if anyone has any suggestions. I listened to the arcade, snes and megadrive version, but all versions sounded different. Thanks again for sharing this! |
|
![]() ![]() ![]() |
|
|
![]() |
Wow, this sounds so fun - I will totally do the tutorials! Speaking as someone who has only ever coded using Gamemaker's scripting language, I will be very interested to see if I have any luck with actual SMS coding. | |
![]() ![]() |
|
|
![]() |
Hey, maybe someone who does the tutorial series will attempt to make a TATE mode version for SMS. :D |
|
![]() ![]() |
|
|
![]() |
Really nice! Looking forward to see the tutorials! :) | |
![]() ![]() ![]() |
|
|
![]() |
Good job, very impressive.
Waiting your tutorial. Maybe only for this game, was possible stages are capable in extra high resolution 256x224 ???? Just perfect for me when ghost disappears and flag indicates it. Well done :) |
|
![]() ![]() |
|
|
![]() |
Excellent game! The gameplay is spot on, the scrolling is silky smooth and I love the little tiles showing where the off-screen ghosts are! My only complaint would be the sounds: the pellet eating sound is very grating, and the fright mode and death sounds seem to be missing. Great job overall though! | |
![]() ![]() |
|
|
![]() |
Nice work!
Just for a bit of novelty, here is a rom of how it might sound using FM. Ignore the intro melody part... Namco likes to use Wavetable Synthesis so I think it'll be hard to get it to sound just like the arcade. The PSG is missing the low frequencies, and it seems the FM is missing the high frequencies |
|
![]() ![]() |
|
|
![]() |
In that case, just use both to have all the frequencies 😂 |
|
![]() ![]() |
|
|
![]() |
Here is the music and the 2 sound effects that i made.
They all could use some improvements, but honestly i'm not sure know how. So if anyone is able to improve them, please do! Also I did not vibrato or other effects, to keep the final psg format small. |
|
![]() ![]() ![]() |
|
|
![]() |
Since this is for tutorial, I'm guessing you prefer to use only PSG? This game is kind of unusual, in that I would lean towards using PSG for the music, but FM for the sound effects (except for the 1up ding ding ding sound I think). All the home versions' sound effects sound funny to me (in different ways). I like the intro music for the NES Tengen version, and the Game Gear version as well though. |
|
![]() ![]() |
|
|
![]() |
Was going to write exactly this. Really good version, that only needs a bit more work on the sound to be perfect. The ghost markers when they are off-screen are a great improvement over other versions with scroll. Great job! |
|
![]() ![]() |
|
|
![]() |
Thank you. I have a bunch recorded, all of it needs editing still.
Thank you, much appreciated!
Thank you for your time and talent. Hopefully the tutorials will be useful.
Very nice.
lol THAT would be interesting.
Thanks! Hopefully they do Devkit SMS some justice.
I thought about this. I may be wrong, but I don't believe the 224 resolution is supported across all SMS hardware. Thus why I decided to go with the more common 192 height. Also, I wanted it to be 1 for 1 graphically, with the original. And even using 224, it will still require scrolling. Plus some other concerns, like performance when in team mode.
Thank you! Unfortunately, I'm not much of an audio expert. So I can't produce/get the missing sounds. Since this is a tutorial primarily, I'm not entirely concerned.
Wow, that sounds great! Thanks for making the rom, and so quickly.
I don't think it's a preference thing, as much as what I can use via Devkit SMS. PSGLib is fantastic. The FM lib that can be used by Devkit SMS seems like it's complicated to produce audio for, from what others have said that compose music. You seem like you have a deep understanding of how audio works for the SMS.
Thank you! |
|
![]() ![]() |
|
|
![]() |
Here is an initial attempt at some of the missing sounds in VGM format (for PSG)
|
|
![]() ![]() |
|
|
![]() |
Hmmm, can't listen to them. My players are struggling very much with these vgm. Possibly due to they short lengths.
Foobar with in_vgm/VGMPlay 0.51.0 And Winamp with in_vgm v0.51.0 |
|
![]() ![]() ![]() |
|
|
![]() |
No, the 224 rows resolution is supported only by the 'newer' VDP, which is available only on the SMS II and on some of the newer 'first model' SMS made. Also, it's not supported on Genesis/MegaDrive, but it is on Game Gear. |
|
![]() ![]() ![]() |
|
|
![]() |
what tool did generate these? they don't appear to be correctly formed |
|
![]() ![]() ![]() |
|
|
![]() |
I can get them to play (VLC, of all things, can playback the tracks XD). They sound cool, but I can't get PSGTool to convert them to .psg successfully. Thanks for the attempt, however. |
|
![]() ![]() |
|
|
![]() |
I was using C and printf, looks like I forgot to pad the header to 64 bytes. Silly me Also set the file version to 0, I think I should set it to 0x00000100 for 1.00, but not sure, so left it at 0 Ran them through vgm2psg and they seem to convert, but I don't know how to use .psg file so I can't test EDIT: Also think that I mis-calculated the 'Eof Offset' field, and then forgot to adjust it for the padding. Hopefully this one is correct. Doesn't seem to affect the .psg files |
|
![]() ![]() |
|
|
![]() |
Thank you so much! I placed them into the game. I still have a little logic to do for the "after a ghost gets chomped" portion, but it's pretty much there. I created a video to showcase the new audio. My only nitpicks are that some of the audio seems a little quite, and the length of the energizer (power pellet) sound could be just a little bit longer to cover the max 6 secs or so of energizer time. Again, thank you! (Sorry, the video is a bit choppy) https://www.pyxosoft.com/projects/sms_ms_pac_man/videos/sms_ms_pac_man_0003.mp4 |
|
![]() ![]() |
|
|
![]() |
In particular, it seems the 'eat fruit' sound is way too quiet.
Also, I should trim the 'after ghost gets eaten and returns to home base' sound so that it loops properly. And I think the 'eat ghost' sound maybe is too high in frequency, maybe it would sound better if it was lower. EDIT: Try these ones... I maxxed out the volumes. Also lowered the 'eat ghost' sound frequency. Still need to lengthen the 'power pellet' sound And also loop the 'after ghost gets eaten' sound (although I doubt anyone would notice) |
|
![]() ![]() |
|
|
![]() |
Oh, so you wrote your own tool to create sound effects? Now I'm really interested, can I have more details? Also, when generating the VGMs, use version 1.10 if you want to keep the header size at 64 bytes and padded with zeroes in the data offset area - see the VGM specs: Relative offset to VGM data stream.
If the VGM data starts at absolute offset 0x40, this will contain value 0x0000000c. For versions prior to 1.50, it should be 0 and the VGM data must start at offset 0x40. but it might be a better idea (for compatibility) to use version 1.50, set this field to 0x100-0x34 and use a 256 bytes header - or to 0xC and use a 64 bytes header. |
|
![]() ![]() ![]() |
|
|
![]() |
Wow, that 'eat ghost' sfx is spot on. I didn't even think the SMS could make that kind of sound XD. Made another wip vid to stress test the audio with the changes: https://www.pyxosoft.com/projects/sms_ms_pac_man/videos/sms_ms_pac_man_0004.mp4 |
|
![]() ![]() |
|
|
![]() |
I had already written a Ms Pacman emulator just for learning purposes, so I used that to save the register writes. Namco uses a 20-bit frequency, so it's just a matter of converting that number to a 10-bit period for the SMS. Then it's just shifting the frequency up or down until it sounds OK. So not really creating, just converting. Thanks for the info, I'll probably just use the 256 byte header and version 1.50 format.
So, which version of Ms Pacman has a 6 second energizer time? The arcade version that I have, seems to be 5 seconds on the cherry level (4 seconds of solid blue, then 1 second of flashing white 4 times or so) Also, here is another couple of versions of the 'eat fruit' sound, with lower frequencies. The current one is maybe too high, and doesn't seem to cut through the other sounds. |
|
![]() ![]() |
|
|
![]() |
I'm just going by the Pac-Man dossier (https://pacman.holenet.info/#ReferenceTables), which from my understanding, the frightened timing for Ms. Pac-Man isn't changed. I do have an arcade machine (Arcade1Up) of it myself, but I haven't sat there and run a stopwatch on it. It seems like it's a different version. Plus, I kinda don't trust it for an official version. From the looks of it, only stage 1 has 6 seconds. Thanks again for the updated audio, I'll import that in :) |
|
![]() ![]() |
|
|
![]() |
I suppose just ignore what I said, I actually just tried to time it and I get slightly less than 6 seconds. So it seems it is 6 seconds more or less :) But I think it gets lengthened when you eat a ghost |
|
![]() ![]() |
|
|
![]() |
Not really a big deal. I think the only sound I forgot about is the extra life alert. I squashed some small bugs. I didn't really plan an official release, but I think I'll eventually do that for this. Add a credit/disclaimer screen, remove the holiday stage, etc... etc... |
|
![]() ![]() |
|
|
![]() |
224 is supported on Game Gear? Is that in SMS mode? I would think if it was in GG mode, it would not matter as I thought it was only drawing the usual center of the tilemap regardless. Is that wrong? (much as reportedly the scroll lock registers are reportedly technically supported by the GG but useless since the affected parts of the screen data are never drawn anyways) |
|
![]() ![]() |
|
|
![]() |
Yup, 224 is supported on the Game Gear, but also yes the difference is invisible in native mode, since the top 16 scanlines are off the top in both 192 and 224 sl mode.
The "right 64px scroll lock" actually is partially on-screen in native mode - it becomes "right 16px" |
|
![]() ![]() |
|
|
![]() |
Here is the conversion for the extra life sound. Also, it turns out that the power pellet vgm has 359 frames, which confirms that it is 6 seconds (60 fps, 735 samples per frame) :) |
|
![]() ![]() |
|
|
![]() |
Much appreciated! I updated the ROM with the sounds loaded, and some minor bug fixes, like bonus changing half way through the stage. |
|
![]() ![]() |
|
|
![]() |
I'm curious how the 2 soundeffects that i made would sound when you make them. Can you also make music based on the arcade music? |
|
![]() ![]() ![]() |
|
|
![]() |
Here is how it might sound. Sadly, I died on the Banana level, so there will be no Junior music. |
|
![]() ![]() |
|
|
![]() |
The pellet sound seems like a closer fit to the original. Could you make a vgm of that? I know I have requested quite a bit from you and Slogra, so thank you both for everything. The current pellet sound I have I can use when the player presses button 1 to confirm. I think it would be a good fit for that. Kinda when a quarter has been fed into a real machine. |
|
![]() ![]() |
|
|
![]() |
No problem, here it is |
|
![]() ![]() |
|
|
![]() |
Thanks! ROM updated, also vid: https://www.pyxosoft.com/projects/sms_ms_pac_man/videos/sms_ms_pac_man_0005.mp4 |
|
![]() ![]() |
|
|
![]() |
Updated information on the first post of this topic.
Added link to the repo with the source code Added first 3 tutorial vids Thank you for viewing this topic |
|
![]() ![]() |
|
|
![]() |
Do you mind if I name the versions 1.01, 1.02, etc? | |
![]() ![]() ![]() |
|
|
![]() |
However you want to do it, and thanks! |
|
![]() ![]() |
|
|
![]() |
I'm the one who should thank you, your project is incredible! Not only the educational approach is pretty great, but also the game plays smooth as a Pac-pellet. |
|
![]() ![]() ![]() |
|
|
![]() |
I'm glad you enjoy it. I wrote the code, hopefully simple enough, that it makes sense to a broad audience. Working to get the rest of the videos out there asap. |
|
![]() ![]() |
|
|
![]() |
I just saw the videos. The first and second are of course illustrating things I already know, but I found the third very interesting, showing your powerful tool that you used to prepare the assets (palettes, tilesets and tilemaps) that you'll then use in the game, and also showing your personal approach/choices regarding the project.
I think I'll have some questions, but I want first to run your program myself and play a bit with it, so it'll be later. Thanks! :) |
|
![]() ![]() ![]() |
|
|
![]() |
You can produce other tutorial too! if xfixium did a tutorial with scrolling vertical why not you make a with scrolling horizontal. For example, a Namco game or Kung Fu from arcade? It´s time to you back to competition this year. You have great homebrews in SMS scenario. |
|
![]() ![]() |
|
|
![]() |
Just a heads up. I used SMS Tile Studio because it's what I used to create the project, and because I wanted to show some concepts in a graphical way. For this, I think it serves it's purpose. However, it's still very much a "bolted on" solution to fit my personal workflow, where some functions are not implemented or fleshed out. I don't think I can recommend using it for project work completely. It's not hardware accelerated / optimized (Meaning very large maps will be sluggish), MetaSprite functionality is incomplete, only on windows, compression options do not work, etc... etc... Also, kinda off topic. I had made the sprite tool (SMS Sprite Studio) that you requested some time ago. However, I feel like I over engineered the original spec. I also thought, after I've done most of the work, that I could just wrap it in with SMS Tile Studio at one point. Leaving it in limbo. In the end, none of which was ever completed. SMS Tile Studio has one export option currently, which will create DevKit SMS MetaSprite syntax to the clipboard. So, my apologies there. ![]() |
|
![]() ![]() |
|
|
![]() |
@xfixium - so what you're saying is that your SMS Tile Studio is still work in progress and that some features are not implemented yet... well, that's fine, don't worry :) | |
![]() ![]() ![]() |
|
|
![]() |
I could never tell this is a homebrew, such a professional job! | |
![]() ![]() ![]() |
![]() |
Goto page 1, 2 Next |