Has anyone found if it's possible to alter flash memory outside of the
game file's area by using a direct call (ie, not through the BIOS)? I
recall the method was on one of the development web pages but it didn't
mention if the address limit still applied.
I am wondering if it would be possible to make a savefile editor utility
AS a VMU game so that users who don't have Nexus cards can modify their saves.
M "I can get a dot on the LCD, but it's in the wrong place.." G.
Hello ladies and gents ^_^
My name is Omar Cornut (also known as Zoop on the net), I am an old
videogame fan, and I live in Paris, France.
I started getting interested in the VMS/VMU no later than yesterday,
so basically as of yet I know absolutly nothing about it, expect that
last year I was reading the official documentation where I was working,
which I have mostly forgot but I do have an idea about the specs of
the systems.
Could people points me out what are the great ressources on the net
regarding VMS/VMU/VM/whatever_it_is_called ? :) I already know about
http://rvmu.port5.com which I found using a search engine and got me
started. I guess the ressources and moreover the links on it are
sufficient, but if you have specifics recommendations and advices I am
open to everything ^_^
Thank you all,
and I hope to be able to contribute soon!
Omar Cornut / Zoop
MEKA @ http://www.smspower.org/meka
SMS Power @ http://www.smspower.org
--- In vmu-dev@egroups.com, Soeren Gust <sgust@i...> wrote:
> I have just released my first real minigame: Minesweeper. Get it at
> "http://soeren.infoserv.de/vm/minesweeper.html".
Looks good ;-)
One thing I miss is the "floodfill" thing that happens when you select
an empty cell (i.e. it should uncover all neighbouring empty cells
too)
> Btw: I hope you have a
> real fast Amiga, playtune.pl on demo.tune took nearly 1 minute on my
> 68030/50, so realtime playing is not possible.
68060/50 baby ;-)
Problem is I now have a defunkt harddisk, so all my devstuff is
unavailable :(
> > > Missing $ on loop variable at playtune.pl line 41.
> >
> > I will have to make some test at home on my Amiga, just one idea:
> > the playtune.pl program can only be used on .tune files, not on
> .note
> > files, they have to be converted with notetotune.pl.
>
> Yeah, I'd guessed this, but I get this error no matter what I supply
> to the script (or even If i just start the script with no arguments at
> all)
I found the problem: the variable declaration inside for loops is a
feature which was introduced in perl 5.004. I have released a new version
of my soundengine which is compatible with older versions. Additionally
it has now routines to stop and restart the tune. Btw: I hope you have a
real fast Amiga, playtune.pl on demo.tune took nearly 1 minute on my
68030/50, so realtime playing is not possible.
> Hi, just finished my first vm game, but dont get too excited as it is
> just another snake game.
> I have only tried it on the emu so far, so if you try
> it on a VMU please let me know if it works and how well. : )
I have tried it on a real VM, it is much slower, I have measured 7
seconds from left to right border. This makes the game too easy, especially
since its get slower if the snake gets longer. But apart from that: I like
it.
Okay, I've just uploaded to the vmu@egroups files section () in the
programs/ folder my DreamImage program, which can convert an Image
saved by dreamkey (transferred via nexus) to a PC displayable image.
Windows users just need to grab dreamimg.zip and follow these
instructions:
1) Transfer the image to a .dci file
2) Convert the .dci to .vms
(dci2vms.zip from
http://www.franken.de/users/deco/myfiles/myfiles.html)
4) Stick your .vms file in the same dir as the dreamimg.exe program
3) open a dos prompt, CD to the dreamimage folder, and type:
dreamimg <myfile.vms>
where <myfile.vms> is whatever your .vms file is called.
The program will display some info, and create a file in the directory
(filename will be what the file was originally called on the
webserver) containing the graphic.
Users of other systems can download the source package and compile
themselves (works file on Linux, and AmigaOS using gcc)
Incedentially, this might be the last bit of programming I do for a
while, as a couple of hours after finishing this program, and copying
it to floppy, my harddrive made the evilist sounding kerchunk noise,
and now refuses to boot up (sounds like a dead motor) which means
most of my source and development tools have been lost forever
(excluding the chance that the drive decides to work again, that is)
Ho hum. It could have been worse - It could have gone two weeks ago,
just before my final year project was due in.
At 04:42 29.05.00 +0100, you wrote:
>On 18 May 00, fox@... (Vincent Schoettke) wrote:
>
> > Because the linker couldn't tell which line the error was, I simply
> > replaced all my calls with callo, then some other new out of range
> > instructions (this time in the assembler) occurred. I made a backup of my
> > source code, replaced all br instructions with bro, some new out of range
> > instructions (jmp, bnz, bn) where then also replaced.
>
>Sorry to ask, but what's CALLO, BRO etc.? Is it the same as CALLF and
>BRF?
These pseudo instructions (jmpo, callo, bro) are the same as jmpf, callf,
brf but are optimized if possible to jmp, call, br.
or as written in the documentation:
BRO,JMPO,CALLO Optimized branch, optimized jump and optimized
call These instructions generate the appro-
bzo,bnzo,beo,bneo priate codes.
dbnzo,bpco,bpo,bno Use with lower-case letters ; bzo to bno.
When using the above instructions,BZO etc, with
the upper-case letters, you get an 'undefined
symbol' error.
l8r Vincent
On 18 May 00, fox@... (Vincent Schoettke) wrote:
> Because the linker couldn't tell which line the error was, I simply
> replaced all my calls with callo, then some other new out of range
> instructions (this time in the assembler) occurred. I made a backup of my
> source code, replaced all br instructions with bro, some new out of range
> instructions (jmp, bnz, bn) where then also replaced.
Sorry to ask, but what's CALLO, BRO etc.? Is it the same as CALLF and
BRF?
And where did you get SEGAs official VMU Development Pack? Not that this
particular Assembler sounds all that easy-to-use compared to Marcus
Comstedt's, but still...
Bye
Alessandro
---
You get what anyone gets. You get a lifetime.
> > 2) On my Amiga setup, when I try to use playtune.pl I get the
> > following error:
> >
> > Missing $ on loop variable at playtune.pl line 41.
>
> I will have to make some test at home on my Amiga, just one idea:
> the playtune.pl program can only be used on .tune files, not on
.note
> files, they have to be converted with notetotune.pl.
Yeah, I'd guessed this, but I get this error no matter what I supply
to the script (or even If i just start the script with no arguments at
all)
> 1) The sound engine doesn't shut down when you go into sleep mode
> (would this need an extra soundpaused variable, or is it easy to
> implement with the existing setup?)
You could try to clear the t1lrun and t1hrun bits when entering sleep
mode, this would stop the sound immediately. You then have to find a
way to get a clean restart when leaving sleep mode, just setting the
bits restarts the timer, so the last tone will be heard again. I will
make some tests this weekend.
> 2) On my Amiga setup, when I try to use playtune.pl I get the
> following error:
>
> Missing $ on loop variable at playtune.pl line 41.
I will have to make some test at home on my Amiga, just one idea:
the playtune.pl program can only be used on .tune files, not on .note
files, they have to be converted with notetotune.pl.
--- In vmu-dev@egroups.com, "Marcus Comstedt" <marcus@i...> wrote:
> > Hm... I tried my best, but it doesn't seem to work. Maybe I
> > didn't understand some of the code? Can anyone explain?
>
> Sorry, but Alex algorithm doesn't work. There are no values for the
> XOR_CODE and PLUS_VAL vectors that produce a correct result for
> normal or "modified" (see message #169) base64 coding.
Well, could you please look through my comments of the posted
source code anyway and tell me if I understood everything correctly,
at least?
Thanks
Alessandro
---
You get what anyone gets. You get a lifetime.
Oh yeah, I've found a couple of minor problems:
1) The sound engine doesn't shut down when you go into sleep mode
(would this need an extra soundpaused variable, or is it easy to
implement with the existing setup?)
2) On my Amiga setup, when I try to use playtune.pl I get the
following error:
Missing $ on loop variable at playtune.pl line 41.
I've looked at the code, and can't see the error myself :(
Here's the version info that the version of perl I've got include
provides, if it helps:
----
> perl -v
This is perl, version 5.003 with EMBED
built under amigaos at Mar 26 1997 01:42:24
+ suidperl security patch
Copyright 1987-1996, Larry Wall
Perl may be copied only under the terms of either the Artistic License
or the
GNU General Public License, which may be found in the Perl 5.0 source
kit.
----
All the other perl scripts seem to work fine.
Chances are it is possible to control the speaker directly. That's what the
Apple II did, and also what I did to get my HP 48SX (geek warning!) to talk.
The LC86108 uses P1 to share some timer inputs, but I didn't see any timer
outputs. The LC86108 uses P1 to share some timer inputs, but I didn't see
any timer outputs -- but the VMU has have direct outputs somewhere because
the speaker gets driven.
My experimenting on the Apple II was ok. It had a wide-range paper speaker,
but had a bad input circuit. Nowadays, we can record a sample with a proper
A/D and then apply the correct low-pass filter so that it matches the output
rate of the VMU. I actually transfered some samples from an old Apple II
game (an educational math game, so it had all the numbers) to my HP and
played them. Both of these computers had 1 MHz processors (Although the
processors themselves were substantially different), but the HP had a piezo
element instead of a speaker. The result was that the playback was very
quiet. I guess I was nowhere near the resonant frequency range of the HP
calculator. This might be a problem with the VMU.
Someday someone will have to write a program to twiddle the output port bits
and, while this is running, probe up the potato so that we can map port bits
to functions. I suspect that the handshake and/or DC detect pins on the VMU
connector could be made bidirectional... useful for all sorts of stuff!
John
Soeren Gust wrote:
> > Would it be possible to adapt Soeren's sound engine to play sampled
> > sounds?
>
> That would require a nearly full rewrite. You could move the
> interrupt trigger to timer1 low and use it to send pulses with different
> widths to the speaker. I have not tried it, so I don't know how good
> that will sound.
>
> Another way would be to control the speaker line directly, but I don't
> know how to do that or if its even possible.
>
> Soeren
>
> ------------------------------------------------------------------------
> Old school buds here:
> http://click.egroups.com/1/4057/0/_/417030/_/959360089/
> ------------------------------------------------------------------------
>
> post: vmu-dev@eGroups.com
> unsubscribe: vmu-dev-unsubscribe@eGroups.com
> archive: http://www.egroups.com/group/vmu-dev/
> faq: http://rvmu.port5.com/faq.html
> Would it be possible to adapt Soeren's sound engine to play sampled
> sounds?
That would require a nearly full rewrite. You could move the
interrupt trigger to timer1 low and use it to send pulses with different
widths to the speaker. I have not tried it, so I don't know how good
that will sound.
Another way would be to control the speaker line directly, but I don't
know how to do that or if its even possible.
Soeren
Hi, just finished my first vm game, but dont get too excited as it is
just another snake game ; ) just wanted to start with somthing easy
for my first game in asm. If you want to try it I have just quickly
put together a site at http://jump.to/vm let me know what you think
if you try it. I have only tried it on the emu so far, so if you try
it on a VMU please let me know if it works and how well. : )
.....Stu
Would it be possible to adapt Soeren's sound engine to play sampled
sounds (I know the quality wouldn't be up to much, but It must be
possible, as the soul callibur game, apparently, has speech)
As the munnfamily demon server that my rvmu site has been half/hosted
on is probably going to be suspended (as my parents have started using
bt internet instead of demon, and don't want to pay for two ISPs), I'd
just like to mention that the
www.munnfamily.demon.co.uk/rvmu/
address is no longer active (the pages have all been replaced with
redirectors), so I'd be grateful if anyone who currently links to the
munnfamily address, (or the come.to/ one for that matter) replaces it
with the newer address:
http://rvmu.port5.com/
Just a quickie announcement... I got my own domain name and will be
transferring my VMU page to www.maushammer.com/vmu.html (it's a little
easier to type now). I had trouble getting to my own page last week, and
apparently all zero of my visitors did, too. I'm still working on a more
robust pc-vmu program, but have been real slow because of pressures at
work. (and also I've been working on my pong)
BTW- This might be of interest to some people here. There is a cool
little PDA, about the same size as a VMU, but much pricier and more
capable. Like the VMU, it runs off of two lithium batteries (different
size, though), but that's about it. It features:
16bit-CPU MN10200
128kB-SRAM/2MB-Flash Memory/512 KB ROM
102x64 pixel LCD display (backlit)
Internal speaker
IR Port
plays several games
** COMES WITH A SDK!! **
a pricetag of $279. Well, there had to be a catch.
Check it out at www.onhandpc.com or
http://www.the-gadgeteer.com/onhand-review.html
- John
--- In vmu-dev@egroups.com, "Alexander Villagran" <villagra@d...>
wrote:
> If that is the case, and now that I remember hearing about problems
> with VM Save File routines, that does make a lot of sense. That
> would mean that there would have to be a newer version of the low
> level Dreamcast libraries to use the newest VMU, unless the new VMU
> behaves like a 1 Meg VMU. There will be a ton of problems with
that
> new VMU.
Yes, it's because of this that I got so surprised when I heard that
the MPEG player peripheral was supposed to have 64Megs of memory. But
as it later was clamied not be able to hold savegames, I suppose it
won't be accessible through the normal VM interface at all (i.e. it
will have a different Maple Bus function code).
// Marcus
--- In vmu-dev@egroups.com, "Marcus Comstedt" <marcus@i...> wrote:
> Actually, I have to disagree with you here. The vmsfs_init function
> in the vmsphys.obj part of the Shinobi library allocates a buffer in
> DC memory which the FAT is read into, to be manipulated directly.
The
> version of Shinobi that is ROMmed into current consoles can handle
VM
> sizes of 128K (1 FAT block), 256K (2 FAT blocks), 512K (4 FAT
blocks)
> and 1M (8 FAT blocks). Larger VMs than that can not be handled by
the
> DC ROM, and probably not by most games either.
>
>
> // Marcus
If that is the case, and now that I remember hearing about problems
with VM Save File routines, that does make a lot of sense. That
would mean that there would have to be a newer version of the low
level Dreamcast libraries to use the newest VMU, unless the new VMU
behaves like a 1 Meg VMU. There will be a ton of problems with that
new VMU.
Alex
--- In vmu-dev@egroups.com, Vincent Schoettke <fox@a...> wrote:
>
> Start of the code is nearly the same as the one from the
> sample files...
>
> l8r Vincent
Your main file looks exactly like mine. What I would except is the
problem is either the ghead.asm or ifork.asm files. Can you mail me
them so I can check them out. I have not seen that type of strange
behavior before with any of the programs I have written. Also what
does your makefile look like?
Adios,
Alexander Villagran
VMU Developer
--- In vmu-dev@egroups.com, tyro@d... wrote:
> Hm... I tried my best, but it doesn't seem to work. Maybe I didn't
> understand some of the code? Can anyone explain?
Sorry, but Alex algorithm doesn't work. There are no values for the
XOR_CODE and PLUS_VAL vectors that produce a correct result for normal
or "modified" (see message #169) base64 coding. There may be some
other base64 interpretation that allows a XOR_CODE and PLUS_VAL vector
to be found which gives the correct result, but to test all possible
base64 mappings would take 14 years so I'm not going to try it. :-/
// Marcus
On 08 May 00, villagra@... (Alexander Villagran) wrote:
> my (@XOR_CODE) = (65,84,69,90); # 0x5A455441
> my (@PLUS_VAL) = (65,78,65,78); # 0x4E414E41
> my @tmp_val = (0,0,0,0);
> for(my $i=0;$i<20;$i++) {
> my $tmp_val2 = 0;
> for(my $j=0;$j<4;$j++) {
> $BINDATA[$i*4+$j] ^= ($tmp_val[$j] ^ $XOR_CODE[$j]);
> $tmp_val[$j] = ($tmp_val[$j] + $PLUS_VAL[$j] + $tmp_val2);
> $tmp_val2 = $tmp_val[$j]>>8;
> $tmp_val[$j] &= 255;
> }
> }
Hm... I tried my best, but it doesn't seem to work. Maybe I didn't
understand some of the code? Can anyone explain?
Sorry if my explanations sound a bit 'weird', but it's quite hard for me
to express this stuff in a foreign language, and I'm not used to
programming anything in C / C++ either. Anyway:
> my (@XOR_CODE) = (65,84,69,90); # 0x5A455441
> my (@PLUS_VAL) = (65,78,65,78); # 0x4E414E41
As it seems to me, there are two arrays defined, named XOR_CODE and
PLUS_VAL, containing four byte-values each, and $j serves as a pointer
into each array.
> $BINDATA[$i*4+$j] ^= ($tmp_val[$j] ^ $XOR_CODE[$j]);
I think this means:
XOR the byte-value in the TMP_VAL array at which $j points to with the
byte-value in the XOR_CODE array at which $j points to, then XOR the
currently-to-decode data-byte with the result.
> $tmp_val[$j] = ($tmp_val[$j] + $PLUS_VAL[$j] + $tmp_val2);
I think this means:
ADD three values, the byte-value in the TMP_VAL array at which $j points
to, the byte-value in the PLUS_VAL array at which $j points to, and
$tmp_val2. Store the result at the location in the TMP_VAL array at which
$j currently points to.
> $tmp_val2 = $tmp_val[$j]>>8;
Now this I don't quite understand.
As it seems, you are supposed to shift the value in the TMP_VAL array at
which $j points to 8 bits to the right and make the result the new
$tmp_val2. But since the array contains only byte-values, the result of
this operation would always be zero, right?
Can anyone please explain this to me?
> $tmp_val[$j] &= 255;
Same with this line:
The value in the TMP_VAL array at which $j points to is AND-ed with 255
(11111111). But since the array contains only byte-values, such an AND
operation would not change anything.
> my $tmp_val2 = 0;
Also, it seems that after each 4 byte, $tmp_val2 is set to 0 again. Is
this correct?
Can anyone explain all this, please? Or if possible, just *DESCRIBE* the
whole decoding routine in simple words, so I can understand how it works
and write some adequate assembler code based on it. ;)
Please send your responses to the mailinglist too, so others can comment
on it and share their experiences. ;)
I would _really_ like to learn how to decode those Dreamcast
attachments...
Thanks in advance
Alessandro
---
You get what anyone gets. You get a lifetime.
--- In vmu-dev@egroups.com, "Alexander Villagran" <villagra@d...>
wrote:
> From my experience looking at the actual Dreamcast VMU file
> operations code it doesn't actually deal with the VMU FAT directly.
> It goes through the Maple bus, and actually contacts the VMU, and
it
> handles the data accordingly. This way none of the software needs
to
> change (this code is not stored in ROM, so it would make older
> software break if it was hard coded to the VMU) to use a larger
size
> VMU.
Actually, I have to disagree with you here. The vmsfs_init function
in the vmsphys.obj part of the Shinobi library allocates a buffer in
DC memory which the FAT is read into, to be manipulated directly. The
version of Shinobi that is ROMmed into current consoles can handle VM
sizes of 128K (1 FAT block), 256K (2 FAT blocks), 512K (4 FAT blocks)
and 1M (8 FAT blocks). Larger VMs than that can not be handled by the
DC ROM, and probably not by most games either.
// Marcus
>Actually what happens if you use a "cseg
>inblock"? Do you get the same offset problem. That is how I use it,
>and it tends to start right at 480.
CSEG inblock also doesn't work, it also locates the code to $1000!
>That is the version of the linker or assembler. It sounds like you
>have a very strange problem. I would like see the very start of your
>asm files, up to and including the first label of main.
So here's the start of my asm file... I removed my definition of variables!
; ------------------------------------------------------
chip LC868700
world external
public main
extern _game_end
;
; PSW bits
;
CY EQU 7
AC EQU 6
IRBK1 EQU 4
IRBK0 EQU 3
OV EQU 2
RAMBK0 EQU 1
P EQU 0
; Key bits (P3)
SLEEP_KEY EQU 7
MODE_KEY EQU 6
B_KEY EQU 5
A_KEY EQU 4
RIGHT_KEY EQU 3
LEFT_KEY EQU 2
DOWN_KEY EQU 1
UP_KEY EQU 0
; ------------------------------------------------------
; Variable-Definitions
;RESERVED SPACE = $00-$0F for @Rx
dseg
r0: ds 1
r1: ds 1
r2: ds 1
r3: ds 1
ds 12
; Some data definition removed here
; ------------------------------------------------------
; Main Program
cseg free
main:
;-------------------------------------------------------
Start of the code is nearly the same as the one from the
sample files...
l8r Vincent
According to the (UK) Official Dreamcast Magazine
(www.dreamcastmagazine.co.uk), everyone who's signed up to DreamArena
(The European Dreamcast free net access thing) will get a free copy of
ChuChu Rocket!!!
No more details were given, but this sounds pretty good!
--- In vmu-dev@egroups.com, Z7Z7Z7@p... wrote:
> >i wasent a memer of the egroup when the accedental posting
> >happend,could some1 who has it please send it to me:
> >z7z7z7@p...
> >thanx
> im refering to the sega dev kit i just forgott o say it
You can view the full message archive on the web
@ http://www.egroups.com/group/vmu-dev
btw, the devkit hasn't been released yet, the "accidental" posting you
refer to was just a reply to a comment that Alexander made that the
official tools were more likely to get "leaked out" than officially
released