Forums

Sega Master System / Mark III / Game Gear
SG-1000 / SC-3000 / SF-7000 / OMV
Home - Forums - Games - Scans - Maps - Cheats - Credits
Music - Videos - Development - Hacks - Translations - Homebrew

View topic - New Homebrew: Fairy Forest

Reply to topic
Author Message
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
New Homebrew: Fairy Forest
Post Posted: Fri Aug 04, 2017 3:38 pm
Hello everyone. Over the summer, I have been working with my eight year old daughter to make her an SMS game. She came up with the concept and I did the sprite art and programming. The game is pretty easy for a grown-up but hopefully there is a kid somewhere that will like it bugs and all. I have attached the ROM and source code.
FairyForest006.jpg (49.66 KB)
screen shot 4
FairyForest006.jpg
FairyForest003.jpg (43.84 KB)
screen shot 3
FairyForest003.jpg
FairyForest001.jpg (39.81 KB)
screen shot 2
FairyForest001.jpg
FairyForest000.jpg (143.58 KB)
screen shot 1
FairyForest000.jpg
FairyForest.zip (313.29 KB)
ROM and source code

  View user's profile Send private message
  • Joined: 28 Feb 2016
  • Posts: 502
  • Location: Barcelona
Reply with quote
Post Posted: Fri Aug 04, 2017 8:51 pm
Woh, nice job !!!!!

Good team ;)

Thanks for sharing
  View user's profile Send private message
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Post Posted: Fri Aug 04, 2017 8:57 pm
Thanks. My little one is an avid video gamer and it is a good way for her to learn a bit about computers. Although I think z80 assembly may be a bit beyond her, she does have a knack for figuring out algorithms conceptually. I am hoping that at some point in the future she will want to develop her own game.
  View user's profile Send private message
  • Joined: 05 Jul 2017
  • Posts: 67
  • Location: Cornwall, United Kingdom
Reply with quote
Post Posted: Fri Aug 04, 2017 9:50 pm
That is also my hope for my daughter. She's only 18 months so there's still a lot of time.

Have you introduced your daughter to Scratch? https://scratch.mit.edu
  View user's profile Send private message Visit poster's website
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Post Posted: Fri Aug 04, 2017 10:23 pm
I have not shown her that yet but I should. I have had her playing the coding games at code.org. Those are really good as they are a graphical language and feature a lot of minecraft content which is an easy sell with my little one. Thanks for the tip.
  View user's profile Send private message
  • Joined: 28 Jan 2017
  • Posts: 539
  • Location: Málaga, Spain
Reply with quote
Post Posted: Sat Aug 05, 2017 5:54 am
Jjajaja its a nice game !!!

I put my five years cousin to test my work my work in progress platwormer too, at the weekends.

And she have good ideas!

Lol...
  View user's profile Send private message
  • Site Admin
  • Joined: 08 Jul 2001
  • Posts: 8644
  • Location: Paris, France
Reply with quote
Post Posted: Sat Aug 05, 2017 9:25 am
You can tell her the game now has its own page!
http://www.smspower.org/Homebrew/FairyForest-SMS
  View user's profile Send private message Visit poster's website
Revo
  • Guest
Reply with quote
Post Posted: Sat Aug 05, 2017 9:55 am
I've problems to run this game on Emulicious and MEKA.
 
  • Joined: 05 Jul 2017
  • Posts: 67
  • Location: Cornwall, United Kingdom
Reply with quote
Post Posted: Sat Aug 05, 2017 11:24 am
Revo wrote
I've problems to run this game on Emulicious and MEKA.

I can run it in OpenEMU but it has graphical corruption in Emulicious.

  View user's profile Send private message Visit poster's website
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Post Posted: Sat Aug 05, 2017 12:14 pm
Thanks for the comments folks. The bug reports are helpful. I suppose I should have mentioned that it seems to run best in Fusion 3.64. Meka was used early on to look at values in RAM but I don't think I did a full play through in it. MasterEMU on my phone seems to do okay as well.

As for the graphics issues, they were really bad in Fusion and then I played around with how the sprite table is organized which made it better. There is a description of this I think in the source code.

