//TODO: convert this file/workflow over to UTF-8 strings /*ATTENTION*/ // // This file contains Shift_JIS text, care must be taken // when saving it so it retains its ANSI (932) codepage! //notes: * means match anything (and maybe nothing also) // < and > are the chosen delimiters because these // characters should always mean the same thing in // ASCII and Shift_JIS. This notation is useful to // unambiguously qualify certain menus by their ID // 0 means SOM uses TextOutA and 1 means DrawTextA //NEW: <, >, and $ are being used to adjust the built-in // English so that abbreviations can be avoided. But // $ (center mid screen") is also applied to all text // so that do_fix_widescreen_font_height can be used // (reminder: < and > will mess up HTML like markup) #ifdef SOM_MENUS_X //som.menus.h/cpp #undef SOM_MENUS_X #define SOM_MAIN_MENU NAMESPACE(MAIN) #include "som.menus.inl" #undef SOM_MAIN_MENU #define SOM_ITEM_MENU NAMESPACE(ITEM) #include "som.menus.inl" #undef SOM_ITEM_MENU #define SOM_CAST_MENU NAMESPACE(CAST) #include "som.menus.inl" #undef SOM_CAST_MENU #define SOM_EQUIP_MENU NAMESPACE(EQUIP) #include "som.menus.inl" #undef SOM_EQUIP_MENU #define SOM_WEAPON_MENU NAMESPACE(WEAPON) #include "som.menus.inl" #undef SOM_WEAPON_MENU #define SOM_HEAD_MENU NAMESPACE(HEAD) #include "som.menus.inl" #undef SOM_HEAD_MENU #define SOM_BODY_MENU NAMESPACE(BODY) #include "som.menus.inl" #undef SOM_BODY_MENU #define SOM_HANDS_MENU NAMESPACE(HANDS) #include "som.menus.inl" #undef SOM_HANDS_MENU #define SOM_FEET_MENU NAMESPACE(FEET) #include "som.menus.inl" #undef SOM_FEET_MENU #define SOM_SHIELD_MENU NAMESPACE(SHIELD) #include "som.menus.inl" #undef SOM_SHIELD_MENU #define SOM_ACCESSORY_MENU NAMESPACE(ACC) #include "som.menus.inl" #undef SOM_ACCESSORY_MENU #define SOM_MAGIC_MENU NAMESPACE(MAGIC) #include "som.menus.inl" #undef SOM_MAGIC_MENU #define SOM_STATS_MENU NAMESPACE(STATS) #include "som.menus.inl" #undef SOM_STATS_MENU #define SOM_STORE_MENU NAMESPACE(STORE) #include "som.menus.inl" #undef SOM_STORE_MENU #define SOM_SYSTEM_MENU NAMESPACE(SYS) #include "som.menus.inl" #undef SOM_SYSTEM_MENU #define SOM_LOAD_MENU NAMESPACE(LOAD) #include "som.menus.inl" #undef SOM_LOAD_MENU #define SOM_SAVE_MENU NAMESPACE(SAVE) #include "som.menus.inl" #undef SOM_SAVE_MENU #define SOM_OPTION_MENU NAMESPACE(OPTION) #include "som.menus.inl" #undef SOM_OPTION_MENU #define SOM_CONFIG_MENU NAMESPACE(CONFIG) #include "som.menus.inl" #undef SOM_CONFIG_MENU #define SOM_QUIT_MENU NAMESPACE(QUIT) #include "som.menus.inl" #undef SOM_QUIT_MENU #define SOM_TAKE_MENU NAMESPACE(TAKE) #include "som.menus.inl" #undef SOM_TAKE_MENU #define SOM_INFO_MENU NAMESPACE(INFO) #include "som.menus.inl" #undef SOM_INFO_MENU #define SOM_SHOP_MENU NAMESPACE(SHOP) #include "som.menus.inl" #undef SOM_SHOP_MENU #define SOM_SELL_MENU NAMESPACE(SELL) #include "som.menus.inl" #undef SOM_SELL_MENU #define SOM_ASCII_MENU NAMESPACE(ASCII) #include "som.menus.inl" #undef SOM_ASCII_MENU #define SOM_MENUS_X #else //... //notes: Essentially MENU are links to menus or at least exit // the current menu. STOP are up/down keyboard stops that // do not link to new menus. TEXT is just displayed text. // FLOW is different control codes... // //case: A case signals a branch in a pattern. Each case block // is a different branch which will be followed if the // text of the first MENU/STOP/TEXT is matched. A case // block can end either with 'cont' signaling control is // back to normal. Or by 'none', which also signals non- // match is acceptable and control should continue anyway. //cond: cond is short for conditional continue and can end an // 'item' block. If after the 'item' block a match can be // made against the subsequent text the item block will // exit. 'case' FLOW elements will be evaluated in turn // however the 'none' FLOW element will be ignored for // purposes of evaluating the conditional clause. // See 'item' and 'cont' for more details. //cont: cont is short for continue and ends an 'item' block. // See 'item' for details, and 'cond' also. //done: done like 'none' ends a 'case' block. done requires one // of the cases be matched (none does not.") // See 'case' for details. //item: This describes an element in a repeating list such as // an inventory selection menu. item blocks end with the // 'cont' FLOW code which signals where the item pattern // repeats. See 'cond' (conditional continue") also. //none: none ends a case block while also signaling a default // non-case is an acceptable match and control should // continue regardless. None by itself can also signal a // matching menu could not be found upon request. //trap: A 'trap' signals that keyboard control no longer has // access to the previous menu, and is trapped inside a // new sub-menu overlayed atop the original typically by // a fullscreen black tint. #undef X #define _(X) X #ifdef SOM_MAIN_MENU SOM_MAIN_MENU #define X MAIN MENU(_(X),0,MAIN,Main,"メインメニュー","Menu") MENU(_(X),0,ITEM,Item,"アイテム使用","Use Item") MENU(_(X),0,CAST,Cast,"補助魔法詠唱","Work Magic") MENU(_(X),0,EQUIP,Equip,"装備変更","Equip") MENU(_(X),0,STATS,Stats,"詳細ステータス参照","View Summary") MENU(_(X),0,STORE,Store,"アイテム整理","Arrange Inventory") MENU(_(X),0,SYS,Sys,"システム","System") #endif #ifdef SOM_ITEM_MENU SOM_ITEM_MENU #define X ITEM MENU(_(X),0,ITEM,Item,"アイテム使用\4アイテム使用","Use Item") FLOW(_(X),item,item selection...) MENU(_(X),0,MENU,Menu,"*","*") TEXT(_(X),1,HAVE,Have,"x%3d","x%3d") FLOW(_(X),cond,conditional continue...) FLOW(_(X),trap,confirmation dialog...) TEXT(_(X),0,OK,Ok,"%sを使用しますか?","Use %s?") MENU(_(X),0,YES,Yes,"はい","Yes") MENU(_(X),0,NO,No,"いいえ","No") #endif #ifdef SOM_CAST_MENU SOM_CAST_MENU #define X CAST MENU(_(X),0,CAST,Cast,"補助魔法詠唱\4補助魔法詠唱","Work Magic") FLOW(_(X),item,spell selection...) MENU(_(X),0,MENU,Menu,"*","*") FLOW(_(X),case,hack: cost/magic description) TEXT(_(X),1,COST,Cost,"魔法\4%3d","%3d") FLOW(_(X),none,hack: see case^) FLOW(_(X),cond,conditional continue) FLOW(_(X),trap,confirmation dialog...) TEXT(_(X),0,OK,Ok,"%sを詠唱しますか?","Use %s?") MENU(_(X),0,YES,Yes,"はい","Yes") MENU(_(X),0,NO,No,"いいえ","No") #endif #ifdef SOM_EQUIP_MENU SOM_EQUIP_MENU #define X EQUIP MENU(_(X),0,EQUIP,Equip,"装備変更\4装備変更","Equip") MENU(_(X),0,WEAPON,Weapon,"武器","Weapon") MENU(_(X),0,HEAD,Head,"兜","Head") MENU(_(X),0,BODY,Body,"鎧","Body") MENU(_(X),0,HANDS,Hands,"篭手","Hands") MENU(_(X),0,FEET,Feet,"具足","Feet") MENU(_(X),0,SHIELD,Shield,"盾","Shield") MENU(_(X),0,ACC,Acc,"装飾品","Accessory") MENU(_(X),0,MAGIC,Magic,"魔法","Magic") TEXT(_(X),0,EDGE,Edge,"装備\4斬","<%3d") TEXT(_(X),1,_POINT,_Point,"装備刺\4%3d","%3d") TEXT(_(X),1,_FIRE,_Fire,"装備火\4%3d","%3d") TEXT(_(X),1,_EARTH,_Earth,"装備土\4%3d",">%3d") TEXT(_(X),1,_WIND,_Wind,"装備風\4%3d","%3d") TEXT(_(X),1,_WATER,_Water,"装備水\4%3d",">%3d") TEXT(_(X),1,_HOLY,_Holy,"装備聖\4%3d","%3d") FLOW(_(X),none,continued from Nothing) TEXT(_(X),0,WT,Wt,"装備重量","%3.1fkg") TEXT(_(X),0,CAP,Cap,"装備可能重量","%3.1fkg") #endif #ifdef SOM_WEAPON_MENU SOM_WEAPON_MENU #define X WEAPON MENU(_(X),0,WEAPON,Weapon,"装備変更:武器","Weapon") #endif #ifdef SOM_HEAD_MENU SOM_HEAD_MENU #define X HEAD MENU(_(X),0,HEAD,Head,"装備変更:兜","Head") #endif #ifdef SOM_BODY_MENU SOM_BODY_MENU #define X BODY MENU(_(X),0,BODY,Body,"装備変更:鎧","Body") #endif #ifdef SOM_HANDS_MENU SOM_HANDS_MENU #define X HANDS MENU(_(X),0,HANDS,Hands,"装備変更:篭手","Hands") #endif #ifdef SOM_FEET_MENU SOM_FEET_MENU #define X FEET MENU(_(X),0,FEET,Feet,"装備変更:具足","Feet") #endif #ifdef SOM_SHIELD_MENU SOM_SHIELD_MENU #define X SHIELD MENU(_(X),0,SHIELD,Shield,"装備変更:盾","Shield") #endif #ifdef SOM_ACCESSORY_MENU SOM_ACCESSORY_MENU #define X ACC MENU(_(X),0,ACC,Acc,"装備変更:装飾品","Accessory") #endif #ifdef SOM_MAGIC_MENU SOM_MAGIC_MENU #define X MAGIC MENU(_(X),0,MAGIC,Magic,"装備変更:魔法","Magic") #endif #if defined(SOM_WEAPON_MENU)\ || defined(SOM_HEAD_MENU)\ || defined(SOM_BODY_MENU)\ || defined(SOM_HANDS_MENU)\ || defined(SOM_FEET_MENU)\ || defined(SOM_SHIELD_MENU)\ || defined(SOM_ACCESSORY_MENU)\ || defined(SOM_MAGIC_MENU) FLOW(_(X),item,item/magic selection...) MENU(_(X),0,MENU,Menu,"*","*") #ifdef SOM_MAGIC_MENU FLOW(_(X),case,hack: cost/magic description) TEXT(_(X),1,COST,Cost,"魔法\4%3d","%3d") FLOW(_(X),none,hack: see case^) //EXTENSION //2024 //som_game_equip_menu_text_422ab0 #else FLOW(_(X),case,hack: item count) TEXT(_(X),1,COST,Cost,"装備\4x%3d","x%3d") FLOW(_(X),none,hack: see case^) #endif FLOW(_(X),cond,conditional continue...) FLOW(_(X),case,attack/defense/none) #ifdef SOM_MAGIC_MENU TEXT(_(X),0,ATTACK,Attack,"攻撃力",">Attack") #else #ifdef SOM_WEAPON_MENU TEXT(_(X),0,ATTACK,Attack,"攻撃力",">Attack") TEXT(_(X),0,RADIUS,Radius,"長さ","Defense") #endif TEXT(_(X),0,WEIGHT,Weight,"重量","%2.1fkg") #endif TEXT(_(X),0,EDGE,Edge,"斬","<<%3d") TEXT(_(X),0,POINT,Point,"刺","<<%3d") TEXT(_(X),0,WIND,Wind,"風","<<%3d") TEXT(_(X),0,HOLY,Holy,"聖","<<%3d") TEXT(_(X),1,_EDGE2,_Edge2,"斬々\4%4d",">%4d") TEXT(_(X),1,_AREA,_Area,"殴々\4%3d",">%3d") TEXT(_(X),1,_AREA2,_Area2,"殴々\4%4d",">%4d") TEXT(_(X),1,_POINT,_Point,"刺々\4%3d",">%3d") TEXT(_(X),1,_POINT2,_Point2,"刺々\4%4d",">%4d") TEXT(_(X),1,_FIRE,_Fire,"火々\4%3d",">%3d") TEXT(_(X),1,_FIRE2,_Fire2,"火々\4%4d",">%4d") TEXT(_(X),1,_EARTH,_Earth,"土々\4%3d",">%3d") TEXT(_(X),1,_EARTH2,_Earth2,"土々\4%4d",">%4d") TEXT(_(X),1,_WIND,_Wind,"風々\4%3d",">%3d") TEXT(_(X),1,_WIND2,_Wind2,"風々\4%4d",">%4d") TEXT(_(X),1,_WATER,_Water,"水々\4%3d",">%3d") TEXT(_(X),1,_WATER2,_Water2,"水々\4%4d",">%4d") TEXT(_(X),1,_HOLY,_Holy,"聖々\4%3d",">%3d") TEXT(_(X),1,_HOLY2,_Holy2,"聖々\4%4d",">%4d") TEXT(_(X),1,_EST,_Est,"評価攻撃力\4%5.1f","%5.1f") TEXT(_(X),1,_EST2,_Est2,"評価防御力\4%5.1f","%5.1f") #endif #ifdef SOM_SYSTEM_MENU FLOW(_(X),trap,messages...) TEXT(_(X),0,LOADERR,LoadERR,"セーブデータがありません","There is no saved game") #endif #ifdef SOM_CONFIG_MENU SOM_CONFIG_MENU #define X CONFIG //Reminder: "PadID: " is a hack used to identify this menu TEXT(_(X),0,PAD,PadID,"パッドコンフィグ\4PadID: %s","%s") //%-42.42s TEXT(_(X),1,_PAD,_PadID,"パッドコンフィグ\4(%d)","(%d)") MENU(_(X),0,CONFIG,Config,"パッドコンフィグ\4パッドコンフィグ","Controller") STOP(_(X),0,CFG1,Cfg1,"ボタン1","Button 1") STOP(_(X),0,CFG2,Cfg2,"ボタン2","Button 2") STOP(_(X),0,CFG3,Cfg3,"ボタン3","Button 3") STOP(_(X),0,CFG4,Cfg4,"ボタン4","Button 4") STOP(_(X),0,CFG5,Cfg5,"ボタン5","Button 5") STOP(_(X),0,CFG6,Cfg6,"ボタン6","Button 6") STOP(_(X),0,CFG7,Cfg7,"ボタン7","Button 7") STOP(_(X),0,CFG8,Cfg8,"ボタン8","Button 8") TEXT(_(X),0,_CFG1,_Cfg1,"パッドコンフィグ\4*WS*","*") TEXT(_(X),0,_CFG2,_Cfg2,"パッドコンフィグ\4*WS*","*") TEXT(_(X),0,_CFG3,_Cfg3,"パッドコンフィグ\4*WS*","*") TEXT(_(X),0,_CFG4,_Cfg4,"パッドコンフィグ\4*WS*","*") TEXT(_(X),0,_CFG5,_Cfg5,"パッドコンフィグ\4*WS*","*") TEXT(_(X),0,_CFG6,_Cfg6,"パッドコンフィグ\4*WS*","*") TEXT(_(X),0,_CFG7,_Cfg7,"パッドコンフィグ\4*WS*","*") TEXT(_(X),0,_CFG8,_Cfg8,"パッドコンフィグ\4*WS*","*") FLOW(_(X),trap,confirmation dialog...) TEXT(_(X),0,OK,Ok,"この設定でよろしいですか?","Use these settings?") MENU(_(X),0,YES,Yes,"はい","Yes") MENU(_(X),0,NO,No,"いいえ","No") #endif #ifdef SOM_QUIT_MENU SOM_QUIT_MENU #define X QUIT MENU(_(X),0,QUIT,Quit,"ゲームを終了しますか?","Quit?") MENU(_(X),0,YES,Yes,"はい","Yes") MENU(_(X),0,NO,No,"いいえ","No") #endif #ifdef SOM_TAKE_MENU SOM_TAKE_MENU #define X TAKE MENU(_(X),0,TAKE,Take,"%sを取りますか?","Take %s?") MENU(_(X),0,YES,Yes,"はい","Yes") MENU(_(X),0,NO,No,"いいえ","No") #endif #ifdef SOM_SHOP_MENU SOM_SHOP_MENU #define X SHOP MENU(_(X),0,SHOP,Shop,"購入","Buy") FLOW(_(X),case,sell sub menu...) MENU(_(X),0,SELL,Sell,"売却","Sell") FLOW(_(X),none) TEXT(_(X),0,GOLD,Gold,"所持金額",">>>>Gold") TEXT(_(X),1,_GOLD,_Gold,"%5d%s","%5d%s") FLOW(_(X),item,inventory...) MENU(_(X),0,MENU,Menu,"*","*") FLOW(_(X),case,absent for 65535) TEXT(_(X),1,HAVE,Have,"x%5d","x%5d") FLOW(_(X),none,moving on) TEXT(_(X),1,COST,Cost,"%5d%s","%5d%s") FLOW(_(X),cond,conditional continue...) FLOW(_(X),case,attack/defense/etc...) TEXT(_(X),0,ATTACK,Attack,"攻撃力",">Attack") TEXT(_(X),0,RADIUS,Radius,"長さ","Defense") FLOW(_(X),none,...) FLOW(_(X),case,weight/etc...) TEXT(_(X),0,WEIGHT,Weight,"重量","%2.1fkg") TEXT(_(X),0,EDGE,Edge,"斬","<<%3d") TEXT(_(X),0,POINT,Point,"刺","<<%3d") TEXT(_(X),0,WIND,Wind,"風","<<%3d") TEXT(_(X),0,HOLY,Holy,"聖","<<>>>Gold") TEXT(_(X),1,_GOLD2,_Gold2,"%5d%s","%5d%s") TEXT(_(X),0,BULK,Bulk,"合計金額",">>>>Total") TEXT(_(X),1,_BULK,_Bulk,"%5d%s","%5d%s") #endif #ifdef SOM_SELL_MENU SOM_SELL_MENU #define X SELL MENU(_(X),0,SELL,Sell,"売却","Sell") TEXT(_(X),0,GOLD,Gold,"所持金額",">>>>Gold") TEXT(_(X),1,_GOLD,_Gold,"%5d%s","%5d%s") FLOW(_(X),item,inventory...) MENU(_(X),0,MENU,Menu,"*","*") TEXT(_(X),1,HAVE,Have,"x%3d","x%3d") TEXT(_(X),1,COST,Cost,"%5d%s","%5d%s") FLOW(_(X),cond,conditional continue...) FLOW(_(X),trap,transaction dialog...) MENU(_(X),0,YES,Yes,"売却\4売却","Sell") TEXT(_(X),1,AMOUNT,Amount,"x%3d","x%3d") TEXT(_(X),0,NO,No,"売却\4やめる","Cancel") TEXT(_(X),0,GOLD2,Gold2,"所持金額",">>>>Gold") TEXT(_(X),1,_GOLD2,_Gold2,"%5d%s","%5d%s") TEXT(_(X),0,BULK,Bulk,"合計金額",">>>>Total") TEXT(_(X),1,_BULK,_Bulk,"%5d%s","%5d%s") #endif #ifdef SOM_INFO_MENU SOM_INFO_MENU #define X INFO MENU(_(X),0,INFO,Info,"鑑定","Show") FLOW(_(X),case,sell sub menu...) MENU(_(X),0,SELL,Sell,"鑑定\4売却","Sell") FLOW(_(X),none) TEXT(_(X),0,GOLD,Gold,"鑑定\4所持金額",">>>>Gold") TEXT(_(X),1,_GOLD,_Gold,"鑑定\4%5d%s","%5d%s") FLOW(_(X),item,inventory...) MENU(_(X),0,MENU,Menu,"*","*") FLOW(_(X),case,no cost--2017) TEXT(_(X),1,FREE,Free,"鑑定\4 0%s","0%s") //2017 FLOW(_(X),case,will cost you--2017) TEXT(_(X),1,COST,Cost,"鑑定\4%5d%s","%5d%s") FLOW(_(X),done,one or the other--2017) FLOW(_(X),cond,conditional continue) FLOW(_(X),trap,transaction dialog...) MENU(_(X),0,YES,Yes,"鑑定\4鑑定","Show") TEXT(_(X),0,NO,No,"鑑定\4やめる","Cancel") TEXT(_(X),0,GOLD2,Gold2,"鑑定\4所持金額",">>>>Gold") TEXT(_(X),1,_GOLD2,_Gold2,"鑑定\4%5d%s","%5d%s") TEXT(_(X),0,BULK,Bulk,"鑑定\4合計金額",">>>>Total") TEXT(_(X),1,_BULK,_Bulk,"鑑定\4%5d%s","%5d%s") #endif #ifdef SOM_ASCII_MENU SOM_ASCII_MENU #define X ASCII //junk that appears on screen from time to time MENU(_(X),0,ASCII,Ascii," !\"#$%&,()*+,-./","") TEXT(_(X),0,ASCIIb,AsciiB,"0123456789:;<=>?","") TEXT(_(X),0,ASCIIc,AsciiC,"@ABCDEFGHIJKLMNO","") TEXT(_(X),0,ASCIId,AsciiD,"PQRSTUVWXYZ[\\]^_","") TEXT(_(X),0,ASCIIe,AsciiE,",abcdefghijklmno","") TEXT(_(X),0,ASCIIf,AsciiF,"pqrstuvwxyz{|}~","") #endif #ifdef NAMECLOSE NAMECLOSE #elif defined NAMESPACE } #endif #undef _ #undef X #endif