If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
This article has a talk page!

Tetris 64

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Tetris 64

Developer: Amtex
Publisher: Seta
Platform: Nintendo 64
Released in JP: November 13, 1998


DevTextIcon.png This game has hidden development-related text.


So very stubbly.
This page is rather stubbly and could use some expansion.
Are you a bad enough dude to rescue this article?

Tetris 64 (not to be confused with The New Tetris, which is probably what you're looking for) is a Japan-only rendition of the classic game for the Nintendo 64.

Being from Japan, it has some weird features, such as the Bio Tetris mode which changes the Tetriminos based on the player's heart rate, measured by a special accessory plugged into the controller and the player's ear... ouch!

Unused Text

Starting at 0x4A628 is something which looks like a reference table of some sort for ASM instructions.

cache	%s,IX
R(RD)=R(RT)%sB(SA)
R(RD)%s=B(SA)

nop
R(RD)=R(RT)%sR(RS)
R(RD)%s=R(RS)

R(RD)=0
R(RD)=R(RT)
R(RD)=R(RS)
R(RD)=R(RS)%sR(RT)
R(RD)%s=R(RT)

R(RD)=R(RS)%sR(RT)
R(RD)%s=R(RT)

!(R(RS))()
jalr	R(RD),R(RS)

rts
jmp		(R(RS))

bcf
bc;CP;f	RL
bct
bc;CP;t	RL
bcfl

bc;CP;fl	RL
bctl

bc;CP;tl	RL
tlbr

tlbr

tlbwi

tlbwi

tlbwr

tlbwr

tlbp

tlbp

eret

eret

mfc0

R(RT)=cp;CP( R(RD) )

dmfc0

d.R(RT)=cp;CP( R(RD) )
cfc0

cfc;CP	R(RT),R(RD)
mtc0

cp;CP( R(RD) )=R(RT)

dmtc0

l.cp;CP( R(RD) )=R(RT)
ctc0

ctc;CP	R(RT),R(RD)
��

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?
fadd

FM.F(FD)=F(FS)+F(FT)

fsub

FM.F(FD)=F(FS)-F(FT)

fmul

FM.F(FD)=F(FS)*F(FT)

fdiv

FM.F(FD)=F(FS)/F(FT)

fsqrt

FM.F(FD)=fsqrt(F(FS))

fabs

FM.F(FD)=fabs(F(FS))

fmov

FM.F(FD)=F(FS)
fneg

FM.F(FD)=fneg(F(FS))

fround.l

d.F(FD)=FM.fround(F(FS))

ftrunc.l

d.F(FD)=FM.ftrunc(F(FS))

fceil.l
d.F(FD)=FM.fceil(F(FS))
ffloor.l

d.F(FD)=FM.ffloor(F(FS))

fround.w

l.F(FD)=FM.fround(F(FS))

ftrunc.w

l.F(FD)=FM.ftrunc(F(FS))

fceil.w
l.F(FD)=FM.fceil(F(FS))
ffloor.w

l.F(FD)=FM.ffloor(F(FS))

fcvt.s
fs.F(FD]=FM.F(FS)

fcvt.d
fd.F(FD]=FM.F(FS)

fcvt.w
l.F(FD]=FM.F(FS)

fcvt.l
d.F(FD]=FM.F(FS)

fc.f

fc.f	F(FS),F(FT)

fc.un

fc.un	F(FS),F(FT)

fc.eq

fc		F(FS)==F(FT)

fc.ueq
fc.ueq	F(FS),F(FT)
fc.olt
fc		F(FS)<F(FT)
fc.ult
fc.ult	F(FS),F(FT)
fc.ole
fc		F(FS)<=F(FT)

fc.ule
fc.ule	F(FS),F(FT)
fc.sf

fc.sf	F(FS),F(FT)

fc.ngle
fc.ngle	F(FS),F(FT)
fc.seq
fc		F(FS).==F(FT)

fc.ngl
fc.ngl	F(FS),F(FT)
fc.lt

fc		F(FS).<F(FT)

fc.nge
fc.nge	F(FS),F(FT)
fc.le

fc		F(FS).<=F(FT)

fc.ngt
fc.ngt	F(FS),F(FT)
mfc0

R(RT)=cp;CP( R(RD) )

dmfc0

d.R(RT)=cp;CP( R(RD) )
cfc0

cfc;CP	R(RT),R(RD)
mtc0

cp;CP( R(RD) )=R(RT)

dmtc0

l.cp;CP( R(RD) )=R(RT)
ctc0

ctc;CP	R(RT),R(RD)
��

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?
sll
<<
srl
>>
sra
.>>
sllv

<<
srlv

>>
srav

.>>
jr
jalr

syscall
syscall	RV
brk
brk		RV
sync

sync	RV
mfhi

R(RD)=hi

mthi

hi=R(RS)

mflo

R(RD)=lo

mtlo

lo=R(RS)

dsllv

d.R(RD)=R(RT)<<R(RS)

dsrlv

d.R(RD)=R(RT)>>R(RS)

dsrav

d.R(RD)=R(RT).>>R(RS)

mult

R(RS).*R(RT)

multu

R(RS)*R(RT)
div
R(RS)./R(RT)

divu

R(RS)/R(RT)
dmult

d.R(RS).*R(RT)
dmultu
d.R(RS)*R(RT)

ddiv

d.R(RS)./R(RT)
ddivu

d.R(RS)/R(RT)

add
.+
addu


+

sub
.-
subu

-

and
&

or
|

xor
^

nor
^|
slt
R(RD)=( R(RS).<R(RT) )
sltu

R(RD)=( R(RS)<R(RT) )

dadd

d.R(RD)=R(RS).+R(RT)

daddu

d.R(RD)=R(RS)+R(RT)
dsub

d.R(RD)=R(RS).-R(RT)

dsubu

d.R(RD)=R(RS)-R(RT)
tge
tge		R(RS),R(RT)

tgeu

tgeu	R(RS),R(RT)

tlt
tlt		R(RS),R(RT)

tltu

tltu	R(RS),R(RT)

teq
teq		R(RS),R(RT)

tne
tne		R(RS),R(RT)

dsll

d.R(RD)=R(RT)<<B(RS)

dsrl

d.R(RD)=R(RT)>>B(RS)

dsra

d.R(RD)=R(RT).>>B(RS)

dsll32
dsll32	R(RD),R(RT),B(SA)

dsrl32
dsrl32	R(RD),R(RT),B(SA)

dsra32
dsra32	R(RD),R(RT),B(SA)

bltz

if R(RS)<0 goto RL
bgez

if R(RS)>=0 goto RL
bltzl

if R(RS)<0 gotol RL
bgezl

if R(RS)>=0 gotol RL

tgei

tgei	R(RS),SI

tgeiu

tgeiu	R(RS),SI
tlti

tlti	R(RS),SI

tltiu

tltiu	R(RS),SI
teqi

teqi	R(RS),SI

tnei

tnei	R(RS),SI

bltzal
bltzal	R(RS),RL
bgezal
bgezal	R(RS),RL
bltzall
bltzall	R(RS),RL

bgezall
bgezall	R(RS),RL


?
��
j

jmp		JA
jal
!JA()

beq
if R(RS)==R(RT) goto RL
bne
if R(RS)!=R(RT) goto RL
blez

if R(RS)<=0 goto RL
bgtz

if R(RS)>0 goto RL
addi

.

addiu



slti

R(RT)=( R(RS).<#SI )

sltiu

R(RT)=( R(RS)<#UI )
andi

&

ori
|

xori

^

lui
u.R(RT)=UI
��
��
beql

if R(RS)==R(RT) gotol RL

bnel

if R(RS)!=R(RT) gotol RL

blezl

if R(RS)<=0 gotol RL

bgtzl

if R(RS)>0 gotol RL
daddi

d.R(RT)=R(RS).+SI

daddiu
d.R(RT)=R(RS)+SI

ldl
ldl		R(RT),IX

ldr
ldr		R(RT),IX

lb
b.R(RT).=IX
lh
w.R(RT).=IX
lwl
l.R(RT)=IX
lw
l.R(RT)=IX
lbu
b.R(RT)=IX
lhu
w.R(RT)=IX
lwr
lwr		R(RT),IX

lwu
lwu		R(RT),IX

sb
b.IX=R(RT)
sh
w.IX=R(RT)
swl
swl		IX,R(RT)

sw
l.IX=R(RT)
sdl
sdl		IX,R(RT)

sdr
sdr		IX,R(RT)

swr
swr		IX,R(RT)

cache

ll
ll		R(RT),IX

lwc1

l.cp1( R(RT) )=IX

lwc2

l.cp2( R(RT) )=IX

lld
lld		R(RT),IX

ldc1

d.cp1( R(RT) )=IX

ldc2

d.cp1( R(RT) )=IX

ld
d.R(RT)=IX
sc
sc		IX,R(RT)

swc1

l.IX=cp1( R(RT) )

swc2

l.IX=cp2( R(RT) )

scd
scd		IX,R(RT)

sdc1

d.IX=cp1( R(RT) )

sdc2

d.IX=cp2( R(RT) )

sd
d.IX=R(RT)

At 0x49A509 is some help for a command-line tool:

Seta Polygon Editor Ver.2.09.e by K.Takahashi

Usage:spe2 [<opt>] <file>[.spf]

<opt>	-v	: Verbose Mode
	-z	: Debug Mode

A similar help, for a different program, is present at 0x4FC63D:

Texture Viewer Ver.0.00 by K.Takahashi
Usage : tiv <files(tif&sbf)>