Anyway, thanks again for the comments/bug reports.
  View user's profile Send private message
  • Joined: 01 Aug 2012
  • Posts: 322
  • Location: Porto, Portugal
Reply with quote
Post Posted: Sat Aug 05, 2017 2:57 pm
from me (testing on ubuntu 17.04), it is working fine on fusion and emulicious, but i have no idea why it doesn’t work on mame/mess and mednafen (and from mame/mess, the behaviour between sms and sg1000-mark3 seems quite different) - i guess perhaps it’s great trying there?

anyway, i have great expectations seeing more games coming from the team! ;)
  View user's profile Send private message Visit poster's website
  • Joined: 01 Aug 2012
  • Posts: 322
  • Location: Porto, Portugal
Reply with quote
Post Posted: Sat Aug 05, 2017 3:03 pm
@matt , i think @haroldoop started to develop something like Scratch targeting SMS - i think it’s posted somewhere in this forum, i can’t remember where
  View user's profile Send private message Visit poster's website
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Post Posted: Sat Aug 05, 2017 4:05 pm
@nitrofurano Thanks for the testing data. I keep a log of these issues and if I can ever reduce my professional workload I would love to release some bug fixes. My daughter is thrilled that folks are playing it by the way; she is sketching out some new ideas as we speak.
  View user's profile Send private message
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Post Posted: Sat Aug 05, 2017 4:12 pm
@matt thanks for the tip on scratch. My kid wants to try it and perhaps she will use it to prototype/implement some of her ideas.
  View user's profile Send private message
  • Joined: 25 Feb 2006
  • Posts: 863
  • Location: Belo Horizonte, MG, Brazil
Reply with quote
Post Posted: Sat Aug 05, 2017 6:38 pm
nitrofurano wrote
@matt , i think @haroldoop started to develop something like Scratch targeting SMS - i think it’s posted somewhere in this forum, i can’t remember where


That would be Blockly-Z80: https://github.com/haroldo-ok/blockly-z80
  View user's profile Send private message Visit poster's website
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Post Posted: Sat Aug 05, 2017 6:46 pm
@haroldoop That is amazing! Maybe my little one would like that too.
  View user's profile Send private message
  • Joined: 28 Jan 2017
  • Posts: 539
  • Location: Málaga, Spain
Reply with quote
Post Posted: Sat Aug 05, 2017 7:30 pm
Only fails in emulicious if vdp constraints emulation is turned on. So i guess it should not work on real machines. But it is perfectly playable in inaccurate emulators (the most of them)
  View user's profile Send private message
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Post Posted: Sat Aug 05, 2017 7:36 pm
eruiz00 wrote
Only fails in emulicious if vdp constraints emulation is turned on. So i guess it should not work on real machines. But it is perfectly playable in inaccurate emulators (the most of them)


Makes sense to me. I should develop using emulicious with realistic vdp emulation in future projects. Part of me had a sneaky suspicion that it would be awful on original hardware. Thanks for the info.
  View user's profile Send private message
  • Joined: 05 Jul 2017
  • Posts: 67
  • Location: Cornwall, United Kingdom
Reply with quote
Post Posted: Sat Aug 05, 2017 10:02 pm
haroldoop wrote
nitrofurano wrote
@matt , i think @haroldoop started to develop something like Scratch targeting SMS - i think it’s posted somewhere in this forum, i can’t remember where


That would be Blockly-Z80: https://github.com/haroldo-ok/blockly-z80

Awesome! Nice work.
  View user's profile Send private message Visit poster's website
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Post Posted: Sun Aug 06, 2017 2:05 am
@matt @haroldoop so my 8 year old is loving scratch and she is excited about blockly for z80. Thanks for sharing those resources.
  View user's profile Send private message
  • Joined: 17 Nov 2015
  • Posts: 97
  • Location: Canada
Reply with quote
Post Posted: Sun Aug 06, 2017 2:19 am
haroldoop wrote

That would be Blockly-Z80: https://github.com/haroldo-ok/blockly-z80


Harold that is pretty awesome. I may try to do something with that some day.
  View user's profile Send private message Visit poster's website
  • Joined: 01 Feb 2014
  • Posts: 844
