Originally Posted by etabeta78
Another small bit of NES/Famicom accuracy is ready to be added to MESS

[Linked Image from mamedev.emulab.it] [Linked Image from mamedev.emulab.it]
[Linked Image from mamedev.emulab.it] [Linked Image from mamedev.emulab.it]

i.e. cassette loading while running Family BASIC in Famicom!

Huge thanks go to Anna Wu, Pokun and UglyJoe (who typed many BASIC games from a Japanese book last year and saved them to tape for us to enjoy) for the help.

More details, including detailed instructions to load games which have separate BG data and PRG data, can be found at my blog

Next things to do, improve Famicom controls (for lightgun and maybe multitap) and fix the few save state problems reported smile

Very nice, eta smile

Here the English version of SUPER PENPEN tested on NNNesterJ/Family BASIC (J) (V3.0)

Code
0 CLS:A=2:B=3:DEFSPRITE1,(0,1,0,0,0)=CHR$(172)+CHR$(173)+CHR$(174)+CHR$(175):DEFSPRITEA,(0,1,0,0,0)=CHR$(104)+CHR$(105)+CHR$(106)+CHR$(107)
1 DEFSPRITEB,(0,1,0,1,0)=CHR$(105)+CHR$(104)+CHR$(107)+CHR$(106):DEFSPRITE4,(1,1,1,0,0)=CHR$(116)+CHR$(117)+CHR$(118)+CHR$(119)
2 PALETS 0,15,48,38,18:PALETS 1,15,48,38,22:R=1:SPRITE1
3 LOCATE10,10PRINT"PUSH START":IFSTRIG(0)<>1THEN3
4 PLAY"T1Y2O5B5GGFERCD:Y2T1O1G5FEGFECD"
5 CLS:X=0:Y=127:LOCATE9,5PRINT"SUPER PENPEN":LOCATE12,7PRINT"ROOM";R:FORN=0TO27:LOCATEN,10PRINTCHR$(192):LOCATEN,15PRINTCHR$(192):NEXT:SPRITEON
6 FORN=0TO24:SWAPA,B:SPRITEA,X,Y:SPRITEB:X=X+1:PAUSE6:NEXT:I=10:FORN=0TO4:LOCATE0,I:PRINTCHR$(192):I=I+1:PLAY"O1C0D":NEXT
7 ONR GOTO8,9,11,12,13
8 W=200:Z=110:J=7:GOTO35
9 W=200:Z=115:J=4:GOTO40
11 W=240:Z=127:J=20:GOTO47
12 W=205:Z=127:GOTO49
13 W=0:Z=127:K=127:SPRITE1,240,K:GOTO51
20 T=STICK(0):IFT=1THENX=X+3:GOSUB23:GOSUB56:IFX>236THEN54
21 IFT=2THENX=X-3:GOSUB23:GOSUB25:IFX<24THENX=24
22 PAUSE6:GOSUB25:GOTO24
23 SWAPA,B:SPRITEA,X,Y:SPRITEB:RETURN
24 SPRITE4,W,Z:RETURN
25 IFX>W-12THEN27
26 RETURN
27 IFX<W+12THEN29
28 RETURN
29 IFY>Z-10THEN31
30 RETURN
31 IFY<Z+10THEN72
32 RETURN
35 J=J-1:Z=Z+J:W=W-5:GOSUB20:IFJ=-7THEN38
36 IFW<24THENW=200
37 GOTO35
38 J=J+1:Z=Z+J:W=W+3:GOSUB20:IFJ=7THEN35
39 GOTO38
40 J=J-1:Z=Z+J:W=W-10:GOSUB20:IFJ=-4THEN43
41 IFW<24THENW=230
42 GOTO40
43 J=J+1:Z=Z+J:GOSUB20:IFJ=4THEN40
44 GOTO43
47 J=J-1:W=W-J:GOSUB20:IFW>235THENW=24:J=20:FORN=0TO44:GOSUB20:NEXT:W=250
48 GOTO47
49 W=W-1:GOSUB20:GOTO49
51 FOR N=0TO14:GOSUB20:NEXT
52 W=W+4:GOSUB20:GOTO52
54 IFR=5THENPLAY"O3B5BBGAO4C":GOTO65
55 R=R+1:SPRITEOFF:SPRITE4:PLAY"O4E5EGFR5DFAEGO5C9":PLAY"O4E5EGF7D5E7C":GOTO5
56 IFR=4THEN58
57 RETURN
58 IFX>150THEN60
59 RETURN
60 IFSTRIG(0)<>1THENRETURN
62 LOCATE17,15PRINT" ":S=0:PLAY"O5B5DGGEC:DFGEC"
63 PAUSE6:S=S+1:Y=Y+S:SPRITEA,X,Y:IFY>235THEN55
64 GOTO63
65 SPRITEA:K=K-1:SPRITE1,240,K:IFK<20THEN67
66 GOTO65
67 SPRITEOFF:CLS:FORN=0TO99:LOCATERND(27),RND(23):PRINTCHR$(205):NEXT
68 LOCATE7,4PRINT"CONGRATULATIONS":LOCATE10,7PRINT"YOU CLEAR!":LOCATE9,13PRINT"SUPER PENPEN"
69 PLAY"O3Y2G6ABGGABR9G6F:O0C8CGCG"
70 PLAY"A9G8F7G4F5A6BAFO5GGG:CDEAGB"
71 GOTO2
72 SPRITE4:PALETS 0,15,5,8,13:PLAY"O0B4AGFEDC":PAUSE100
73 CLS:SPRITEOFF:LOCATE10,10PRINT"GAME OVER":PLAY"O5C5CGGAAGRFFEEDDC":PAUSE100:GOTO2