わくわくシステム
(Version 1.1)

▼わくわくシステムとは?▼

仮想VRAM上にキャラクタを1ドット単位で書き込んでい”配置”プログラムと、
仮想VRAMの表示、仮想VRAMのデータの消去のプログラムがセットになったサブルーチン集です。

「マシン語は何となく出来るんだけど、
 仮想VRAM表示プログラムを自分で作るのはめんどくさいなー。」という人にお勧めです。

▼わくわくシステムの特徴▼

1.仮想VRAMは4行表示のポケコンの画面と同じ144*32ドットです。
  (非表示部分も含めると158*32ドットになります。)
2.配置するキャラクタの大きさは、1*1ドット〜8*8ドットまでです。
3.マシン語のIOCSと同じ感覚で使えます。
4.無駄に大きいプログラムサイズ!(3分の2以上は仮想VRAMが占めています。)
5.仮想VRAMの表示範囲の設定機能付き。
6.G850でも使用可能(表示されるのは上4行のみですが…)。
7.もちろんフリーウェアなので自由に使えます。改造もOK!(著作権は放棄しません。)

●アドレスマップ

アドレス内容種類ラベル
100H〜102H未使用(ご自由にお使いください) ‐ SPA
103H〜1A0H仮想VRAM1段目(非表示部分含む)データV0
1A1H〜23EH仮想VRAM2段目(   〃   )データV2
23FH〜2DCH仮想VRAM3段目(   〃   )データV3
2DDH〜37AH仮想VRAM4段目(   〃   )データV4
37BH仮想VRAM1段目の表示ドット数データH1
37CH仮想VRAM2段目の  〃データH2
37DH仮想VRAM3段目の  〃データH3
37EH仮想VRAM4段目の  〃データH4
37FHフルドットの機種か否かフラグFUL
380H〜44BH仮想VRAMにキャラクタを配置するサブルーチンMAI
44CH〜459H仮想VRAMの内容をクリアするサブルーチンCLE
45AH〜4C7H仮想VRAMを表示するサブルーチンDIS
4C8H〜4CFH未使用(ご自由にお使いください) ‐ SP2

●G815/G850ユーザーの方へお願い!!

ご存知の方もいるかと思いますが、
E200/G800シリーズの画面にはフルドットの機種(G815/G850)と、そうでない機種があります。
わくわくシステムでは、デフォルトの設定が非フルドットの機種用になっているので、
G815/G850ユーザーの方は、ポケコンにわくわくシステムを入れた状態でRUN MODEで、

POKE &H37F,1 [RETURN] として設定を変えてください。

●座標について

仮想VRAMの座標は、左上を(0,0)にして
X座標は0〜143、Y座標は0〜31となっています。

配置するキャラクタの座標は、そのキャラクタの左上のドットになります。
これは、G815やG850で使う『GCURSOR』とは異なる考え方なので注意してください。

●「わくわくシステム」の使い方

キャラクタを仮想VRAMに配置する 

Bレジスタ   配置するキャラクタの横の長さ(1〜8)
Eレジスタ   配置するキャラクタのX座標(0〜255)
Dレジスタ   配置するキャラクタのY座標(0〜255)
HLレジスタ  配置するキャラクタのデータの開始アドレス
実行アドレス  CALL 380H
例:モンスターを(10,25)の位置に配置する場合。



上のリストを実行すれば仮想VRAM上の(10,25)の位置にモンスターのデータが書き込まれます。
そして仮想VRAMを表示すると・・・

使い方としては、ポケコンに内蔵されているIOCSと同じ感覚で使えます。

●画面からはみ出す座標について

座標を指定するDレジスタとEレジスタは、0〜255の範囲で指定出来ますが、
画面からはみ出す座標(X座標なら144〜,Y座標なら32〜)を
指定した場合でも配置されないだけでエラーにはなりません。
また、下の表のように座標のデータが249〜255の場合だとその数値は
マイナスの座標としてシステムが認識します。

