Author Topic: Touhou DS!  (Read 70274 times)

Touhou DS!
« on: May 07, 2009, 08:29:12 PM »
Touhou... for DS!
http://www.weeaboo.nl/index.php?cat=8
Made by anoNL

Ahem. Anyways it seems you can make your own games with this.
The manual can be found here: http://www.weeaboo.nl/article/thds/manual-0.8/

Might be a bit pointless if you don't have a DS + flashcard, but I'm sure some people here do have those things.

First impressions on the gameplay. Control-wise it feels fine to me, it allows you to set your own controls and you only need 3 buttons so it's not hard to get a comfortable configuration. Play the demo a few times was pretty fun. The main issues are the split screen of the DS, and how dying works.

There doesn't seem to be a "blind spot" between the two screens. However it doesn't feel awkward when you try to dodge something while between the two screens. The angles of bullets seems to get changed a bit or something, I'm not quite sure. It a bit like looking through water. Alse fast bullets are hard to see coming since you can't precicely judge angles when bullets are on the top of the screen and the bottom screen isn't very big and doesn't give much time to react.
That said, I think this problem can be remedied by a bit of creative design when making patterns that work around this hinderance.

The bigger problem actually is how dying works. When you get hit, you mearly flash and lose one life. If you hit bomb too late, then you end up losing a life AND a bomb. There actually IS deathbomb implemented, however if you miss this window then you face the mentioned concequences. Not only that, but if you do get off the deathbomb, you lose two bombs ala IN, which is pretty stupid since it's completely different from IN in that IN practically pauses the game when you get hit while you barely even notice when you get hit in this game.
There might be a working for this if you play with the character scripts for a bit but the current implemented characters are messed up like this.

Other than those issues it's actually quite fun. The controls feel fine and have good control (maybe not if you have a DS lite though), the sound and graphics are pretty good (okay they're stolen from ZUN but the point is the DS doesn't mess them up to much), and most of all I think it has some potential. Of course wether or not it really has potential depends more on the code itself so now I'll move onto that.


Since the majority of this board is devoted to danmakufu, I'll mostly be comparing thDS to danmakufu. The language seems very simple compared to danmakufu. As in like, very simple.

Going by the manual, it seems (keep in mind I'm not a very experienced programmer so I could be wrong on some aspects) all you do is define a bunch of objects and toss them around. You can define something to be one of three things in this game. A spell, an object, or a boss. Enemies and bullets both count as objects. Essentially you have to define each bullet you make with this program, which seems kinda tedious compared to danmakufu. So if you want to make a single shot, you have to define an object, and then give it a bunch of commands. Then you can fire that bullet at any time you want. There MIGHT be a way to loop (I know there is a _loop function but I don;t know how much it can do) so that you can create patterns easily. I'm not sure since I haven't played around with it yet. I advise looking through the manual and function lists to get a better idea how it works.

On non-gameplay aspects, it supports a variety of things such as multiple stages, alternate paths, talking cutscenes etc. These things are all relatively simple to implement, however the image type they use is a bit odd and I don't know much about it (.dta). Creating caharacters is significantly easier than danmakufu since all you have to do basically is set some stats and make some images that are the right size. Of course the downside of this is you probably can't create really unique characters (but hey no one likes those anyways right? :V)

Oh yea one last issue. There IS some slowdown when there are too many bullets on the screen. I think DS lite has a slighty better processer and maybe won't lag as much, but there is one attack in the demo that fills the screen with bullets and lags my DS. Nothing else lagged though.


Since I have a DS and the language seems easier to work with than danmakufu, I be messing around with it a bit. Also, If anyone else wants to try coding stuff but doesn't have a DS or flashcard I could test stuff for you :V.
« Last Edit: May 07, 2009, 11:54:24 PM by Suikama »

Gpop

Re: Touhou DS!
« Reply #1 on: May 07, 2009, 08:38:24 PM »
Oh so you're going to try to improve on the game?

If the language is that simple I might take a look myself and see what I can do as well.

Re: Touhou DS!
« Reply #2 on: May 07, 2009, 08:46:38 PM »
Oh so you're going to try to improve on the game?
You say it as if I was going to improve the language :V

You can make your own scripts for this game just like danmakufu. The game it comes with is only a demo.


Oh yea. There is one problem that can't really be fixed. Testing :<. It's even more of a pain than normal testing since you have to keep transfering the memory stick from your DS to computer :<
« Last Edit: May 07, 2009, 10:10:16 PM by Suikama »

Re: Touhou DS!
« Reply #3 on: May 07, 2009, 11:38:09 PM »
Touhou... for DS!
http://www.weeaboo.nl/index.php?cat=8
Made by some guy who is not me.

I'm that 'some guy'

The bigger problem actually is how dying works. When you get hit, you mearly flash and lose one life. If you hit bomb too late, then you end up losing a life AND a bomb. There actually IS deathbomb implemented, however if you miss this window then you face the mentioned concequences. Not only that, but if you do get off the deathbomb, you lose two bombs ala IN, which is pretty stupid since it's completely different from IN in that IN practically pauses the game when you get hit while you barely even notice when you get hit in this game.

I agree, It'll be fixed in the next release (which will be finished shortly).


Random stuff:

_loop is just something you add to the end of a spell that makes it repeat a fixed number of times (or infinitely).

.dta/.pal files are just raw bitmaps in one of the DS's natively supported formats. The specific format is usually specified in another file, for example in marisa.ini you have the line:
texture=tex_marisa:A3I5
which corresponds to 3-bit alpha + a 5-bit palette index per pixel.

It's possible to test on the PC if you (un)comment a few lines in src/arm9/Makefile and recompile the program (doesn't require programming knowledge). I'll write up a step-by-step instruction tomorrow.

