Nintendo DS News
Powder (Build 104) (NDS Game)

POWDER is a roguelike game, which is not a port of an existing roguelike. It is built around replayability and long term ergonomics, not short term learning. Author of this piece of software is Jeff Lait.

Release notes:

The long sought after fire arrows are finally present, self-poly into an iron golem has been further nerfed, and many bugs fixed. Most notable of the bug fixes is one to correct the gender assignment of dungeon citizens.

Changes:
A method to fashion arrows from trees. (Adam Boyd)
When fire, acid, and venom balls explode it is prefixed by a definite article.
Living frosts have a higher hit die (but same hit points) which should make them more effective in combat by increasing their chance of hitting things.
Constructs, such as iron golems, no longer regenerate naturally. Note that undead are powered by unlife so still do regenerate.
New item: fire arrows. (sf, R. Dan Henry, Beefhaze)
Knock is now a ranged spell and can close doors as well as open them. (Brendan)
[SDL] If you were near the very top or very left of the map, the on screen keyboard would draw with the letters not lined up with the key wells. (Eilu)
Gold beetles are now properly aggressive when hostile.
[DS] A VBlank wait is added to the sleep routine so even less power should be consumed when the lid is closed. (Robert)
intervene has an r. (Oohara Yuuma)
Two new rooms.
The golden tridude is as big as they come, not as bit as they come. (Eilu)
Those in wizard mode can create any room template.
If you are wearing a non-ring that grants missing finger, you are now allowed to still equip a ring provided you have zero rings equipped.
After answering the question too many times I’ve broken down and flagged most items as not being equippable as a stack. So, no more wielding two warhammers in one hand. Thrown weapons can be equipped as a stack to allow you to get more mileage out of enchant weapon scrolls. (Ben Shadwick, Bill, TemporalParadox, many more)
Failure to swap with creatures in pits or underwater properly uses the creatures pronoun. (Eilu)
When I added the ability to chose your gender, I accidentally had your choice also affected the gender of every creature in the dungeon. This has now been fixed so creatures will now have their correct gender assigned. (Eilu)
Character dump tells you if Wizard mode is activated.
Character dump tells you how many times you’ve save scummed.
Character dump includes your score on death or victory.
Changed the scoring method for ascensions to penalize based on how long it took you to win. The goal is to save the world, not just self-improvement.
Your last gender selection is saved with your last name so the new game gender choice will match the new game name choice.
Thrown artifact weapons were always [-2] to hit. Now all artifacts properly inherit their base item’s to hit bonus and can have an additional bonus due to being artifacts.
Flaming swords no longer have a [+1] bonus to hit. They are cool enough without such a thing.
Display of weapon damage will no longer show 2+1 for a 2d1+1 weapon and instead show merely 3.

Note: While the highscore is kept, save games are never preserved between versions. Please wait until your current character dies before upgrading.

http://www.zincland.com/powder/index.php?pagename=release

By with 0 comments
Zelda – The Shards Of Light (NDS Game)

Zelda is still having a hughe fanbase in the world of video games. A german developer named BassAceGold is currently developing a homebrew Nintendo DS Zelda fangame named “Zelda – The Shards Of Light”.

From the progress blog:

Well, I’ve been putting a little work into the game lately and its getting pretty far through. So far I have only 19 more things to achieve + bug fixes before the Overworld is completed!

—–Overworld—–

—weapons—

-Finish off items(sub items too ie. raft)

-fix enemy collision to all items and damage

-re-write AI handling

-add in all the caves with the old man and their scripts

—graphics—

-add in new overworld graphics
-add in new enemy graphics

-add/fix effects for the 7th level lake revealing
-pause sprite animations when in the inventory
-add new time of day effects to bg layer 2

-add faries to fountains & healing stuff

-add item collision for all burnable bushes/bombable walls/moveable rocks/and those statue things
Its still a lot of coding but its mostly just fixing things at this point for the overworld.

The first Demo will be released (to those who donate) once the overworld part is completed which could take any where from a month or 2 or 3, just depends whats happening though cause school is taking a lot of time. Anyways I thought I’d just leave this update

Thanks to cid2mizard / http://www.dev-fr.org for the news.

http://www.nds-zone.com/bassacegold/

By with 0 comments
XRoar NDS v0.20f3 (Dragon emu for NDS)

XRoar is a Dragon and Tandy CoCo emulator for Linux, Unix, Mac OS X, GP32 and Windows32.

Features:

