About GreaseMonkey
Entries
Ludum Dare 26 | Ludum Dare 24 | Ludum Dare 24 Warmup | SOPAJam |
MiniLD 32 | Ludum Dare 22 | Ludum Dare 21 | Ludum Dare 19 |
MiniLD #21 | Ludum Dare 18 |
GreaseMonkey's Trophies
Archive for the ‘LD #19 – Discovery – 2010’ Category
If it doesn’t work, DON’T VOTE.
We didn’t get the full blown all-1s parade like last LD, but it did appear on my entry. What makes this particularly horrible, however, is that I didn’t get many legit votes, and would have scored 4.10 for audio rather than 3.82. ARGH.
What we did get, however, was a lot of all-N/As and even more all-N/As-apart-from-community. I got one and two from those respectively.
IT’S NOT COOL.
People who do that should get suckness points rather than coolness points, and whoever gets the most suckness points (above a certain threshold) should be banned from voting until they’ve removed all copies of Game Maker from their computer (and possibly Unity and whatever else is “the easiest way to make games for Windows”).
In fact, they might as well be tortured by being forced to program a game for an old console in assembler. Like what I did, except done by someone who probably can’t even code in BASIC.
So, back to the topic.
If it doesn’t work, DON’T VOTE.
If you think the guy’s a complete idiot, PRETEND IT WAS MADE BY YOUR BEST FRIEND (I’ve yet to find an unexplained all-5s vote but these would be awesome (actually I think I just did on Coffee Forever)).
And now for the ultimate question: How do we stop these stupid, stupid votes?
IT’S “DONE”
Well here it is, guys. It’s my LD19 entry. I basically just gave up and released it as is BUT AT LEAST IT’S RELEASED. No known major bugs.

Scrolling + entity loading + player moving now works.
Unfortunately there’s a scrolling bug due to the 28-tile scroll height. I need to adjust it properly when it wraps around.

Also entities aren’t being deleted when they fall down the bottom yet.
It’s starting to look like a game!
After fixing the tile type set issues, it finally looks like it could actually be a game. What needs to be done now (after making graphics, of course) is getting the player, then some other entities working.

Also an earlier, definitely buggy dump behaves quite differently in Kega Fusion compared with Meka, and it’s here. How does this act on a real SMS?
Music engine fixed
The readme.txt file is out of sync in the dump, here’s how the stream works:
if the value is $01, then don’t write anything to the PSG.
if bit 0 is set, it’s a 1-byte lookup.
if bit 0 is clear, it’s a 2-byte lookup, low then high.
if the 2-byte lookup is $FFxx, then reset the stream.
The value for a “blank tick” used to be $00, not $01. Unfortunately, you can get values such as $0D00 of which the first byte read is… $00. D’oh!
And this is the thing itself. Enjoy.
Good news, music playback works!
Bad news, it’s a tad broken. Not sure what’s causing it but it seems to do it every now and then, and I don’t think ADD hl,de is THAT broken.
Some musics
Currently I’m working on the level format, so I’m shoving that in a readme.txt. I should probably rename that file.
There isn’t any code to load the data just yet and I’m trying to work out the structure that entities should use.
Anyways, while you’re waiting, here’s some music I intend to use.
Two hours and twenty minutes later…
… and I finally have a font (the twenty minutes was due to me having to make a puts function).

Next task: Actually make a GAME. (After I’ve made a tileset and a spriteset, of course. Perhaps with a slightly more suitable palette.)
Declaring possible reference code
I just stumbled across some lovely math-related Z80 snippets while looking around the SMSPower! wiki. So I *might* just use these things. After all, most of you guys have multiplication at your fingertips already.
Apparently .it isn’t the easiest format to make a player for
Hey guys, guess what? I have music!
Unfortunately it doesn’t work very well. It uses patterns from the .it format, which is easier to load than I thought (yay for the BIT opcode \o/) but quite a pain to play. To be quite honest, I’d probably fare better just using LZSS-compressed VGM streams.
http://pubacc.wilcox-tech.com/~greaser/stuff/butt-02.sms
Enjoy the slightly glitchy music. Also, when you die or win, the game resets!
No source code, sorry – and here’s why:
-rw-r–r– 1 ben ben 443 2010-12-17 15:45 bears.inc
-rw-r–r– 1 ben ben 14 2010-12-17 15:45 bears.ord
-rw-r–r– 1 ben ben 580 2010-12-17 15:45 bears.pat0
-rw-r–r– 1 ben ben 758 2010-12-17 15:45 bears.pat1
-rw-r–r– 1 ben ben 705 2010-12-17 15:45 bears.pat2
-rw-r–r– 1 ben ben 720 2010-12-17 15:45 bears.pat3
-rw-r–r– 1 ben ben 762 2010-12-17 15:45 bears.pat4
-rw-r–r– 1 ben ben 707 2010-12-17 15:45 bears.pat5
…yep, all those files (using a tool I made, of course). Anyways:
wlalink -v link.wla butt.sms
Free space at $0037.
Free space at $005c-$0065.
Free space at $09ec-$09ff.
Free space at $0a0e-$3fff.
Free space at $53a4-$7fdf.
Free space at $7ff8-$7ff9.
Free space at $7ffc-$7ffe.
Bank 00 has 13841 bytes (84.48%) free.
Bank 01 has 11329 bytes (69.15%) free.
25170 unused bytes of total 32768.
But I might just sacrifice compactness for simplicity in the compo.
It’s doable!
This was probably about 10 minutes in:
[19:02:25] <GreaseMonkey> ok i’m just messing around with z80 assembler and meka
[19:02:35] <GreaseMonkey> (meka is a sega master system emulator)
[19:02:42] <Sparky> Oh, neat.
[19:02:46] <GreaseMonkey> it’s actually quite easy to load registers, palette and tiles
And now I’ve done my practice game at about 22:32. That took, ooh, 3 and a half hours to make a little not quite completeable one-level game?

EDIT: Source code.
For those of you who can’t make music
but can run Python, here’s a little something for you. It might be a bit too cheesy for your game, unfortunately… if you want to you can try modifying it to use a minor scale. Also, you’ll need some samples, and a tracker to put the samples in.
Suddenly, your game has a somewhat full sounding soundtrack with a bunch of randochords shoved in.
Enjoy!
EDIT: Here’s a version which does minor scales every now and then and generates its own (not very good) samples.
EDIT 2 (Dec 2011!): The links are a bit dead, so try this: http://gm.64pixels.org/stuff/atrk-c-edit.py.txt – this edit was because ExciteMike linked to here. I should probably consider a new version of this thing, most likely from scratch again. Also have some samples.
Arrangement-permitting…
Here’s hoping I don’t have nay arrangements. From what I gather, I don’t.
- Language: Z80 assembler
- IDE: KWrite/Kate
- Graphics: GIMP (I think), maybe modified bmp2sega.py
- Music: SchismTracker + either it2vgm or a converter for some music engine I may have to make
- Sound: I think I’ll just code it in.
- Libraries: None.
- Architecture: Sega Master System
In other words, kinda like what I did last time, except with the real thing (well, it might not work on the real thing so I’d suggest using an emulator – MEKA is a good choice but sadly it uses SEAL for audio (which SUCKS on linux) so I’d suggest using Meka Fusion if you’re lucky enough like myself to be able to run it (it’s closed-source)).
Can someone recommend a good (read: doesn’t use SEAL) open-source SMS emulator? (note: SMS Plus uses SEAL so it’s out of the question)


