Category Archives: PSP

DSP Update – 19th January

Its that time again!

This last week I spent lots more time balancing River TD, and I’m getting quite happy with it finally.

While doing this (I’ve played River TD so many damn times… so so many times) I found some small rendering issues and cleaned them up.

Here is the list of changes as of Friday night:

  • Air enemies render on top of land enemies.
  • Health bar renders on top of everything (Before lasers would stop you seeing the health bar).
  • Refactor some code so that the [New Game] button works.
  • Fix selling laser type towers (Was crashing the game)
  • Ability to make enemies loop when they hit the end of their path, so you have to eventually kill them.
  • Always give the same amount of points for killing an enemy (Previously it decreased the longer an enemy was alive).

But of course… There is more 😉 I spent all Saturday (and another hour today) adding pathfinding, just like the flash based Desktop Tower Defence.

Maps can now specify pathfinding and enemies will work out their own way around your towers! This leads to all sorts of cool new map ideas, I have one up my sleeve 🙂

Here is a screenshot from the test level showing it off:

DSP R304

DSP R304

The plan for the next week is to catch up on my sleep and maybe add another new feature to the engine before I start work on another level. 🙂

DSP Update – 12th January

Nothing much to report this week….

I put all of the enemies in order for the level and have begun balancing them, the rough cut I have so far is looking fairly good, if maybe a little difficult.
Over the next week I’ll be playing and replaying until I am happy with the difficulty.

I have a massive spreadsheet for enemies and another one for towers.
One of the things I’ve found with the current development version is that there is no reason to build anything except laser towers.. So I’m trying to combat this, which is turning out to be a lot more difficult than I expected!

DSP Update time!

Its time for another weekly(ish) update on DSP progress.
The last week I have been mainly focused on content creation.

  • Change XML so that levels can have multiple maps, similar to Vector TD
  • Surreal contributed 3 new maps for River TD, so you can fight on different (harder!) rivers.
  • River TD now has 46 enemies, all hand crafted by myself.
  • Fixed 100% CPU usage in windows.
  • Range ring improvements – Draw them Anti-Aliased, don’t show both when upgrading if you don’t need to.
  • Graphics to go behind the top numbers in mouse_ui
  • Gave the window a title in windows/linux builds 🙂
  • Added health bars to enemies
  • Fixed towers not shooting on long maps, or shooting off map on short ones
DSP R249

DSP R249

Another DSP Update

Since Marcel complained, here is an update 😛

I’ve added laser weapons and replaced the harpoon gun with a laser instead.

I’ve reduced the size of RiverTD to 480×480 px so that it will fit perfectly on the MouseUI. I plan to redo the Gamepad/PSP interface so it will fit on there too.

I’ve added a fast forward feature, so you can zip through the waves.

Added the ability to sell towers.

Added descriptions to tower upgrades.

Made the existing tower descriptions more descriptive.

And a screenshot:

DSP R196

DSP R196

The Gamepad (PSP) UI is broken at the moment, I plan to rejiggle it so that it is more like the Mouse UI, so I’ll fix it then.

DSP Progress (With Screenshots!)

So progress has been coming along fairly well on DSP.

I’ve moved the text renderer over to a variable width font, which looks much nicer and gives more room for useful text.

The Mouse UI is coming along quite well, the core game can be played through including tower research, wave details, etc.
The only bits missing for an individual level to be properly playable is the ability to upgrade/sell towers, which I’m currently working on.

Here is a totally uninteresting looking screenshot of the current mouse UI:

DSP R118 Mouse UI

DSP R118 Mouse UI

The Gamepad (PSP) UI has fallen into disarray a bit. I plan to clean it up and port over some of the nice UI improvements from the Mouse UI to bring it up to scratch.


DSP R118 Gamepad UI

Anyway, I just felt like posting an update since I’ve come down with a cold and am having difficulty coding 🙂

Once I get the Mouse UI to a properly playable state, I’ll post a build for windows/linux/mac (and update the sourceforge SVN) which will let level devs (finally) try out the XML based level format.

CTorrentPSP – Torrent client for PSP (obv!)