Re: Touhou DS!
« Reply #4 on: May 07, 2009, 11:57:07 PM »
I'm that 'some guy'
Oh hey :V
I agree, It'll be fixed in the next release (which will be finished shortly).


Random stuff:

_loop is just something you add to the end of a spell that makes it repeat a fixed number of times (or infinitely).

.dta/.pal files are just raw bitmaps in one of the DS's natively supported formats. The specific format is usually specified in another file, for example in marisa.ini you have the line:
texture=tex_marisa:A3I5
which corresponds to 3-bit alpha + a 5-bit palette index per pixel.

It's possible to test on the PC if you (un)comment a few lines in src/arm9/Makefile and recompile the program (doesn't require programming knowledge). I'll write up a step-by-step instruction tomorrow.

So you're still working on this? Awesome.

Quick question. I was fooling around, copy and pasting some of the stage 1 demo code (namely the boss and one large fairy) and changing some names and stuff. However when I run it, I get a flashing chen as a boss instaed of Cirno. Also the icicles were invisible.

Re: Touhou DS!
« Reply #5 on: May 08, 2009, 09:07:29 AM »
Quick question. I was fooling around, copy and pasting some of the stage 1 demo code (namely the boss and one large fairy) and changing some names and stuff. However when I run it, I get a flashing chen as a boss instaed of Cirno. Also the icicles were invisible.

You're missing the line "tex_boss=tex_boss_cirno:A3I5" in your stage*.ini or the tex_boss_cirno.dta/.pal files in the stage folder. Basically, the game can't find the correct boss texture, so it uses the default (which has a picture of Chen in the top-left corner and nothing else).

--------------------------------------------

Manual for TouhouDS 0.8.1

^ The manual for 0.8.1 has a section about testing stages/characters in an emulator.
« Last Edit: May 15, 2009, 10:11:19 AM by anoNL »

Re: Touhou DS!
« Reply #6 on: May 15, 2009, 10:21:16 AM »
TouhouDS v0.8.1

http://www.weeaboo.nl/index.php?aid=25



Quote
v0.8.1 2009-05-14
===============================================================================

bugfixes:
    - The score screen's scrollpane didn't start out showing the highest score.
    - The game selection on the score screen didn't work properly.
    - Fixed a memory leak in the sound manager.
    - Objects with hitbox=0 would still cause collisions.

improvements:
    - Support for multiple/selfmade download repositories
    - Deathbombing no longer requires 2 bombs and after dying there's a small
      period where bombing is disabled to avoid losing a bomb because you were
      too late trying to deathbomb.
    - Nicer character select screen
    - Added a fifth stage + small improvements to older stages
    - Added Sanae as a character

scripting language:
    - Added _for, size, drawAngle commands

Gpop

