tnt23, мне трудно выкатить готовый пример, потому что у меня тут все уже давно в виде фарша. Если охота самому испытать удовольствие без купюр,
https://britzl.github.io/roguearchive/
Кажется, я корпел над lrogue-5.3.zip
tnt23, мне трудно выкатить готовый пример, потому что у меня тут все уже давно в виде фарша. Если охота самому испытать удовольствие без купюр,
https://britzl.github.io/roguearchive/
Кажется, я корпел над lrogue-5.3.zip
Больше игр нет
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Ацтек проглотил жертвенный сорец без единого ругательства, за что ему зачет. Но выкатил 5152 байта наигустейшего DAD SP. Код немножко напоминает результат работы movfuscator-а. Могила.
- - - Добавлено - - -
Пример:
исходный код
Скрытый текст
Код:is_pack_letter(c, mask) short *c; unsigned short *mask; { if (((*c == '?') || (*c == '!') || (*c == ':') || (*c == '=') || (*c == ')') || (*c == ']') || (*c == '/') || (*c == ','))) { switch(*c) { case '?': *mask = SCROLL; break; case '!': *mask = POTION; break; case ':': *mask = FOOD; break; case ')': *mask = WEAPON; break; case ']': *mask = ARMOR; break; case '/': *mask = WAND; break; case '=': *mask = RING; break; case ',': *mask = AMULET; break; } *c = LIST; return(1); } return(((*c >= 'a') && (*c <= 'z')) || (*c == CANCEL) || (*c == LIST)); }[свернуть]
результат
Скрытый текст
Код:2512 10d3 .112 EQU 0 2513 10d3 PUBLIC is_pack__ 2514 10d3 11 xx xx is_pack__: lxi d,.116 2515 10d6 cd xx xx call csave 2516 10d9 21 xx xx LXI H,8-.116 2517 10dc 39 DAD SP 2518 10dd 5e MOV E,M 2519 10de 23 INX H 2520 10df 56 MOV D,M 2521 10e0 eb XCHG 2522 10e1 5e MOV E,M 2523 10e2 23 INX H 2524 10e3 56 MOV D,M 2525 10e4 21 3f 00 LXI H,63 2526 10e7 cd xx xx CALL .eq 2527 10ea c2 xx xx JNZ .118 2528 10ed 21 xx xx LXI H,8-.116 2529 10f0 39 DAD SP 2530 10f1 5e MOV E,M 2531 10f2 23 INX H 2532 10f3 56 MOV D,M 2533 10f4 eb XCHG 2534 10f5 5e MOV E,M 2535 10f6 23 INX H 2536 10f7 56 MOV D,M 2537 10f8 21 21 00 LXI H,33 2538 10fb cd xx xx CALL .eq 2539 10fe c2 xx xx JNZ .118 2540 1101 21 xx xx LXI H,8-.116 2541 1104 39 DAD SP 2542 1105 5e MOV E,M 2543 1106 23 INX H 2544 1107 56 MOV D,M 2545 1108 eb XCHG 2546 1109 5e MOV E,M 2547 110a 23 INX H 2548 110b 56 MOV D,M 2549 110c 21 3a 00 LXI H,58 2550 110f cd xx xx CALL .eq 2551 1112 c2 xx xx JNZ .118 2552 1115 21 xx xx LXI H,8-.116 2553 1118 39 DAD SP 2554 1119 5e MOV E,M 2555 111a 23 INX H 2556 111b 56 MOV D,M 2557 111c eb XCHG 2558 111d 5e MOV E,M 2559 111e 23 INX H 2560 111f 56 MOV D,M 2561 1120 21 3d 00 LXI H,61 2562 1123 cd xx xx CALL .eq 2563 1126 c2 xx xx JNZ .118 2564 1129 21 xx xx LXI H,8-.116 2565 112c 39 DAD SP 2566 112d 5e MOV E,M 2567 112e 23 INX H 2568 112f 56 MOV D,M 2569 1130 eb XCHG 2570 1131 5e MOV E,M 2571 1132 23 INX H 2572 1133 56 MOV D,M 2573 1134 21 29 00 LXI H,41 2574 1137 cd xx xx CALL .eq 2575 113a c2 xx xx JNZ .118 2576 113d 21 xx xx LXI H,8-.116 2577 1140 39 DAD SP 2578 1141 5e MOV E,M 2579 1142 23 INX H 2580 1143 56 MOV D,M 2581 1144 eb XCHG 2582 1145 5e MOV E,M 2583 1146 23 INX H 2584 1147 56 MOV D,M 2585 1148 21 5d 00 LXI H,93 2586 114b cd xx xx CALL .eq 2587 114e c2 xx xx JNZ .118 2588 1151 21 xx xx LXI H,8-.116 2589 1154 39 DAD SP 2590 1155 5e MOV E,M 2591 1156 23 INX H 2592 1157 56 MOV D,M 2593 1158 eb XCHG 2594 1159 5e MOV E,M 2595 115a 23 INX H 2596 115b 56 MOV D,M 2597 115c 21 2f 00 LXI H,47 2598 115f cd xx xx CALL .eq 2599 1162 c2 xx xx JNZ .118 2600 1165 21 xx xx LXI H,8-.116 2601 1168 39 DAD SP 2602 1169 5e MOV E,M 2603 116a 23 INX H 2604 116b 56 MOV D,M 2605 116c eb XCHG 2606 116d 5e MOV E,M 2607 116e 23 INX H 2608 116f 56 MOV D,M 2609 1170 21 2c 00 LXI H,44 2610 1173 cd xx xx CALL .eq 2611 1176 ca xx xx JZ .117 2612 1179 .118: 2613 1179 21 xx xx LXI H,8-.116 2614 117c 39 DAD SP 2615 117d 5e MOV E,M 2616 117e 23 INX H 2617 117f 56 MOV D,M 2618 1180 eb XCHG 2619 1181 5e MOV E,M 2620 1182 23 INX H 2621 1183 56 MOV D,M 2622 1184 eb XCHG 2623 1185 c3 xx xx JMP .119 2624 1188 .121: 2625 1188 21 04 00 LXI H,4 2626 118b e5 PUSH H 2627 118c 21 xx xx LXI H,12-.116 2628 118f 39 DAD SP 2629 1190 5e MOV E,M 2630 1191 23 INX H 2631 1192 56 MOV D,M 2632 1193 eb XCHG 2633 1194 d1 POP D 2634 1195 73 MOV M,E 2635 1196 23 INX H 2636 1197 72 MOV M,D 2637 1198 c3 xx xx JMP .120 2638 119b .122: 2639 119b 21 08 00 LXI H,8 2640 119e e5 PUSH H 2641 119f 21 xx xx LXI H,12-.116 2642 11a2 39 DAD SP 2643 11a3 5e MOV E,M 2644 11a4 23 INX H 2645 11a5 56 MOV D,M 2646 11a6 eb XCHG 2647 11a7 d1 POP D 2648 11a8 73 MOV M,E 2649 11a9 23 INX H 2650 11aa 72 MOV M,D 2651 11ab c3 xx xx JMP .120 2652 11ae .123: 2653 11ae 21 20 00 LXI H,32 2654 11b1 e5 PUSH H 2655 11b2 21 xx xx LXI H,12-.116 2656 11b5 39 DAD SP 2657 11b6 5e MOV E,M 2658 11b7 23 INX H 2659 11b8 56 MOV D,M 2660 11b9 eb XCHG 2661 11ba d1 POP D 2662 11bb 73 MOV M,E 2663 11bc 23 INX H 2664 11bd 72 MOV M,D 2665 11be c3 xx xx JMP .120 2666 11c1 .124: 2667 11c1 21 02 00 LXI H,2 2668 11c4 e5 PUSH H 2669 11c5 21 xx xx LXI H,12-.116 2670 11c8 39 DAD SP 2671 11c9 5e MOV E,M 2672 11ca 23 INX H 2673 11cb 56 MOV D,M 2674 11cc eb XCHG 2675 11cd d1 POP D 2676 11ce 73 MOV M,E 2677 11cf 23 INX H 2678 11d0 72 MOV M,D 2679 11d1 c3 xx xx JMP .120 2680 11d4 .125: 2681 11d4 21 01 00 LXI H,1 2682 11d7 e5 PUSH H 2683 11d8 21 xx xx LXI H,12-.116 2684 11db 39 DAD SP 2685 11dc 5e MOV E,M 2686 11dd 23 INX H 2687 11de 56 MOV D,M 2688 11df eb XCHG 2689 11e0 d1 POP D 2690 11e1 73 MOV M,E 2691 11e2 23 INX H 2692 11e3 72 MOV M,D 2693 11e4 c3 xx xx JMP .120 2694 11e7 .126: 2695 11e7 21 40 00 LXI H,64 2696 11ea e5 PUSH H 2697 11eb 21 xx xx LXI H,12-.116 2698 11ee 39 DAD SP 2699 11ef 5e MOV E,M 2700 11f0 23 INX H 2701 11f1 56 MOV D,M 2702 11f2 eb XCHG 2703 11f3 d1 POP D 2704 11f4 73 MOV M,E 2705 11f5 23 INX H 2706 11f6 72 MOV M,D 2707 11f7 c3 xx xx JMP .120 2708 11fa .127: 2709 11fa 21 80 00 LXI H,128 2710 11fd e5 PUSH H 2711 11fe 21 xx xx LXI H,12-.116 2712 1201 39 DAD SP 2713 1202 5e MOV E,M 2714 1203 23 INX H 2715 1204 56 MOV D,M 2716 1205 eb XCHG 2717 1206 d1 POP D 2718 1207 73 MOV M,E 2719 1208 23 INX H 2720 1209 72 MOV M,D 2721 120a c3 xx xx JMP .120 2722 120d .128: 2723 120d 21 00 01 LXI H,256 2724 1210 e5 PUSH H 2725 1211 21 xx xx LXI H,12-.116 2726 1214 39 DAD SP 2727 1215 5e MOV E,M 2728 1216 23 INX H 2729 1217 56 MOV D,M 2730 1218 eb XCHG 2731 1219 d1 POP D 2732 121a 73 MOV M,E 2733 121b 23 INX H 2734 121c 72 MOV M,D 2735 121d c3 xx xx JMP .120 2736 1220 .119: 2737 1220 cd xx xx CALL .swt 2738 1223 08 00 DW 8 2739 1225 21 00 xx xx DW 33,.122 2740 1229 29 00 xx xx DW 41,.124 2741 122d 2c 00 xx xx DW 44,.128 2742 1231 2f 00 xx xx DW 47,.126 2743 1235 3a 00 xx xx DW 58,.123 2744 1239 3d 00 xx xx DW 61,.127 2745 123d 3f 00 xx xx DW 63,.121 2746 1241 5d 00 xx xx DW 93,.125 2747 1245 xx xx DW .120 2748 1247 .120: 2749 1247 21 2a 00 LXI H,42 2750 124a e5 PUSH H 2751 124b 21 xx xx LXI H,10-.116 2752 124e 39 DAD SP 2753 124f 5e MOV E,M 2754 1250 23 INX H 2755 1251 56 MOV D,M 2756 1252 eb XCHG 2757 1253 d1 POP D 2758 1254 73 MOV M,E 2759 1255 23 INX H 2760 1256 72 MOV M,D 2761 1257 21 01 00 LXI H,1 2762 125a c9 RET 2763 125b .117: 2764 125b 21 xx xx LXI H,8-.116 2765 125e 39 DAD SP 2766 125f 5e MOV E,M 2767 1260 23 INX H 2768 1261 56 MOV D,M 2769 1262 eb XCHG 2770 1263 5e MOV E,M 2771 1264 23 INX H 2772 1265 56 MOV D,M 2773 1266 21 61 00 LXI H,97 2774 1269 cd xx xx CALL .ge 2775 126c ca xx xx JZ .130 2776 126f 21 xx xx LXI H,8-.116 2777 1272 39 DAD SP 2778 1273 5e MOV E,M 2779 1274 23 INX H 2780 1275 56 MOV D,M 2781 1276 eb XCHG 2782 1277 5e MOV E,M 2783 1278 23 INX H 2784 1279 56 MOV D,M 2785 127a 21 7a 00 LXI H,122 2786 127d cd xx xx CALL .le 2787 1280 c2 xx xx JNZ .129 2788 1283 .130: 2789 1283 21 xx xx LXI H,8-.116 2790 1286 39 DAD SP 2791 1287 5e MOV E,M 2792 1288 23 INX H 2793 1289 56 MOV D,M 2794 128a eb XCHG 2795 128b 5e MOV E,M 2796 128c 23 INX H 2797 128d 56 MOV D,M 2798 128e 21 1b 00 LXI H,27 2799 1291 cd xx xx CALL .eq 2800 1294 c2 xx xx JNZ .129 2801 1297 21 xx xx LXI H,8-.116 2802 129a 39 DAD SP 2803 129b 5e MOV E,M 2804 129c 23 INX H 2805 129d 56 MOV D,M 2806 129e eb XCHG 2807 129f 5e MOV E,M 2808 12a0 23 INX H 2809 12a1 56 MOV D,M 2810 12a2 21 2a 00 LXI H,42 2811 12a5 cd xx xx CALL .eq 2812 12a8 c2 xx xx JNZ .129 2813 12ab 21 00 00 LXI H,0 2814 12ae c3 xx xx JMP .131 2815 12b1 .129: 2816 12b1 21 01 00 LXI H,1 2817 12b4 .131: 2818 12b4 c9 RET[свернуть]
Тут конечно нельзя не поехидничать и над оригинальным стилем исходника.
- - - Добавлено - - -
... то есть одна функция is_pack_letter() =481 байт.
BDS C эту же процедуру переварил в 316 байт. Переписанную с использованием index() - 177. Кстати, структуры в нем в каком-то виде все-таки есть. Это не повод для оптимизма, конечно же. Ничего сложнее этой функции скомпилировать им решительно невозможно.
Больше игр нет
В чистом, по ассемблерному листингу.
- - - Добавлено - - -
И все операции приводятся к 16-битным, даже сравнение char константы и переменной типа char. Против такого даже ручками код не повертишь.
В частном случае именно rogue, не грех было бы и саму программу переписать. Игровое поле у них массив short 80x25, все барахло хранится в связных списках, хорошо, что не двунаправленных. При том, что там 3-10 элементов, dadfuscator-ного кода на их обслуживание получаются десятки килобайт. Ну и перлы вроде вот этого свича с двойной перепроверкой, хотя их не так много наверное. Я изначально наугад взял функцию, которая не ссылается на внешние типы.
А кстати, известно хоть что-нибудь про этот C-80? Откуда он родом?
Больше игр нет
rogue родом с pdp-11, о терминалах с меньшим числом столбцов никто там не слышал. Я больше переживаю, что памяти и так нет, а массив в котором заведомо буковки огроменный и объявлен как short. Впрочем, это не оригинальный rogue. Это наиболее древний из доступных в сорцах, при этом может быть ни на чем меньше линукса 0.93 его никогда не собирали.
А что, Okeah не умеет 80х25?
Больше игр нет
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)