もとの座標システムが認識する座標
249(0F9H)−7
250(0FAH)−6
251(0FBH)−5
252(0FCH)−4
253(0FDH)−3
254(0FEH)−2
255(0FFH)−1

上図の様に、キャラクタの一部が画面の外にはみ出す配置も可能です。
(1)(2)(5)の様に、配置されるキャラクタの横の長さが短い時でも
Bレジスタの数値は、元のキャラクタの横の長さを指定して下さい。(この場合は”5”ですね。)

 仮想VRAMを表示する 

実行アドレス  CALL 45AH

このアドレスを実行すると仮想VRAMが表示されます。
デフォルトの設定では、ポケコンの画面全体に仮想VRAMを表示するようになっていますが、
実際にゲームを作る場合にポケコンの画面全体に仮想VRAMが表示されると、
スコア等の表示が出来なくて困る場合があります。

そこで、仮想VRAMの表示範囲を変える説明をします。

●横方向の表示範囲を決める

仮想VRAMのそれぞれの段を何ドット分表示させるか(0〜144)を決めて、
37BH〜37EHにその数値を入力します。(『0』を入れた場合は表示されません)

あらかじめ仮想VRAMには下の様なデータが入っているとします。


<例1>
37BH(1段目)=144
37CH(2段目)=144
37DH(3段目)=144
37EH(4段目)=144

仮想VRAMの内容を全て表示します。(デフォルトの設定)

<例2>
37BH(1段目)=100
37CH(2段目)=100
37DH(3段目)=100
37EH(4段目)=100

1段目〜4段目まで左から100ドット表示します。

<例3>
37BH(1段目)=144
37CH(2段目)=0
37DH(3段目)=0
37EH(4段目)=144

1段目と4段目のみ表示します。

<例4>
37BH(1段目)=100
37CH(2段目)=110
37DH(3段目)=120
37EH(4段目)=130

それぞれの段で違うドット数を表示する事もできます。

 仮想VRAMの内容をクリアする 

実行アドレス  CALL 44CH

このアドレスを実行すると、仮想VRAMの内容が消去されます。
これについては、特に説明は要らないかと思います。
●内部的な話

仮想VRAMは1行が144バイト(ドット)ですが、実際には144バイトの
仮想VRAMの両端に7バイトずつ予備のスペースが設けてあります。

これは、配置するキャラクタが画面の外にはみ出した時のためのスペースなので
あまり気にしないで下さい。