Re: Touhou DS!
« Reply #7 on: May 15, 2009, 12:28:24 PM »
Hooray playable Sanae! And Orin? I guess I'll try it out when I get home.

KomeijiKoishi

Re: Touhou DS!
« Reply #8 on: May 15, 2009, 01:27:07 PM »
I'd love to play it, but I have this "You need DLDI"-problem ( :'( ), and I have absolultely no clue how to solve it. I'm using No$Cash BTW.

Re: Touhou DS!
« Reply #9 on: May 15, 2009, 06:00:39 PM »
I'd love to play it, but I have this "You need DLDI"-problem ( :'( ), and I have absolultely no clue how to solve it. I'm using No$Cash BTW.

The regular version doesn't work in emulators: use this one.

no$gba doesn't have support for wifi or saving files though...

Re: Touhou DS!
« Reply #10 on: May 16, 2009, 01:40:34 AM »
For some reason when I shoot it clears the screen of bullets. So basically nothing can hurt me while I'm shooting.

The game also crashes when I beat it

Edit: Okay I reinstalled it and this time no screen clear glitch but it crashes contanstly
« Last Edit: May 16, 2009, 03:41:04 AM by Suikama »

Re: Touhou DS!
« Reply #11 on: May 16, 2009, 10:35:41 AM »

Re: Touhou DS!
« Reply #12 on: May 16, 2009, 07:54:47 PM »
Trying to fix the bug:
http://www.weeaboo.nl/external/TouhouDS-r109.nds
Still crashes after I beat stage 5. Top screen gives an error, a whole bunch of numbers and the music starts repeating the same 2 seconds over and over

DarkslimeZ

  • A REIMU SLIME APPEARED.
  • COMMAND?
    • Eternal Temporality
Re: Touhou DS!
« Reply #13 on: May 17, 2009, 02:09:28 AM »
If you're getting a guru meditation error, I believe it would be a good idea to say what the number next to PC is.

also, fun game~ maybe if I wasn't so lazy I'd script something, but D:

[14:12] <~BoredTSO> you need to have enough fissile material in a certain density to reach supercriticality

Re: Touhou DS!
« Reply #14 on: May 21, 2009, 07:25:20 PM »
TouhouDS v0.8.2

http://www.weeaboo.nl/index.php?aid=26



Quote
v0.8.2 2009-05-21
===============================================================================

bugfixes:
    - Game crashed after a certain number of spellcards.

improvements:
    - Decreased memory usage and memory fragmentation
    - References to spellbooks cache their results for better performance.

Re: Touhou DS!
« Reply #15 on: October 24, 2009, 02:28:07 AM »
i have an idea, i dont know if you have it implemented, but i have k noticed there is a wifi option in the game, it would be a nice thing to make a... zone or a place (im lacking on my terms of what this would be.. lol) where the players can download other versions of peoples levels for this game.. just an idea i had when i was playing this

Re: Touhou DS!
« Reply #16 on: October 24, 2009, 04:56:44 AM »
i have an idea, i dont know if you have it implemented, but i have k noticed there is a wifi option in the game, it would be a nice thing to make a... zone or a place (im lacking on my terms of what this would be.. lol) where the players can download other versions of peoples levels for this game.. just an idea i had when i was playing this

Umm Wi-Fi yeah, and also maybe some PoFV like multiplayer? idk but with wi-fi there are many options i can think of, this looks good

Re: Touhou DS!
« Reply #17 on: October 24, 2009, 08:02:34 AM »
i have an idea, i dont know if you have it implemented, but i have k noticed there is a wifi option in the game, it would be a nice thing to make a... zone or a place (im lacking on my terms of what this would be.. lol) where the players can download other versions of peoples levels for this game.. just an idea i had when i was playing this

Already possible, see: http://www.weeaboo.nl/article/thds/manual-0.8.2/
it's under "Creating a download repository"



For the next release I'm trying to get in wifi multiplayer. First co-op, maybe PoFV-style versus later (requires more changes).


Solais

  • Developer fairy
  • is working for a game developer now.
Re: Touhou DS!
« Reply #19 on: October 24, 2009, 07:00:59 PM »
Goddammit, you, YOU!! You Awesome!

Cabble

  • Ask me about my Cat.
  • Not unwilling to shank you.
