|
24 | 24 | #include "bfmath.h" |
25 | 25 | #include "bfmemut.h" |
26 | 26 |
|
| 27 | +#include "bat.h" |
27 | 28 | #include "triangls.h" |
28 | 29 | #include "trpoints.h" |
29 | 30 | #include "trstate.h" |
|
55 | 56 | #include "weapon.h" |
56 | 57 | #include "swlog.h" |
57 | 58 | /******************************************************************************/ |
| 59 | +#pragma pack(1) |
| 60 | + |
| 61 | +struct BillboardNBreakout { |
| 62 | + ubyte field_0; |
| 63 | + ubyte field_1; |
| 64 | + ubyte field_2; |
| 65 | + ubyte field_3; |
| 66 | +}; |
| 67 | + |
| 68 | +#pragma pack() |
| 69 | +/******************************************************************************/ |
58 | 70 |
|
59 | 71 | TbBool level_deep_fix = false; |
60 | 72 |
|
@@ -94,6 +106,9 @@ struct QuickLoad quick_load_pc[] = { |
94 | 106 |
|
95 | 107 | ushort next_used_lvl_objective = 1; |
96 | 108 |
|
| 109 | +extern uint dword_177790; |
| 110 | +extern struct BillboardNBreakout map_bnb; |
| 111 | + |
97 | 112 | void debug_level(const char *text, int player) |
98 | 113 | { |
99 | 114 | ThingIdx thing; |
@@ -1401,8 +1416,45 @@ TbResult load_map_mad(ushort mapno) |
1401 | 1416 |
|
1402 | 1417 | void load_map_bnb(int a1) |
1403 | 1418 | { |
| 1419 | +#if 0 |
1404 | 1420 | asm volatile ("call ASM_load_map_bnb\n" |
1405 | 1421 | : : "a" (a1)); |
| 1422 | +#endif |
| 1423 | + char locstr[52]; |
| 1424 | + TbFileHandle fh; |
| 1425 | + ubyte Amin, Amax; |
| 1426 | + ubyte Bmin, Bmax; |
| 1427 | + |
| 1428 | + sprintf(locstr, "%s/map%03d.b&b", "maps", a1); |
| 1429 | + fh = LbFileOpen(locstr, 2u); |
| 1430 | + if (fh == INVALID_FILE) |
| 1431 | + { |
| 1432 | + map_bnb.field_0 = 0; |
| 1433 | + map_bnb.field_1 = 0; |
| 1434 | + map_bnb.field_2 = 0; |
| 1435 | + map_bnb.field_3 = 0; |
| 1436 | + dword_177790 = 0; |
| 1437 | + } |
| 1438 | + else |
| 1439 | + { |
| 1440 | + LbFileRead(fh, &map_bnb, 4); |
| 1441 | + LbFileClose(fh); |
| 1442 | + dword_177790 = 2; |
| 1443 | + } |
| 1444 | + Amin = map_bnb.field_0; |
| 1445 | + if (map_bnb.field_0 >= map_bnb.field_2) |
| 1446 | + Amin = map_bnb.field_2; |
| 1447 | + Bmin = map_bnb.field_1; |
| 1448 | + if (map_bnb.field_1 >= map_bnb.field_3) |
| 1449 | + Bmin = map_bnb.field_3; |
| 1450 | + Amax = map_bnb.field_0; |
| 1451 | + if (map_bnb.field_0 <= map_bnb.field_2) |
| 1452 | + Amax = map_bnb.field_2; |
| 1453 | + Bmax = map_bnb.field_1; |
| 1454 | + if (map_bnb.field_1 <= map_bnb.field_3) |
| 1455 | + Bmax = map_bnb.field_3; |
| 1456 | + |
| 1457 | + BAT_unknsub_20(Amin, Bmin, Amax, Bmax, vec_tmap[4] + 0xA040); |
1406 | 1458 | } |
1407 | 1459 |
|
1408 | 1460 | TbResult load_mad_pc(ushort mapno) |
|
0 commit comments