資訊修改
1.16色色盤資料:16.PAT,每個顏色3 byte,表示RGB(0~63) 2.圖集BLK檔:各圖依次連接 CARD.BLK = 卡片圖集 CHANCE.BLK = 命運事件圖集 DATE.BLK = 節日圖集 NEWS.BLK = 新聞事件圖集 水平byte數:2 byte,水平點數=水平byte數*8 垂直點數:2 byte 影像資料:16色4 Plane格式 3.背景圖:SCREEN.MKF,資訊集封裝格式,640x400,須採背景圖解壓法解壓 4.前景圖:資訊集封裝格式,各組資訊為前景圖格式 PPM.MKF = 人物中圖 PPS.MKF = 人物小圖 SAYWIN.MKF = 人物或事件話語圖 WINPPSAY.MKF = 人物勝利話語圖 5.人物臉型圖像:FACE.PCV,子資訊集封裝格式,各組資訊為前景圖格式 6.前景組圖:資訊集封裝格式 BB.MKF = 各式動畫與街道人物圖 CCGAME.MKF = 遊樂場錢幣掉落圖 PPCC.MKF = 人物遊樂場動作圖 PPG.MKF = 人物擲骰動作圖 PPW.MKF = 人物行進圖 WINTAB.MKF = 各種選單圖 各組資訊為子資訊集封裝格式,各子資訊格式為前景圖格式 7.房屋方塊集:由各圖像連接組成 BASE.GOP:每個48x48(1152 byte),16色4 Plane影像格式 SHOUSE.GOP:每個8x8(32 byte),用以繪製地圖縮圖 8.地圖資訊檔:MAP.MKF,資訊集封裝格式,每個地圖使用20個資訊 #00 = 地圖組成,50x50x2 byte整數,指向下述地圖方塊集 #01 = 地圖方塊集,每個48x48(1152 byte),16色4 Plane影像格式 #02 = 座標地點轉換表,每個座標10 byte(5個整數),位置=(y*50+x)*10: 路段編號:路段名稱索引值(由1開始) = 路段編號+54h(84) 地點形態:1=事件,2=道路,3=港口,4=車站,5=海港,6=機場,7=建地,8=租地,9=公司 實際作用地點X,Y座標:0,0表無 資訊編號:按地點形態指向各自的資訊 #03 = 不明 #04 = 地價表,每個土地12 byte 地價:4 byte 房價:4 byte 不明:2 byte 擁有者:2 byte,角色順序編號(由1開始),0表無 #05 = 過路費表,每個土地24 byte(6個長整數),依次表示空地及1~5級房的租金 #06 = 公司股票承銷資訊,每個12h=18 byte 股票編號:2 byte,原值無用,新遊戲時會重新計算,指向上市公司股票資訊 過路費計算方式:2 byte,假設過路費計算參數為N 00 = 固定費用N元 01 = 擲兩顆骰子總和*N元 02 = (1+擲兩顆骰子總和/10)*N元 03 = 住宿1~3天*N元 04 = 住宿2天*N元 05 = 擁有的土地數*N元 06 = 擁有的房屋數*N元 過路費計算參數:2 byte 承銷價:4 byte,實際承銷價=承銷價/10000 獲利:4 byte,月底分紅用 承銷現量:2 byte 經營者:2 byte,角色順序編號(由1開始),0表無 #07 = 不明 #08 = 國曆假日檔,每組4個2 byte整數,依次為是否放假、月、日、節日圖索引 #09 = 農曆假日檔,格式同國曆假日檔 #10 = 上市公司股票資訊,每個2Eh=46 byte 公司名稱索引值:2 byte,由1開始,指向WORD.DAT 上市剩餘天數:2 byte,-1表不上市 承銷資訊索引值:2 byte,由1開始,指向公司股票承銷資訊,0表無 不明:2 byte 今日價:4 byte浮點數 昨日價:4 byte浮點數 現量:2 byte 市場流通量:2 byte (不含角色買走的數量,新遊戲開始會扣除承銷現量) 計算參數:6個4 byte浮點數,計算今日價用 經過天數:2 byte,計算今日價用 #11 = 新聞事件表,每個4 byte(第一組為事件數目),隨機使用 事件編號:2 byte 不明:2 byte #12 = 命運事件表,每個4 byte,新遊戲開始時會重新排列並依次循環進行 事件編號:2 byte 不明:2 byte #13 = 不明 #14 = 不明 #15 = 內定參與角色,均2 byte整數,第一個為人數,其餘為角色編號(由0開始) 9.日曆檔:用以換算國曆對應的農曆 CALD.A = 國曆日期檔(1996/1/1到2020/12/31) CALD.B = 農曆日期檔 每4 byte一組,格式為DD MM YY YY,不可超過64KB 10.文字訊息與字形檔 WOR16.ASC = 各字形的中文字碼,用以決定中文字的字形索引值 WOR16.FON = 每字30 byte (16x15) WOR24.FON = 每字72 byte (24x24) WORD.DAT = 文字訊息檔,磁片版每10 byte一個訊息,重訂光碟版每12 byte一個訊息 11.卡片資訊:CARDDATA.DATA,每個卡片14 byte 卡片圖編號:2 byte,由0開始,指向CARD.BLK 名稱索引值:2 byte,由1開始,指向WORD.DAT 價格:2 byte 出現機率:2 byte,百分比 使用時機:2 byte 0=自動 1=隨時 2=人物 3=非空地 4=土地 5=房屋 6=隨時 7=自己土地 8=自己房屋 9=自己房屋 10=對手土地 11=對手 不明:4 byte 12.角色資訊檔:PLAYER.DAT,每位12h=18 byte NN NN A1 A1 A2 A2 A3 A3 A4 A4 A5 A5 -- -- -- -- -- -- NN = 人名索引值(由1開始),指向WORD.DAT A1 = 不明 A2~A5 = 能力值,分別表示金錢、運氣、購地、買股 13.視窗定義檔:WINDOW.MKF,資訊集封裝格式,用以定義遊戲中各視窗位置與內容 *** 資訊集封裝格式 各組資料位置指標:4 byte,可有多個,0或超出檔案大小為結束 各組資料 *** 子資訊集封裝格式 資料位置指標數:4 byte 各組資料位置指標:各4 byte,實際位置=指標*4 資料結束指標:4 byte,檔尾位置=指標*4 各組資料 *** 前景圖格式 水平byte數:2 byte,水平點數=水平byte數*8 垂直點數:2 byte 影像資料:須採前景圖解壓法解壓 *** 16色4 Plane影像格式 影像資料的安排是4個Plane分開,每個像點在對應的Plane佔1位元,實際像點 值由此4個Plane的位元所組成。 假設第1個Plane的位元為a,第2~4個Plane的位元分別為b、c、d,則實際的 像點值=dcba,指向16色色盤資料。 *** 背景圖解壓法 重複下列程序: f = 讀取1 byte case (f) { 00: 解壓結束 01: 輸出1 byte背景色 02: c = 讀取1 byte 輸出c byte背景色 03: c = 讀取2 byte整數(低位元組在前) 輸出c byte背景色 04: 讀取4 byte分別輸出至4 Plane(由低位元Plane開始) 05: c = 讀取1 byte 分別讀取c byte輸出至4 Plane(由低位元Plane開始) 06: c = 讀取2 byte整數(低位元組在前) 分別讀取c byte輸出至4 Plane(由低位元Plane開始) 07: b = 讀取1 byte c = 讀取1 byte 輸出8個顏色值b共c次 08: b = 讀取1 byte c = 讀取2 byte整數(低位元組在前) 輸出8個顏色值b共c次 09: d = 讀取1 byte 分別複製(4 Plane)在(目前輸出位置-d)的1 byte資料 0A: d = 讀取1 byte c = 讀取1 byte 分別複製(4 Plane)在(目前輸出位置-d)的1 byte資料c次 0B: d = 讀取1 byte c = 讀取2 byte整數(低位元組在前) 分別複製(4 Plane)在(目前輸出位置-d)的1 byte資料c次 0C: d = 讀取2 byte整數(低位元組在前) 分別複製(4 Plane)在(目前輸出位置-d)的1 byte資料 0D: d = 讀取2 byte整數(低位元組在前) c = 讀取1 byte 分別複製(4 Plane)在(目前輸出位置-d)的1 byte資料c次 0E: d = 讀取2 byte整數(低位元組在前) c = 讀取2 byte整數(低位元組在前) 分別複製(4 Plane)在(目前輸出位置-d)的1 byte資料c次 0F: d = 讀取1 byte整數 c = 讀取1 byte整數 分別複製(4 Plane)在(目前輸出位置-d)的c byte資料 10: d = 讀取1 byte整數 c = 讀取2 byte整數(低位元組在前) 分別複製(4 Plane)在(目前輸出位置-d)的c byte資料 11: d = 讀取2 byte整數(低位元組在前) c = 讀取1 byte整數 分別複製(4 Plane)在(目前輸出位置-d)的c byte資料 12: d = 讀取2 byte整數(低位元組在前) c = 讀取2 byte整數(低位元組在前) 分別複製(4 Plane)在(目前輸出位置-d)的c byte資料 13: 調整輸入緩衝區指標在32KB以內 } *** 前景圖解壓法 back = false 重複下列程序: f = 讀取1 byte case (f) { 00: 解壓結束 01: if back then back = false 檔案移到ret_p的位置 end if 換下一水平線 (y+=1, x-=xsize) 02: 輸出1 byte背景色 03: c = 讀取1 byte 輸出c byte背景色 04: mask = 讀取1 byte 分別讀取1 byte按mask值(位元1才輸出)輸出至4 Plane(由低位元Plane開始) 05: c = 讀取1 byte 執行下列c次: mask = 讀取1 byte 分別讀取1 byte按mask值(位元1才輸出)輸出至4 Plane(由低位元Plane開始) 06: 分別讀取1 byte輸出至4 Plane(由低位元Plane開始) 07: c = 讀取1 byte 分別讀取c byte輸出至4 Plane(由低位元Plane開始) 08: b = 讀取1 byte c = b高4位元+1 b = b低4位元 輸出8個顏色值b共c次 09: c = 讀取1 byte+1 b = 讀取1 byte 輸出8個顏色值b共c次 0A: 分別讀取1 byte輸出至4 Plane兩次(由低位元Plane開始) 0B: 分別讀取1 byte輸出至4 Plane三次(由低位元Plane開始) 0C: 分別讀取1 byte輸出至4 Plane四次(由低位元Plane開始) 0D: 讀取4 byte c = 讀取1 byte+1 將前面讀取的4 byte分別輸出至4 Plane c次(由低位元Plane開始) 0E: p = 檔案目前位置 d = 讀取2 byte整數(低位元組在前) ret_p = 檔案目前位置 back = true 檔案移到p-d的位置 0F: mask = 讀取1 byte b = 讀取1 byte c = b高4位元 b = b低4位元 按mask值(位元1才輸出)輸出8個顏色值b共c次 10: c = 讀取1 byte mask = 讀取1 byte b = 讀取1 byte 按mask值(位元1才輸出)輸出8個顏色值b共c次 11: p = 目前檔案位置 d = 讀取2 byte整數(低位元組在前) 到(p-d)分別讀取1 byte輸出至4 Plane(由低位元Plane開始) 12: p = 檔案目前位置 d = 讀取2 byte整數(低位元組在前) 到(p-d)分別讀取1 byte輸出至4 Plane兩次(由低位元Plane開始) 13: p = 檔案目前位置 d = 讀取2 byte整數(低位元組在前) 到(p-d)分別讀取1 byte輸出至4 Plane三次(由低位元Plane開始) 14: p = 檔案目前位置 d = 讀取2 byte整數(低位元組在前) 到(p-d)分別讀取1 byte輸出至4 Plane四次(由低位元Plane開始) 15: p = 檔案目前位置 d = 讀取2 byte整數(低位元組在前) c = 讀取1 byte+1 到(p-d)分別讀取1 byte輸出至4 Plane c次(由低位元Plane開始) 16: p = 檔案目前位置 d = 讀取2 byte整數(低位元組在前) 到(p-d): mask = 讀取1 byte 分別讀取1 byte按mask值(位元1才輸出)輸出至4 Plane(由低位元Plane開始) 17: c = 讀取1 byte p = 檔案目前位置 d = 讀取2 byte整數(低位元組在前) 到(p-d)並執行下列c次: mask = 讀取1 byte 分別讀取1 byte按mask值(位元1才輸出)輸出至4 Plane(由低位元Plane開始) 18: c = 讀取1 byte p = 檔案目前位置 d = 讀取2 byte整數(低位元組在前) 到(p-d)分別讀取c byte輸出至4 Plane(由低位元Plane開始) }