Re: Touhou DS!
« Reply #20 on: October 24, 2009, 07:43:38 PM »
Ok so how do you get this onto the DS?
I had a teacher who used to play radiohead during class once.

ONCE.

Re: Touhou DS!
« Reply #21 on: October 24, 2009, 07:45:41 PM »
Ok so how do you get this onto the DS?
You'll need a flashcart of some kind

devouringone3

Re: Touhou DS!
« Reply #22 on: November 05, 2009, 02:40:41 AM »
Hello M. Weeaboo, I've been downloading/following your project on every subversions since number 0.3.1 and I totally love it... even though I have no reason of playing that often, everytime I beat the small game with a different character it makes me think of how close it is to the experience of playing Touhou on a PC (all the same features, just a bit downscaled to fit on two DS screens) and how better it would be if people would get into making levels... I think they could be easily inspired by all the stuff ZUN've already done for the PC.

Since the month of may I don't think I had seen any updates (at least, not on your website), but now I like seeing you here again...

So yeah, thanks... I still need to try the other stuff you've done for the DS and I want to make myself some cool touhou DS levels.

Re: Touhou DS!
« Reply #23 on: December 02, 2009, 10:48:01 AM »
Progress:

Basic wifi connections work (UDP & TCP). Still need to broadcast a bunch of information (damage/player death/score/etc.), but at least movement works already. After that I've got a bunch of lovely refactoring ahead to make it possible to have multiple player scripts running at the same time.


I've also been playing around with LUA as a secondary/replacement scripting language. It's 5x~10x slower, but it gives much more freedom to make interesting scripts. I made a TH11 Marisa B to test how easy it would be to create an advanced player script:

Code: [Select]
SA_Marisa_B = {opts={}, mode=0, switchCooldown=0}

function SA_Marisa_B:init()
self.lastX = self:getX()
self.lastY = self:getY()

for n=1, 4 do
self.opts[n] = Sprite.new(Nil, SpriteType.SPRITE_default, self.lastX, self.lastY)
self.opts[n]:setVisible(false)
end
end

function SA_Marisa_B:update()
self:onModeChanged()

while true do
local x = self:getX()
local y = self:getY()
local level = self:getAttackLevel()

for n=1, 4 do
self.opts[n]:setVisible(n <= level)
end

local focusPressed = self:isButtonPressed(Keys.VK_focus)
local firePressed = self:isButtonPressed(Keys.VK_fire)

if self.switchCooldown > 0 and focusPressed and firePressed then
self.mode = self.mode + 1
if self.mode > 4 then
self.mode = 0
end

self.switchCooldown = 0

self:onModeChanged()
end

if focusPressed or firePressed then
self.switchCooldown = self.switchCooldown - 1
else
self.switchCooldown = 2
end

if self.mode == 1 then
self.opts[1]:setPos(x-8,  y+24)
self.opts[2]:setPos(x+8,  y+24)
self.opts[3]:setPos(x-24, y+24)
self.opts[4]:setPos(x+24, y+24)
elseif self.mode == 2 then
self.opts[1]:setPos(x-16, y-16)
self.opts[2]:setPos(x+16, y-16)
self.opts[3]:setPos(x-16, y-16)
self.opts[4]:setPos(x+16, y-16)
elseif self.mode == 3 then
self.opts[1]:setPos(x, y-40)
self.opts[2]:setPos(x, y+40)
self.opts[3]:setPos(x, y-20)
self.opts[4]:setPos(x, y+20)
elseif self.mode == 4 then
self.opts[1]:setPos(x,    y+40)
self.opts[2]:setPos(x-16, y+24)
self.opts[3]:setPos(x+16, y+24)
self.opts[4]:setPos(x,    y+24)
else
self.opts[1]:setPos(x-24, y-8)
self.opts[2]:setPos(x+24, y-8)
self.opts[3]:setPos(x-24, y+8)
self.opts[4]:setPos(x+24, y+8)
end

yield(2)
end
end

function SA_Marisa_B:onModeChanged()
local dx = self.mode * 8
local dy = 0

if self.mode >= 3 then
dx = dx - 24
dy = 8
end

for n=1, 4 do
self.opts[n]:setImage(TextureType.TEX_player, 96 + dx, 96 + dy, 8, 8)
end