Emulates Dragon 32, Dragon 64, Tano Dragon, Tandy CoCo 1/2.
Emulates DragonDOS, Delta and RSDOS disk systems.
Raw and translated keyboard modes.
Reads and writes virtual cassettes (“.cas” files).
Reads audio files as cassette input.
Reads and writes DMK format virtual floppy diskettes.
Reads (and supports in-memory writing of) JVC and VDK format virtual floppy diskettes.
Custom snapshot format; no “.pak” support yet.

Release notes:

The DS port is advancing nicely. This version features interface for input configuration (though this doesn’t get recorded anywhere yet, so you have to set it each time) and snapshot saving. Sound is now pretty much spot on, and video is synced to 50Hz where appropriate (DS allows its current idea of which scanline it’s on to be modified). ROMs should sit in fat:/dragon/roms/ (or just fat:/dragon/). Swapping screens (‘START’ by default) now maps the touch screen to analogue joystick input (good for games like Katerpillar Attack).

It is built against a recent CVS checkout of libfat, so supports DLDI patching (shouldn’t be required for most recent flash carts).

xroar.nds – v0.20f3 slot 1 binary.
xroar.ds.gba file – v0.20f3 slot 2 binary – untested.

Thanks to http://www.dcemu.co.uk for the news.

http://www.6809.org.uk/dragon/xroar.shtml

By with 0 comments
ChessNET WIP (NDS Game)

A new version of ChessNET will approach soon.

Quote:

Welcome to the new home of the ChessNET DS Project. This website will be your number one source for all ChessNET related news.

And for those of you who are curious, ChessNET is still under development and coming along nicely. Nearly all of the Release 1 glitches have been fixed, and many missing features have been added.

Here’s a little list of improvements that have occured so far:

New ROM Icon. It looks swanky. :>
Fixed a huge buffer error in the way ChessNET retrieved it’s data.
Added account handles and passwords.
Fixed Checkmate detection. (No more victory on check!)
Added Castling support.

I expect to have En Passant and the 50 move rule in within a few days. I’ve been fighting the new server version a little too. But keep your eyes on this page, there will be more news soon.

http://www.armoredtactics.com/chessnet/

By with 0 comments
Morning Timer v1.2 (NDS Application)

After weeks of silence Infantile Paralysiser is back with an update of “Morning Timer”.

Changes:

The play time can have been change by ‘More settings of the timer settings’.
The FAT driver was optimized. The simple check disk was more fast.

http://mdxonline.dyndns.org/archives/2008/04/morning_timer_ver12.shtml

By with 0 comments
Woctochat v0.3 (Beta) (NDS Application)

Circus has updated his Nintendo DS application “Woctochat”.

http://playeradvance.org/forum/showthread.php?t=16134

By with 0 comments
Nintendo DS – Compo 1 – Mandelbrot Set (NDS misc)

Akkit.org are having a coding competition for Nintendo DS.

Read on:

Problem Statement
This first competition is about plotting the Mandelbrot set, which is a noteworthy fractal that is both simple and complex at the same time.
First of all, this is a speed optimisation contest; so, the winner will be the entry which completes the tasks set before it the fastest. There are lots of ways to improve the speed of such a process, and it’s a classical mathematical and computer programming problem, so I thought this was appropriate to start the competition with.
Here are the specific requirements of the code to be optimized:
* It needs to plot a rectangular section of the Mandelbrot set into an array (That array may be rotated or scaled, it’s not axis-aligned)
* The rectangular section will be defined by top left point ( a complex value ), complex step values in the X and Y directions, and the width and height (in array elements) of the output
* The top left point and step values will be complex numbers represented by 2 64bit values (one for the real, one for imaginary dimension), each value being defined as a 4:60 precision fixed point number (-8 to +7.999…)
* The output array will be an array of 16bit values corresponding to the number of iterations before the value at that point diverges (up to some cap given in the function parameters) (this is defined more specificly in the section below)
* You will be given a 512kiB block of contiguous memory, which is aligned to a cache line boundary. You don’t have to use it, but if you need to use a lot of memory, it’s where you should be putting things.
* Regarding precision: You must keep 64bits of precision through all operations, the C code will do this, so if you don’t, your submission will probably be disqualified. Without some guarantees on precision, the code isn’t going to be very useful. Also, since it’s a speed optimisation contest, you are welcome to make your code more precise, but you’re probably better off not doing so. Good luck! A small amount of difference is understandable, too, given differences in math that can be used, so your output won’t have to be exactly like the example code, just not completely different.
* Here’s the function prototype for the function that does all this: void MandelFunc(u32 * rectangle, int max_iteration, int width, int height, u16 * output_array, void * workram);
* Rectangle is a list of 64bit numbers, 64bit numbers are stored as the low 32bits followed by the high 32 bits – the numbers are topleft_real, topleft_imaginary, stepx_real, stepx_imaginary, stepy_real, stepy_imaginary (total of 6 64bit values, or 48 bytes)