Reply with quote
Post Posted: Sun Aug 06, 2017 7:11 am
Very nice game. It's fairy dust shooting mechanic needs some getting used to, though, and there are quite a few bugs.

I played through the first two forests without problems, but in the third one, the game somehow got stuck between two screens during the transition. The fairy just wouldn't reappear on either side and I couldn't do a thing except flipping between the two adjacent screens by pressing the d-pad. Bummer, I was looking forward to seeing what the ending would be.
  View user's profile Send private message
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Post Posted: Sun Aug 06, 2017 3:03 pm
@Kagesan thanks for playing. I agree that it is buggy; I was joking with someone that the list of known bugs is longer than the full text of the dead sea scrolls. Sadly, we were forced to release now since in a couple of weeks my life will be on hold until April. The bug you describe is a known issue. Thanks again.
  View user's profile Send private message
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Post Posted: Mon Aug 07, 2017 7:34 pm
So I have taken note of the bugs folks have pointed out and I got some tips as well via other channels. I am working on some bug fixes and hopefully will re-release once I have the game working a bit better.
  View user's profile Send private message
  • Joined: 05 Sep 2013
  • Posts: 3756
  • Location: Stockholm, Sweden
Reply with quote
Post Posted: Tue Aug 08, 2017 7:56 am
Nice work!
A couple of questions:
is the 'bullet' supposed to follow the fairy's facing direction?
is the collision with the flowers supposed to work only when coming from above them?
  View user's profile Send private message Visit poster's website
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Post Posted: Tue Aug 08, 2017 12:44 pm
sverx wrote
Nice work!
A couple of questions:
is the 'bullet' supposed to follow the fairy's facing direction?
is the collision with the flowers supposed to work only when coming from above them?


The bullet is supposed to change directions. I made it that way to allow you to hook it around.

The collision with the flowers is an artifact of how it works and was not really intentional. That said, I know why it happens.
  View user's profile Send private message
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Post Posted: Tue Aug 08, 2017 8:31 pm
Again, thanks for all the comments and tips regarding the bugs. I have fixed some of the bugs and it works a lot better now. The main issues that have been addressed are:

1) The game runs in Emulicious even with VDP constraints enabled; there still is some sprite weirdness but it isn't completely messed up now.
2) A halt has been used to replace a primitive delay function I wrote in the event loops. This has made the music stay at the same tempo regardless of the workload placed upon the system.

Anyway, thanks for the help.
Fairy Forest v1.0.1.zip (196.49 KB)
Updated version of the game

  View user's profile Send private message
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Post Posted: Wed Aug 09, 2017 7:17 pm
Hello everyone. I think I have also figured out the strange screen transition bugs where the fairy either teleports to some other screen or gets lost altogether; I have fixed it and now we are at version 1.0.2. Sorry for all the updates.
Fairy Forest v1.0.2.zip (196.76 KB)
last update before I have to get back to my dissertation

  View user's profile Send private message
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Bug fixes to Fairy Forest homebrew
Post Posted: Sat Aug 12, 2017 12:44 am
I would like to take the opportunity to thank everyone who reported bugs and made suggestions to resolve some of Fairy Forest's issues; I learned a lot from the community during the process. I have spent some time now fixing up some bugs and I feel the new version is a large improvement. I have been able to resolve a number of issues including the changing tempo of the music and the screen transition issues. Anyway, thanks again for everyone's help.
Fairy Forest v1.0.2.zip (196.76 KB)
Version 1.0.2 with source code

  View user's profile Send private message
  • Joined: 29 May 2015
  • Posts: 18
Reply with quote
Post Posted: Thu Aug 17, 2017 7:02 pm
This is a really classic feeling game, like an Atari 2600 game with SMS power. Congrats :D
  View user's profile Send private message
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Post Posted: Thu Aug 17, 2017 7:46 pm
Thanks smokemonster. It was a lot of fun to make and I think my kid has decided she wants to makeep a game. That last part is a big win for me!
  View user's profile Send private message
  • Joined: 19 Jan 2018
  • Posts: 1