ey All, Neoflash time again!
This time I’m entering a torrent client for PSP, because I thought we need one.
Turns out we don’t really need one, but it is nice to have it anyway 🙂

Download CTorrentPSP Executable
Download CTorrentPSP Source

Read the README.PSP for more details and the list of bugs 😉
Delete the resources/splash.png to get rid of the splash screen.
Let me know what you download with it! lol! 🙂

Developed under M33 3.90-2, using PSPLINK (of course), run under 3.XX Kernel. 1.5 not supported (Use the code, you can make it work on 1.5 if you want it to)

Baby Shaker 1.0

Here is a game I made for the Neoflash PSP Motion Kit, because it is sooo damn cool.

Baby Shaker 1.0
Download Baby Shaker 1.0


Baby Shaker 1.0
Coded by danzel (danzelatlocalhost.geekdotnz)
Images via google image search.
Requires a Neoflash PSP Motion Kit

The goal of the game is to shake the baby without getting seen.
If you are seen shaking the baby, you lose your points.
You win when you get 2000 points.

DSP on

DSP has finally arrived on!
And its blog:
This means the source code is now available, etc etc etc.

I’ll get some documents up on the source layout and such things as I have time over the next week.

As I have said in the DSP News:

Its been a long wait but it was worth it!
The current release (1.1a) has been uploaded and the SVN repository has been imported.

I’ve decided on GPL v3 for the code, and licensed the existing art under a creative commons license (see readme.txt)

I am keen to have more levels hosted in the SVN, but only ones which are CC licensed.
Only levels included in the SVN will be in the official releases, but there will be a wiki page dedicated to level links.

The wiki pages will slowly show up over the next few days as I import them from various sources.

DSP Status

I’ve applied for a sourceforge site for DSP. It is a takeover from another project using ‘dsp’ as its name already, they haven’t used the project at all however, (it has been idle for 2 years,) so I shouldn’t have any trouble getting the name.
I’ve done some minor improvements since the last release including:
– Show splash/speed when > 0
– Show tower stats when maxed.
– Very minor rendering tweaks.

I’ve also been researching improving the framerate and trying various different techniques.
Currently DSP renders at 30fps on the PSP, dropping to 20 if you are on the ingame-menu when between waves (text rendering is slow by the looks).
I’ve tried converting the rendering engine from immediate mode to use vertices with glDrawArray, this gave no noticable FPS differences.
During this testing I discovered that certain textures of the same size render faster than others.
Looking into this further (including the pspgl source) It would appear to be that PSPGL doesn’t copy/move textures between GE-Memory and System-Memory, so if your texture ends up in system memory you get slower render speed and nothing you can do about it 🙁
Will need to do more research into this including a debug build of PSPGL to find out what is really happening, but that is my current thoughts.
It may be possible to fix this in PSPGL or alternatively switch to using GU for rendering on PSP instead, we will see.
Not something DSP needs as of yet since the framerate stays high even with huge waves with lots of towers firing at them, but something new, fun and interesting to work on at some stage 😉

I’ve also created a draft XML file for the next level format: http://OFFLINEZIP.wpsho/dsp/level_draft_1.xml
This is a proposed replacement for the current level.txt.
Switching to XML for the file formats will give numerous advantages:
– Files become alot more self explanatory (no more, “what is line 5 again?”)
– Better backwards compatibility in the future.
– etc… >_>
Please give it a quick look over and offer any suggestions you may have (especially you Shazz!)

I will also switch enemy.txt / tower.txt to XML files, but haven’t drafted any up yet.

Another interesting thing I’m thinking about adding is the ability to run levels from within zip files, this will make for much faster copying of levels to your PSP.

Thats enough news for now.

Update, will use this post for general ‘next gen’ XML file format discussion.
level.xml changes:
– Capitalize all attributes.
– Add ‘Radius’ to waypoints.
– Change “Name” attribute to “Folder”
– Change Path.flags to be seperate attributes (Boss, SaveTheHouse, UpgradePoint, all default to false)
– Add Enemy.Multiplier, makes old enemies new again! 😉
I’ve also added an enemy and tower draft, no big changes in there yet.