if self.mode == 0 then
self.opts[1]:setAngle(6)
self.opts[2]:setAngle(-6)
self.opts[3]:setAngle(6)
self.opts[4]:setAngle(-6)
elseif self.mode == 1 then
self.opts[1]:setAngle(-8)
self.opts[2]:setAngle(8)
self.opts[3]:setAngle(-16)
self.opts[4]:setAngle(16)
elseif self.mode == 2 then
self.opts[1]:setAngle(-20)
self.opts[2]:setAngle(20)
self.opts[3]:setAngle(-28)
self.opts[4]:setAngle(28)
elseif self.mode == 3 then
self.opts[1]:setAngle(128)
self.opts[2]:setAngle(-128)
self.opts[3]:setAngle(-128)
self.opts[4]:setAngle(128)
elseif self.mode == 4 then
self.opts[1]:setAngle(256)
self.opts[2]:setAngle(256-16)
self.opts[3]:setAngle(256+16)
self.opts[4]:setAngle(256)
end

end

function SA_Marisa_B:fire()
local x = self:getX()
local y = self:getY()
local level = self:getAttackLevel()
local pow1 = self:getAttackPower1()
local pow2 = self:getAttackPower2()

self:fire1(x, y, pow1, 0)
for n=1, 4 do
local opt = self.opts[n]
if opt:isVisible() then
self:fire2(opt:getX(), opt:getY(), pow2, opt:getAngle())
end
end

yield(6)
end

function SA_Marisa_B:fire1(x, y, pow, angle)
local sprite = Sprite.new(Nil, SpriteType.SPRITE_playerShot, x, y)
sprite:setImage(TextureType.TEX_player, 0, 104, 24, 24)
sprite:setHitRadius(10)
sprite:setPower(pow)
sprite:setAngle(angle)
sprite:setSpeed(12)
end

function SA_Marisa_B:fire2(x, y, pow, angle)
local m = 24
if self.mode == 1 then m = 48 end
if self.mode == 2 then m = 0  end
if self.mode == 3 then m = 72 end
if self.mode == 4 then m = 24 end

local sprite = Sprite.new(Nil, SpriteType.SPRITE_playerShot, x, y)
sprite:setImage(TextureType.TEX_player, m, 104, 24, 24)
sprite:setHitRadius(10)
sprite:setPower(pow)
sprite:setAngle(angle)
sprite:setSpeed(12)
end

Test ROM for emulators:
http://www.mediafire.com/?4qfq2jv5jnw

8lue Wizard

  • Cobalt Magician
  • (Apparently)
Re: Touhou DS!
« Reply #24 on: December 02, 2009, 09:04:26 PM »
^What emulator was that tested on? Using iDeaS, I'm getting a libfat error when I try to start it up, and changing my DLDI settings doesn't fix it.

Re: Touhou DS!
« Reply #25 on: December 02, 2009, 09:10:06 PM »
^What emulator was that tested on? Using iDeaS, I'm getting a libfat error when I try to start it up, and changing my DLDI settings doesn't fix it.
no$gba

Re: Touhou DS!
« Reply #26 on: December 27, 2009, 08:42:30 AM »
I'm having trouble loading this into my R4. What do I need to do?

It gives me an installation Error.
« Last Edit: December 27, 2009, 09:14:56 AM by mew77 »

Re: Touhou DS!
« Reply #27 on: December 27, 2009, 10:11:37 AM »
^ that one was emulator-only

TouhouDS v0.9 beta

Quote
===============================================================================
 v0.9 2009-12-27
===============================================================================

bugfixes:
    - On-screen keyboard was broken.

improvements:
    - Added support for writing scripts in LUA.
    - Update to tools (new TextureConverter & repository creation tool).
    - Improved collision system which lifts the maxsize=64x64 restriction and
      gives a choice between line-segment and circle collision shapes.
    - Added sixth stage + new playable character.

Re: Touhou DS!
« Reply #28 on: December 27, 2009, 10:33:47 AM »
I tried to load this one: TouhouDS v0.8.2

Gave me an installation error

will your version 0.9 beta work on on R4?

Re: Touhou DS!
« Reply #29 on: December 27, 2009, 10:35:41 AM »
will your version 0.9 beta work on on R4?
I have an R4 myself, so yes.