Reply with quote
Post Posted: Fri Jan 19, 2018 10:25 pm
The current version of the game (1.0.2) does not work on Mednafen, but I have found the fix, which is in the VDP registers.

Simply sending the register values to the VDP in sequence is not enough. You need to send first the value and then the register number with the most significant bit set. Also, some registers have wrong values, including ones referring to addresses and the line counter.

You need to change from:

VdpData:
.db %00010110 ; VDP register $00 (mode control 1)
.db %10100000 ; VDP register $01 (mode control 2)
.db $38       ; VDP register $02 (name table base address)
.db $c0       ; VDP register $03 (colour table base address)
.db $00       ; VDP register $04 (background pattern generator base address)
.db $3f       ; VDP register $05 (sprite attribute table base address)
.db $00       ; VDP register $06 (sprite pattern generator base address)
.db $00       ; VDP register $07 (overscan/backdroup colour)
.db $00       ; VDP register $08 (background x-scroll)
.db $00       ; VDP register $09 (background y-scroll)
.db $00       ; VDP register $0a (line counter)
VdpDataEnd:


to:

VdpData:
.db %00010110, $80 ; VDP register $00 (mode control 1)
.db %10100000, $81 ; VDP register $01 (mode control 2)
.db $FF, $82       ; VDP register $02 (name table base address)
.db $FF, $83       ; VDP register $03 (colour table base address)
.db $FF, $84       ; VDP register $04 (background pattern generator base address)
.db $FF, $85       ; VDP register $05 (sprite attribute table base address)
.db $00, $86       ; VDP register $06 (sprite pattern generator base address)
.db $00, $87       ; VDP register $07 (overscan/backdroup colour)
.db $00, $88       ; VDP register $08 (background x-scroll)
.db $00, $89       ; VDP register $09 (background y-scroll)
.db $FF, $8A       ; VDP register $0a (line counter)
VdpDataEnd:
  View user's profile Send private message Visit poster's website
  • Joined: 14 Aug 2016
  • Posts: 27
  • Location: Canada
Reply with quote
Thanks
Post Posted: Fri Jan 19, 2018 10:34 pm
M-374 LX wrote
The current version of the game (1.0.2) does not work on Mednafen, but I have found the fix, which is in the VDP registers.

Simply sending the register values to the VDP in sequence is not enough. You need to send first the value and then the register number with the most significant bit set. Also, some registers have wrong values, including ones referring to addresses and the line counter.

You need to change from:

VdpData:
.db %00010110 ; VDP register $00 (mode control 1)
.db %10100000 ; VDP register $01 (mode control 2)
.db $38       ; VDP register $02 (name table base address)
.db $c0       ; VDP register $03 (colour table base address)
.db $00       ; VDP register $04 (background pattern generator base address)
.db $3f       ; VDP register $05 (sprite attribute table base address)
.db $00       ; VDP register $06 (sprite pattern generator base address)
.db $00       ; VDP register $07 (overscan/backdroup colour)
.db $00       ; VDP register $08 (background x-scroll)
.db $00       ; VDP register $09 (background y-scroll)
.db $00       ; VDP register $0a (line counter)
VdpDataEnd:


to:

VdpData:
.db %00010110, $80 ; VDP register $00 (mode control 1)
.db %10100000, $81 ; VDP register $01 (mode control 2)
.db $FF, $82       ; VDP register $02 (name table base address)
.db $FF, $83       ; VDP register $03 (colour table base address)
.db $FF, $84       ; VDP register $04 (background pattern generator base address)
.db $FF, $85       ; VDP register $05 (sprite attribute table base address)
.db $00, $86       ; VDP register $06 (sprite pattern generator base address)
.db $00, $87       ; VDP register $07 (overscan/backdroup colour)
.db $00, $88       ; VDP register $08 (background x-scroll)
.db $00, $89       ; VDP register $09 (background y-scroll)
.db $FF, $8A       ; VDP register $0a (line counter)
VdpDataEnd:


Thanks so much for the data. It's pretty cool how homebrew folks take your code, run it, find bugs, find out where the bugs come from and post the results. Thanks again.
  View user's profile Send private message
Reply to topic



Back to the top of this page

Back to SMS Power!