Draft 3
– Add Level.LevelSprite (includes changeable Width, Height)
– Enemy has levels, the first one is used by default unless specified in Level.Waves.Wave.Enemy->Level (Which replaces Multiplier)
– Specify Sprites/Sounds in XML, allows different amounts of Frames for each.
– Add a “Leave Level” sound.
– Add Capability (Hit Ground/Air, Slows), Replaces old tags
– Add Sprites (includes turret position)
– FireSprite (shown when shoots).


Draft 4 (final)

– UpgradePoint is now an integer everywhere.
– InterestLevel/Live can now cost upgrade points.
– Add StartSound to Wave.
– Add Win/Lose (With Sound and Sprite)
– Add Weakness (take more/less damage from certain towers)
– Add PlacementSound
– Add SellAmount to Level
– Add Poison:Damage/Length to Level
– Move Capability.Slow to Level.SlowLength/SlowAmount
– Change to , has supporting attributes for shot animation etc.


Still missing:
– Music, Special music for boss waves.
Smoke trail ShotType.

Missing but may not make it:
Add min range (to define a target reachable band instead of a target reachable disk)


Here is the current DSP TODO list, if you think of something missing then please tell me 🙂
Mainly engine changes, going to leave the level making up to you guys 😉

1.1 release should be next 1-2 days.
Update: Move more things to 1.1, hopefully can get it all in 🙂
Things in italics are done.

1.1 (AKA: Things that should of been in the first release)
Can’t play again if you quit in the middle of a wave bug
Difficulty multiplier
If level folder has its own pngs (acceptcampaign, cursor, sidebg_bot, sidebg_top, sidebg_selector, map_selector, font, fontbold, coin, tree) use them
Show wave count
Fix crash bug with windows endlines.
Rebalance ‘river td’, add a few more waves.
Tell how to upgrade tower
Fix Points
Better PSP controls.
Render Range rings when upgrading towers.
When selecting a Tower to buy, display all details parameters (range, time to fire, damage…)
Release Level making assistant tool (Defines Buildable map and Wave path)
“Save the house” : if ONE enemy reaches one given point, you loose

Maybe 1.1
Destroy/Sell tower
Buy Lives
Release source code
Load enemies only when needed.
Skinnable game over / you win.
Fix tower placing to round better instead of truncating.
Show tower stats on mouse over
Deactivate menu (unload sprites, more memerysz) before full loading the level
Credits Screen
In-game sounds (Wav) for “Wave start”, “tower settlement”, “Game over” & “End game”
Draw all tower target range when settling a new tower (to see overlaps)
Better PNG size (wxh) checks (=> display error) when loading else it freezes
Fix InGame Menu, should return to previous state.

Nearish Future
High Score screen
Possibility to define multiple waves with or not different routes, and with their own starttime
In-game music (mp3, mod)
Draw lifebar (option) below each enemy
Further Shot Types for Shot engine.
– Missile particle trail (option)
Mini-image for campaign on first menu
Savedata (player name, scores, levels, stats…)
XML level, ennemy, tower configuration files (TinyXML is C++/OS independant)
– Tilemap based level definition for easy level construction (TileStudio)
– Bigger maps than 32×32
Define where is the turret roration center (X,Y) if not the middle, as the Starcraft Goliath turrent is on top of the legs, not on the middle
Turrent animation SpriteSheet when shooting
Configurable SpriteSheet frames (sometimes 4 frames are not enough…)
Make Slow change with tower levels (time and length of effect)
GlBits3 (More efficient rendering, more framerate!)
– Investigate changing render functions to take floats instead of ints.
If you use an ordered insert into the instances lists, then when rendering it will be more efficient (render same sprite all at same time).
– Towers and shots can use this, enemies not really as we rely on their ordering

Further Future
Make menu hideable.
Online score tracking! / Level downloading
Render ground enemies THEN flying enemies.
Levels in Campaign.
– Code to jump to level X
Wave paths :
– Fixed (as you did path with step points)
– Curve (sin, cos)
– Collision detection (enemies will turn right is a wall is in front of them)
Add min range (o define a target reachable band instead of a target reachable disc)
Add “Miss ratio” (how often the shot missed the target)