●わくわくシステム(Version 1.1)ソースリスト
コメントがなくて申し訳ない...
10      ORG  100H
20SPA:  DS   3
30V0:   DS   7
40V1:   DS   151
50V2:   DS   158
60V3:   DS   158
70V4:   DS   158
80H1:   DB   144
90H2:   DB   144
100H3:  DB   144
110H4:  DB   144
120FUL: DB   0
130PUT: LD   A,B
140     LD   (BOX),A
150     LD   A,D
160     ADD  A,10
170     LD   D,A
180     LD   A,E
190     ADD  A,10
200     LD   E,A
210     LD   (XZA),DE
220     LD   DE,UP
230     LD   BC,8
240     LDIR
250     LD   HL,UP
260     LD   C,8
270     LDIR
280     LD   A,(XZA)
290     CP   154
300     RET  NC
310     LD   B,A
320     LD   A,(BOX)
330     ADD  A,B
340     CP   11
350     RET  C
360     LD   A,(YZA)
370     CP   42
380     RET  NC
390     CP   3
400     RET  C
410     LD   DE,0
420     CP   10
430     JR   NC,NE3
440     SUB  2
450     DEC  D
460     JR   NE4
470NE3: SUB  10
480L1:  CP   8
490     JR   C,NE4
500     SUB  8
510     INC  D
520     JR   L1
530NE4: LD   E,A
540     OR   A
550     JR   Z,NE5
560     LD   B,E
570L2:  PUSH BC
580     LD   B,8
590     LD   HL,UP
600L3:  SLA  (HL)
610     INC  HL
620     DJNZ L3
630     POP  BC
640     DJNZ L2
650NE5: LD   A,8
660     SUB  E
670     LD   B,A
680L4:  PUSH BC
690     LD   B,8
700     LD   HL,DWN
710L5:  SRL  (HL)
720     INC  HL
730     DJNZ L5
740     POP  BC
750     DJNZ L4
760     LD   HL,V0
770     LD   A,D
780     CP   255
790     JR   NZ,NE6
800     LD   A,(XZA)
810     SUB  3
820     LD   E,A
830     LD   D,0
840     ADD  HL,DE
850     JR   KK
860NE6: OR   A
870     JR   Z,NE7
880     LD   B,D
890     LD   DE,158
900L6:  ADD  HL,DE
910     DJNZ L6
920NE7: LD   A,(XZA)
930     SUB  3
940     LD   E,A
950     LD   D,0
960     ADD  HL,DE
970     LD   DE,UP
980     PUSH HL
990     CALL WOW
1000    POP  HL
1010    LD   A,(YZA)
1020    CP   34
1030    RET  NC
1040    LD   DE,158
1050    ADD  HL,DE
1060KK: LD   DE,DWN
1070WOW:LD   A,(BOX)
1080    LD   B,A
1090L7: LD   A,(DE)
1100    OR   (HL)
1110    LD   (HL),A
1120    INC  DE
1130    INC  HL
1140    DJNZ L7
1150    RET
1160BOX:DB   0
1170XZA:DB   0
1180YZA:DB   0
1190UP: DS   8
1200DWN:DS   8
1210CLE:LD   HL,V0
1220    LD   DE,V0+1
1230    LD   (HL),0
1240    LD   BC,631
1250    LDIR
1260    RET
1270DIS:LD    IX,37BH
1280    LD    DE,0
1290    LD    HL,V1
1300    LD    A,(FUL)
1310    OR    A
1320    JR    Z,E2
1330E1: LD    B,(IX)
1340    INC   B
1350    DEC   B
1360    JR    Z,NE8
1370    PUSH  DE
1380    PUSH  HL
1390    PUSH  IX
1400    CALL  0BFD0H
1410    POP   IX
1420    POP   HL
1430    POP   DE
1440NE8:INC   IX
1450    INC   D
1460    LD    BC,158
1470    ADD   HL,BC
1480    LD    A,D
1490    CP    4
1500    JR    NZ,E1
1510    RET
1520E2: LD    B,(IX)
1530    INC   B
1540    DEC   B
1550    JR    Z,NE9
1560    LD    A,B
1570    LD    (YOK),A
1580    PUSH  IX
1590    PUSH  DE
1600    PUSH  HL
1610E3: LD    B,5
1620    LD    A,(YOK)
1630    CP    5
1640    JR    NC,E4
1650    LD    B,A
1660E4: PUSH  DE
1670    CALL  0BFD0H
1680    POP   DE
1690    INC   E
1700    INC   HL
1710    INC   HL
1720    LD    A,(YOK)
1730    SUB   6
1740    LD    (YOK),A
1750    JR    C,E5
1760    JR    NZ,E3
1770E5: POP   HL
1780    POP   DE
1790    POP   IX
1800NE9:INC   IX
1810    INC   D
1820    LD    BC,158
1830    ADD   HL,BC
1840    LD    A,D
1850    CP    4
1860    JR    NZ,E2
1870    RET
1880YOK:DB    0
1890SP2:DS    8
========================
  copyright(c)2000-2016 咳止組(咳めぐ)
========================


FOR E200/G801/G802/G803/G805 
    G811/G813/G815/G820/G830
    G850/G850S/G850V/G850VS
 lzh形式   zip形式 

ゲーム一覧に戻る  TOPページへ戻る
 
inserted by FC2 system