This page is rather stubbly and could use some expansion.

Are you a bad enough dude to

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 controls the speed of the game 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)>