dreamcast fighting game v0.1.5
by
jimbo :
dcf_animate.c
dcf_fighter.c
dcf_control.c
Dan Potter and Jordan DeLong of
Cryptic Allusion :
KallistiOS version 1.1.5
Andrew Kieschnick of
Napalm-X :
dcloadip
including dc-tool
Marcus Comstedt :
maple and hardware info
including
scramble.c
SEGA/HITACHI/NEC : the cool hardware
Bjarne Stroustrup : the language
thanks to Lyonhrt for the captures of v0.1.0:
fighter1.jpg
  
fighter2.jpg
  
fighter3.jpg
  
Sun Jan 20 22:53:34 EST 2002
as of v0.1.5, we have a minimally playable game here. enjoy it with a friend.
the 0.1.5 scrambled binary is 100% cd-burn compliant.
down the chain we go...
installation:
dcfighting-0.1.5.tar.gz
- convenient link to tarball
## standard gzipped-tarball distribution.
## the makefile calls dc-tool, which is assumed to be in your path.
## dont forget your dependencies:
## kos-1.1.5
## the standard dc toolchain (check the sites,BooB,etc.)
tar xvzf dcfighting-WHATEVERVERSION.tar.gz
cd dcfighting
make
  ->  
dcf_animate.elf - 513k dreamcast executable
## File format is elf32-little, start address is 0x8c010000
## Section .text, lma 0x8c010000, size 79328
## Section .rodata, lma 0x8c0235e0, size 83240
## Section .data, lma 0x8c037ba0, size 11628
sh-elf-objcopy -O binary dcf_animate.elf dcf_animate.bin
  ->  
dcf_animate.bin - 254k stripped executable
scramble dcf_animate.bin 1ST_READ.BIN

ready to burn
cd binary
  ->  
1ST_READ.BIN - 254k scrambled dreamcast executable
        
the 0.1.5 scrambled binary is 100% cd-burn compliant.
dd if=/dev/zero bs=2352 count=300 of=audio.raw
cdrecord dev=0,0,0 -multi -audio audio.raw
# get the x,y 0,11702
cdrecord dev=0,0,0 -msinfo
mkisofs -l -C 0,11702 -o tmp.iso 1ST_READ.BIN
( cat IP.BIN ; dd if=tmp.iso bs=2048 skip=16 ) > data.raw
cdrecord dev=0,0,0 -multi -xa1 data.raw
if you could tell me anything about usb drivers, character devices, mknod,
kudzu, /proc/bus/usb/devices, /dev/input/mice, ...talk to me. id like to have a chat.
improvement :
v0.1.5: relative rotation(dodging)
this version introduces the concepts of rotation to the game. some might call it
a hack at this point:
three rotations describe the fighting situation: the global rotation of the center
line(b/w the 2 fighters), and each fighter's individual rotation about his own
center. using this notation, a strafe counter-clockwise(from above) is
equivalent to a clockwise rotation of the opponent. this rotation is reduced
instantly to 0.0 upon input from the player; maybe that should me more smooth.
the effect is that it is possible to sidestep completely around a player who
does not turn to face you.
additionally, a float is kept to track the fighting_distance b/w fighters,
and a float[2] to keep track of global displacement, which both players
can modify by strafing(dpad).
the illusion is pretty good; check it out for yourself.
v0.1.4: fighting state
refined the notion of fighting state to be more like a power level...
denotes stamina when below 100 (a la hit points) and attack power when
above 130; in between lie the parry,counter,block,move,stand states.
each timestep changes fighting_state by 1 in the direction of their
default state, which is set at the anchor time of each move executed.
so player will spring back to default.
fighting state is also changed by move logic; i.e.attack/block, etc.
^
|
140 throw
130 attack
115 counter
110 block
105 parry
100 standing
95 moving
90 hit
80 stunned
70 staggering
30 falling
20 kneeling
10 down
also, counters seem to work now, although the timing intervals are going to need
much tweaking. an attack duration of 0.1 timestep units(currently set at 0.02:
possible aliasing) is difficult to match with counter with a 0.15 timestep
(with the same 0.07 latency as the jab), but possible. requires more
experimentation.
oh, and no reverses or kicks this time; the logic is being rewritten to an else-if
block of form if ( (A) && (X) ). so it will check every possibility in
sequence; i thought there might be a way to reduce that. maybe later.
besides, it looks like this chip can handle it; and this code could go a long
way toward optimization.
also, switch stance is now A+X.
v0.1.3: touched up interaction
the logic for interaction has been cleaned up; now all conditionals
are compounds (player1==ATTACK && player2==COUNTER). much easier to read.
still needs tweaking for playability; now a stunned player (just hit by
an attack) will have no chance to block if the opponent can
continuously release a flurry of short jabs(B button).
parry and counter should still be possible in a stagger; maybe to
a varying degree (you get your ass kicked harder, you have less
chance/opportunity to pull off a counter).
v0.1.2: interaction paradigm
a new block of code has been added after the interpolation loop:
right now it's a block of if s corresponding to the table below.
using the table's logic, that loop can add and remove anchors of
player1 and player2 according to their states.
add_anchor(fighter_t,double,double*,int) now takes a state as well
(final parameter) and dcf_animate has a list of #define
enumerated possible states.
v0.1.1: fighter structs
each player==fighter now has his own struct(2 of them currently).
now we have 2 players in space (thanks a bunch to Dan Potter for the hint).
there's a loop that goes through the bus and checks each against
MAPLE_FUNC_CONTROLLER. i was neglecting to call maple_create_addr(p,u)
on the unit,port pairs and hence getting unusable addresses.
remember to call :
c = maple_create_addr( players[0][0] , players[0][1] );
before :
if (cont_get_cond(c, &cond) < 0)
combat rules :
only one type of attack and one range now:
if youre within range, the following rules apply.
p1 p2 result
-------------------------------
attack -- p2 hit;
attack block --
attack counter p1 hit;
controls:
B button: jab
X button: punches
----------------
X - reverse punch
RightX - hook
DownX - two hand push
LeftX - elbow
Y button: kicks
----------------
Y - short kick
RightY - round house
DownY - knee
LeftY - side kick
A button: defense
----------------
A - block(hold/release)
DownA - counter
A + X Buttons - reverse stance
tarballs for your downloading pleasure...
collect the whole set!
or just take the new one.
dcfighting-0.1.5.tar.gz - 88k - barbecue version
dcfighting-0.1.4.tar.gz - 87k - splash version
dcfighting-0.1.3.tar.gz - 77k
dcfighting-0.1.2.tar.gz - 56k
dcfighting-0.1.1.tar.gz - 53k
dcfighting-0.1.0.tar.gz - 52k - sunrise version
dcfighting-0.0.8.tar.gz - 63k
heres where i took a bunch of the pictures below out of the tarball...
dc_dancer-0.0.7.tar.gz - 203k
dc_dancer-0.0.6.tar.gz - 128k
dc_dancer-0.0.5.tar.gz - 124k
dc_dancer-0.0.4.tar.gz - 118k
dc_dancer-0.0.3.tar.gz - 113k
dc_dancer-0.0.2.tar.gz - 112k
dc_dancer-0.0.1.tar.gz - 111k
dc_dancer-0.0.0.tar.gz - 61k
bonus: some 256x256x256 72dpi pcx texture files
bluedragon.pcx - 13k
brain.pcx - 17k
crate.pcx - 66k
fract.pcx - 5k
roots.pcx - 37k
skull.pcx - 41k
splash.pcx - 77k
sunrise.pcx - 62k
barbecue.pcx - 73k