To make this process a lot simpler, I’ve written a small program for DS that can run code snippets in a rather controlled environment. It’s in a zip file package below. This package contains the test engine, which is a bit hacky and slow ;), it also contains 2 other important elements: the example C++ code that does everything an entry needs to (you could submit it if you want, but then we might laugh at you.) – also included are some templates, bare bones C++ and asm files that show you how to start your own routine. The test app can be easily built with the latest versions of devkitARM and libnds, and will allow you to test the speed of one or more implementations you have created. The test app uses seeded random data to compare the output of your functions to the reference function, so you also get verification of whether or not your code is working correctly.

Download the Source package here (version 3) – This includes a test application which has a reference implementation of the function to be optimised as well as some templates to choose from.
Note about the source package: First version was really rushed and missed a trivial optimisation – so version 2 of the package has been released with example code that’s roughly 6 times faster – It will no longer be quite so painful to test things, previously this code was a limiting factor for testing, taking 30+ seconds to verify the tests, now it should only be around 5 seconds.
Note 2: Version 3 fixes a glaring bug in the fixed point multiply. On a related note, precision isn’t tested very well in the current test package, there will be another test project release in a few weeks that will better verify precision.

Now, about Rules:
Every compo needs ’em!
CAN means you may; SHOULD means you are probably missing out if you don’t, MUST and MUST NOT indicate mandates from the heavens; ask me before doing the opposite and be prepared to be told not to.
* You MUST NOT use any global variables (besides constant data)
* You MUST NOT put any code or constant data in ITCM or DTCM
* You CAN have constant data, but not too much, 64k is more than enough space
* You CAN use the hardware divide / sqrt capabilities of the DS
* You MUST NOT use timers, graphics hardware, or other DS hardware outside of the hardware math functionality. I can’t think of any useful exceptions but may be willing to grant some if I’m wrong.
* You CAN use malloc/free/new/delete, and other standard library functions in either the C or C++ standard libraries. It’s your cputime, who am I to stop you 😉
* You CAN use stack-allocated memory, just be aware that the full 16k of DTCM (where the stack resides) may not be available to you.
* Your code can’t be too terribly big. I’m thinking 64k is the threshhold of “starting to get too big” and 128k is the threshhold for “yeah, that’s just too big.” – if you do manage to use that many instructions though, you won’t lose that much speed by halving the size of your unrolled loop anyway 😛 (And I mean compiled size, not source size)

About the Mandelbrot set
I’m sure some of you have run into the Mandelbrot set before, either plotting it with some trivial code or just tinkering with some fractal generator, but it’s unlikely you remember exactly how it works off the top of your head. So, this section is all about how it works.
The Mandelbrot set is a fairly simple relationship based on complex numbers (see link for more info). In short, complex numbers are 2-dimensional numbers, with one dimension in the “real” plane (normal numbers), and one dimension in the “imaginary” plane (numbers multiplied by “i”, or sqrt(-1) ).
So, adding and subtracting complex numbers works a lot like normal 2d vectors; (a+b*i) + (c+d*i) = ( (a+c) + (b+d)*i )
Multiplication and division are more complex though. Multiplication winds up looking like a polynomial expansion: (a+b*i) * (c+d*i) = a*c + a*d*i + b*c*i + b*d*i*i, and since i*i is -1, you’re left with = (a*c – b*d) + (a*d + b*c)*i;
And division is even more complex, requiring first a step to reduce the denominator to a real number: (a+b*i) / (c+d*i) = (a+b*i)*(c-d*i) / (c+d*i)*(c-d*i) = ((a*c+b*d)+(b*c-a*d)*i) / (c*c+d*d) – Which is just a multiplication problem and division by a constant, so I won’t complete the expansion here.

Fortunately, the Mandelbrot set only uses Multiplication and Addition, which are both generally pretty easy.
Specificly the Mandelbrot set consists of all of the points in the complex plane where a specific recursive relation never diverges to infinity. The relation that defines the Mandelbrot set is P(n+1) = P(n)*P(n) + c, where P(0) is 0, and c is the value of the point you’re testing in the complex plane.
The Mandelbrot set exists completely inside a circle with radius 2, the furthest point in the set is (-2 + 0*i), so if P(n) is ever outside of that circle, we know that point will converge to infinity and not be in the Mandelbrot set.
We’re not purely interested in whether the points are in the set though, we want to know how many iterations it took if they were pushed out of that circle, that’s how we get the fancy colors! So, for this problem store the first “n” that was outside of the radius-2 circle into the 16bit array value for that location. You will be given a “maximum” value, and if your n passes the maximum value, you should set the maximum value for that array element and move on.

