文書の過去の版を表示しています。
ハイハイスクールアドベンチャー PalmOS版
あらすじ
2019年神奈山県立ハイ高等学校は 地盤が弱く校舎の老朽化も進んだため、 とうとう廃校にする以外方法がなく なってしまった。
ところで大変な情報を手に入れた。 それは、
「ハイ高校にATOMIC BOMBが仕掛けられている。」
と、いうものだ。 どうやらハイ高が廃校になった時、 気が狂った理科の先生がATOMIC BOMBを 学校のどこかに仕掛けてしまったらしい。
お願いだ。我が母校のコナゴナになった 姿を見たくはない。 早くATOMIC BOMBを取り除いてくれ……!!
行動は英語で、“<動詞>” 或いは、“<動詞>”+“<目的語>“のように入れていただきたい。 例えば、”look room”と入れれば部屋の様子を見ることが出来るという訳だ。
それでは Good Luck!!!…………
概要
PalmOS版のハイハイスクールアドベンチャーです。 既にPalmOSネイティブのデバイスは販売されておりませんが、もし実行環境をお持ちの方がいらっしゃれば、是非、トライしてみてください。 なお、NDKを使用しており、ARMプロセッサーのモデル以外では動作しません。 解像度は320×320を推奨しますが、160×160のデバイスでも動かないことはないです。
ダウンロードとインストール
アプリケーションとデータをこちらからダウンロードしてください。 展開して出てきた high.prc および全てのpdbファイルを HotSync でデバイスにインストールしてください。
あれこれ
NDKのこと
PalmOSはもともとモトローラの68KをCPUとして採用したデバイス向けのものだったが、ARMを採用した際に互換性のための68Kエミュレーションとは別に、ARMネイティブで動作する高速なサービスを組み込めるように NDKをリリースした。
68Kむけのバイナリコードを動かすのとはことなり、インターフェイスなどに制約はあるものの、ARMネイティブで動くコードは高速で、ハイハイスクールアドベンチャーも、グラフィックス周りをNDKによりARMネイティブ化できたことでリリースのめどが立った。
一応、68Kのコードもあるので、非ARMのデバイスで動かすこともできなくはないが、絶望的に遅いので全く推奨はしない。
なお、画面への描画の途中経過は見えず、最後にばっと表示される。 これは移植されたほとんどの環境でそうなのだが1)、これを見た Hayamiに「ダサイ」と言われた。
モダンなグラフィックライブラリは大体ダブルバッファ使っていたりするし、レンダリングは一気に行われるスタイルだったり、UI用のスレッド以外では表示の更新ができなかったりという制約の中でやっているので、そんなことをいわれてもどうにもならないのだ。
- high.h
/* * High High School Adventure * * Copyright(c)1985 ZOBplus * Copyright(c)2002,2025 ZOBplus hiro <hiro@zob.ne.jp> */ #ifndef HIGH_H #define HIGH_H #define ZAMA_CREATOR_ID 'ZAMA' #define ZAMA_PREFS_ID (0) #define ZAMA_PREFS_VER (100) #define ZAMA_ITEM_NUMBERS (12) #define ZAMA_CMD_INVALID (0) #define ZAMA_CMD_END (61) #define ZAMA_SILK_NOTIFY (1) #define ZAMA_CODE_ISAKO (135) #define ZAMA_GLOBAL_VAR (5000) #define ZAMA_GRAPH_VAR (5001) enum ZamaDirection { DirInvalid = -1, DirNorth, DirSouth, DirWest, DirEast, DirUp, DirDown, DirEnter, DirExit, DirMax }; enum ZamaSex { SexInvalid = 0, SexBoy, SexGirl, SexMax }; enum ActType { ActComp = 0, ActAction }; enum CmpOperator { CMP_NOP = 0, CMP_EQ, CMP_NE, CMP_GT, CMP_GE, CMP_LT, CMP_LE, }; enum ActOperator { ACT_NOP = 0, ACT_MOVE, ACT_ASGN, ACT_MESG, ACT_DLOG, ACT_LOOK, ACT_SND, ACT_OVER, }; enum RuleValueType { TYPE_NONE = 0, TYPE_FACT, TYPE_PLACE, TYPE_SYSTEM, TYPE_VECTOR, }; typedef struct CmdHeaderType { UInt16 _act:1; UInt16 _op:3; UInt16 _pad:4; UInt16 _type:3; UInt16 _id:5; } CmdHeaderType; typedef CmdHeaderType *CmdHeaderPtr; typedef struct CmdBodyType { UInt16 _type:3; UInt16 _id:5; UInt16 _value:8; } CmdBodyType; typedef CmdBodyType *CmdBodyPtr; typedef struct CmdBlkType { CmdHeaderType _head; CmdBodyType _body; } CmdBlkType; typedef CmdBlkType *CmdBlkPtr; typedef struct RuleType { UInt8 _mapId; UInt8 _cmdN; UInt8 _objN; UInt8 _pad; UInt8 _args[44]; } RuleType; typedef RuleType *RulePtr; #define EndOfRule (0xff) typedef struct ZamaPrefsType { UInt8 _lastSaved; Boolean _suspended; FontID _curFont; Boolean _linedraw; Boolean _sound; } ZamaPrefsType; typedef ZamaPrefsType *ZamaPrefsPtr; typedef struct ZamaMapType { UInt8 graphic[0x400]; UInt8 reaction[0x100]; UInt8 mesg[0x300]; } ZamaMapType; typedef ZamaMapType *ZamaMapPtr; typedef struct ZamaUserDataType { UInt8 vector[87][8]; UInt8 place[ZAMA_ITEM_NUMBERS]; UInt8 fact[15]; union { struct { UInt8 mapID, mapW, cmdN, objN, dret, rand, dlogOk, dmesg; } n; UInt8 ary[8]; /* 0: mapID 1: mapW 2: cmdN 3: objN 4: dret 5: rand */ /* 6: dlogOk 7: dmesg 8: reserved */ } sys; } ZamaUserDataType; typedef ZamaUserDataType *ZamaUserDataPtr; typedef struct ZamaWordType { Char word[4]; UInt8 number; } ZamaWordType; typedef ZamaWordType *ZamaWordPtr; typedef struct ZamaMesgType { UInt8 len; Char mesg[1]; } ZamaMesgType; typedef ZamaMesgType *ZamaMesgPtr; typedef struct ZamaReactionType { UInt16 action; UInt8 number; } ZamaReactionType; typedef ZamaReactionType *ZamaReactionPtr; #ifndef stdSilkHeight #define stdSilkHeight (65) #endif /* stdSilkHeight */ #endif /* HIGH_H */

