- BORLAND/: Borland C++ 4.52 (chosen over 4.5 by byte-match: CODE/RP/CW32.LIB
is identical to 4.52's install lib). BCC32/TLINK32/TLIB/MAKE run natively on
Win11; CODE/BT/OPT.MAK is the shipped BTL4OPT.EXE's exact flag recipe
(extender = Borland PowerPack DPMI32, not Phar Lap TNT).
- restoration/source410/: the literal 1995-form reconstruction of the missing
BT game source (never mixed into CODE/). Round 1-3 state:
* 6 of 10 surviving original TUs COMPILE CLEAN under the period toolchain
(BTMSSN, BTCNSL, BTSCNRL, BTTEAM, BTL4MODE, BTL4ARND) - first builds
since 1996.
* BT_L4/BTL4APP.CPP pilot reconstruction: 12/12 functions, Fail() lands on
its binary-recorded line 400 exactly.
* BT/BTCNSL.HPP: console wire IDs recovered from the binary's ctors
(Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1];
TeamScore=12 flagged [T4]).
* MUNGA/: 8 engine-header backfills back-dated from the BT412 WinTesla tree
(VDATA numbering decomp-verified; AUDREND's OpenAL-era virtual removed -
the period compiler is the drift detector).
* Tooling: backdate.py (WinTesla->1995 header transform), compile410.sh
(per-TU verification sweep under authentic OPT.MAK flags).
* README: corrected roadmap - MECH.HPP is the capstone grown with the mech
TU reconstructions; BTREG.CPP green = the header-family milestone.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
131 lines
5.1 KiB
Plaintext
131 lines
5.1 KiB
Plaintext
<<[H]
|
|
##--BEGIN-- QUERY_CLASS_NAME [[ClassName]]
|
|
##QUERY_BASE_NAME [[BaseName]]
|
|
##^BOF
|
|
##--BEGIN-- ? \\"//{{[[BaseName]] = [[ClassName]]}}" [[Search]]
|
|
## Search == FALSE
|
|
## :%\\"Class [[ClassName]] derived from [[BaseName]] definition not found in header file. "
|
|
##*
|
|
##--END-- ? \\"//{{[[BaseName]] = [[ClassName]]}}"
|
|
##0 [[StartLine]]
|
|
##0 [[EndLine]]
|
|
##--BEGIN-- ? \\"//{{[[ClassName]]VIRTUAL_BEGIN}}"
|
|
## :(YPos() + 2) StartLine
|
|
## --BEGIN-- ? \\"//{{[[ClassName]]VIRTUAL_END}}"
|
|
## :YPos() EndLine
|
|
## :^@StartLine
|
|
## :^BOL
|
|
## --BEGIN-- ((StartLine - 1) != EndLine) && (StartLine != EndLine)
|
|
## :--FOR-- VEntries = 1 TO (EndLine - StartLine)
|
|
## :ScanVEntry([[FunctionName]])
|
|
## :DBVirtual(ClassName, FunctionName)
|
|
## :^1
|
|
##*
|
|
## :--NEXT-- VEntries = 1 TO (EndLine - StartLine)
|
|
## --END-- ((StartLine - 2) != EndLine) && (StartLine != EndLine)
|
|
## --END-- ? \\"//{{[[ClassName]]VIRTUAL_END}}"
|
|
##--END-- ? \\"//{{[[ClassName]]VIRTUAL_BEGIN}}"
|
|
##--BEGIN-- QUERY_BASE_NAME == "TDialog"
|
|
## :^BOF
|
|
## --BEGIN-- ? \\"[[ClassName]] (TWindow"
|
|
## :^BOL
|
|
## :ScanDialog([[RCDialogID]])
|
|
## :DBDialog(ClassName, RCDialogID)
|
|
##*
|
|
## --END-- ? \\"[[ClassName]]::[[ClassName]] "
|
|
##--END-- QUERY_BASE_NAME == "TDialog"
|
|
##^BOF
|
|
##--BEGIN-- ? \\"//{{[[ClassName]]AUTO_TBL_BEGIN}}"
|
|
## :AutomateClass(ClassName)
|
|
## :{HResAuto.SNP}
|
|
##*
|
|
##--END-- ? \\"//{{[[ClassName]]AUTO_TBL_BEGIN}}"
|
|
##--END-- QUERY_CLASS_NAME [[ClassName]]
|
|
>>[H]
|
|
|
|
|
|
<<[CPP]
|
|
##--BEGIN-- QUERY_CLASS_NAME [[ClassName]]
|
|
##--BEGIN-- QUERY_BASE_NAME == "TDialog"
|
|
## ^BOF
|
|
## --BEGIN-- ? \\"//{{[[ClassName]]XFER_USE}}"
|
|
## :(YPos() + 1) [[StartLine]]
|
|
## --BEGIN-- ? \\"//{{[[ClassName]]XFER_USE_END}}"
|
|
## :(YPos() - 2) [[EndLine]]
|
|
## :^@StartLine
|
|
## :^BOL
|
|
## :--FOR-- IEntries = 1 TO (EndLine - StartLine)
|
|
## :ScanIEntry([[ResourceID]], [[MemberName]], [[MemberType]])
|
|
## :DBInstance(ClassName, ResourceID, MemberName, MemberType)
|
|
## :^1
|
|
##*
|
|
## :--NEXT-- IEntries = 1 TO (EndLine - StartLine)
|
|
## --END-- ? \\"//{{[[ClassName]]XFER_DEF_END}}"
|
|
## --END-- ? \\"//{{[[ClassName]]XFER_DEF}}"
|
|
##--END-- QUERY_BASE_NAME == "TDialog"
|
|
##--BEGIN-- @OPT_APPL_DOCVIEW
|
|
## 0 [[StartLine]]
|
|
## 1 [[EndLine]]
|
|
## --BEGIN-- QUERY_BASE_NAME == "TApplication"
|
|
## :^BOF
|
|
## --BEGIN-- ? "//{{DOC_VIEW}}"
|
|
## :@QUERY_APPL_OLE != VALUE_NOOLE
|
|
## :{ResDVOle.snp}
|
|
##*
|
|
## --BEGIN-- @QUERY_APPL_OLE == VALUE_NOOLE
|
|
## :^1
|
|
## :YPos() StartLine
|
|
## --BEGIN-- ? "//{{DOC_VIEW_END}}"
|
|
## :^-1
|
|
## :YPos() EndLine
|
|
## :^@StartLine
|
|
## :^BOL
|
|
## :0 [[CurrViewLine]]
|
|
## --FOR-- ViewEntry = 1 TO ((EndLine - StartLine) + 1)
|
|
## :ScanViewEntry([[Template]], [[TDocument]], [[TView]]) [[viewResult]]
|
|
## :YPos() CurrViewLine
|
|
## :? "//{{DOC_MANAGER}}"
|
|
## :--BEGIN-- ? \\"[[Template]]"
|
|
## :^BOL
|
|
## :ScanDocEntry([[Style]], [[Descr]], [[Filter]], [[Ext]])
|
|
## :DBDocView(Style, Descr, Filter, Ext, TDocument, TView)
|
|
##*
|
|
## :--END-- ? \\"[[Template]]"
|
|
## :^@CurrViewLine
|
|
##*
|
|
## :^1
|
|
## --NEXT-- ViewEntry
|
|
## --END-- ? "//{{DOC_VIEW_END}}"
|
|
## --END-- @QUERY_APPL_OLE == VALUE_NOOLE
|
|
## --END-- ? "//{{DOC_VIEW}}"
|
|
## --END-- QUERY_BASE_NAME == "TApplication"
|
|
##--END-- @OPT_APPL_DOCVIEW
|
|
##^BOF
|
|
##0 [[StartLine]]
|
|
##0 [[EndLine]]
|
|
##--BEGIN-- ? \\"//{{[[ClassName]]RSP_TBL_BEGIN}}"
|
|
## :^1
|
|
## :YPos() StartLine
|
|
## --BEGIN-- ? \\"//{{[[ClassName]]RSP_TBL_END}}"
|
|
## :YPos() EndLine
|
|
## :^@StartLine
|
|
## :^BOL
|
|
## --BEGIN-- 0 != (EndLine - StartLine)
|
|
## :--FOR-- RespEntry = 1 TO (EndLine - StartLine)
|
|
## :ScanRespEntry([[RspConstant]], [[RspFunctionName]], [[RspEventType]], [[RspMenuType]])
|
|
## :RspEventType != "OWLVIEW"
|
|
## :DBResponse(ClassName, RspConstant, RspFunctionName, RspEventType, RspMenuType)
|
|
##*
|
|
## :^1
|
|
## :--NEXT-- RespEntry
|
|
## --END-- 0 != (EndLine - StartLine)
|
|
## --END-- ? \\"//{{[[ClassName]]RSP_TBL_END}}"
|
|
##--END-- ? \\"//{{[[ClassName]]RSP_TBL_BEGIN}}"
|
|
##^BOF
|
|
##--BEGIN-- ? \\"//{{[[ClassName]]SYM_TBL_BEGIN}}"
|
|
## :{CResAuto.SNP}
|
|
##*
|
|
##--END-- ? \\"//{{[[ClassName]]SYM_TBL_BEGIN}}"
|
|
##--END-- QUERY_CLASS_NAME [[ClassName]]
|
|
>>[CPP]
|