Wrapping it up
Ok, this description went on a lot further than I expected!
I do realize that this is a pretty tough problem! If you’d like to be involved in an optimization contest but this is too hard, tell me! I’m currently considering opening up a second “branch” of competitions, for easier optimization contests, and whether I do will depend on if anyone bugs me about it!

This competition is going to be running for 2 months – which should be long enough to implement and optimize something like this; I’m mostly using 2 months because I figure I’ll have more time around then, the next month looks pretty hectic for me.
Also, I have planned to create an update for the test application, to allow timer-sampled profiling (with profiler in ITCM so it doesn’t screw up the cache profiling much), which should prove a powerful tool for finding issues and optimizing code! look for that around a month from now.

Notable Questions
I’ve received a significant question that I think the answer should be easy to access, so I’ve added this section to keep track of important questions and their answers:
Question: Is it ok to use other people’s publicly available code for this competition?
Answer: Technically yes; as long as it has a license that’s compatible. See the Rules page… Just copying the code goes against the spirit of this competition site, the goal is to learn something and produce new code; but I won’t disallow it.
Question: Can entrants work in teams?
Answer: Yes. Only one account may be tied to an entry though, so you’ll have to credit teammates in the title or the source code that’s submitted. (Inappropriate team names may be moderated, you know who you are :P)
Question: What do I have to submit to enter?
Answer: Only the source files you created/modified, in one of the supported archive formats (zip, rar, tar)
Question: Will there be prizes?
Answer: Not in this competition. I’m considering it for future competitions though.

Thanks to http://www.drunkencoders.org for the news.

http://opti.akkit.org/competition.php?id=5

By with 0 comments
OpenTTD DS (Alpha 6) (NDS Game Port)

OpenTTD DS is a port of OpenTTD for Nintendo DS.

OpenTTD is a clone of the Microprose game “Transport Tycoon Deluxe”, a popular game originally written by Chris Sawyer. It attempts to mimic the original game as closely as possible while extending it with new features.

OpenTTD is licensed under the GNU General Public License version 2.0.

Changes:

based on r12452 (internal rev1926)
the NDS port now has a different toolbar, more suitable for the small screen
for better access with the touchscreen the toolbars have been moved to the bottom screen
a fully customizable on-screen keyboard has been added (click on a text field to open it)
a newsticker display on the lower screen has been added
some windows have been adapted for the NDS screen (more will follow in future releases):
– intro menu
– game creation menu
– minimap
– build vehicle window
when building depots and stations only one preview image is shown which you can rotate by clicking on it
information regarding accepted cargo when building a station is displayed as icons now
switching screens (left shoulder button L) now only switches the windows
many windows (e.g. confirmation dialogs) are now centered on the bottom screen
the amount of free ram (in kb) is displayed in the middle of the status bar. This is only a temporary change to help with tracking down a memory leak
additionally you can view some memory information by pressing the B button
always use new global pathfinder (NPF). the original TTD pathfinder crashes due to too many recursions
fixed loading screen glitch

http://www.tt-forums.net/viewtopic.php?f=33&t=35306&p=647762#p647762

By with 0 comments
graphDS v0.5 (NDS Application)

graphDS can evaluate mathematical expressions and graph Cartesian, parametric, and polar equations.

Changes:

Added catalog. Added functions: abs, acs, asn, atn, mean, nDeriv, nIntegrate, rand.

http://robertson.heliohost.org/

By with 0 comments
Shooting Watch DS v2.2 (NDS Game)

Shooting Watch DS has been updated!

Changes:

Added Lode Runner skin
Built with latest tool chain.
SoundFx and music now use AS_Lib as with latest PA Lib beta.
Save file can now be in any directory. As default the game searches for the location of a previous save then location of the nds file. If neither are found (if you rename the nds file), the save file will be created in the root directory but can be moved afterwards.
WiFi transfer now retrieves rank correctly (Up to 100, was only retrieving rank 10 maximum before).
When you win on the slots, you can now hold A or B button to make the coins count up twice as fast. (Fixed 4 slot mode, only worked in 3 Slot before).
Can hold B button to make text scroll faster in the shop.
After playing Shoot mode, the rank shown is now how you ranked for your last go rather than your best rank overall.

Thanks to cid2mizard / http://www.dev-fr.org for the news.

http://files-ds-scene.net/shooting_watch/?s=download

By with 0 comments