A port of Zachtronics' nonogram-like puzzle game Dungeons and Diagrams to the TI-84 Plus CE
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

added new monster type, started writing new level pack

euphory 043ae1cc b401d828

+1861 -1848
+2 -2
.gitignore
··· 1 - bin/ 2 - obj/ 1 + bin/ 2 + obj/ 3 3 .vscode/
+4 -4
.vscode/settings.json
··· 1 - { 2 - "files.associations": { 3 - "map.h": "c" 4 - } 1 + { 2 + "files.associations": { 3 + "map.h": "c" 4 + } 5 5 }
+674 -674
LICENSE.txt
··· 1 - GNU GENERAL PUBLIC LICENSE 2 - Version 3, 29 June 2007 3 - 4 - Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> 5 - Everyone is permitted to copy and distribute verbatim copies 6 - of this license document, but changing it is not allowed. 7 - 8 - Preamble 9 - 10 - The GNU General Public License is a free, copyleft license for 11 - software and other kinds of works. 12 - 13 - The licenses for most software and other practical works are designed 14 - to take away your freedom to share and change the works. By contrast, 15 - the GNU General Public License is intended to guarantee your freedom to 16 - share and change all versions of a program--to make sure it remains free 17 - software for all its users. We, the Free Software Foundation, use the 18 - GNU General Public License for most of our software; it applies also to 19 - any other work released this way by its authors. You can apply it to 20 - your programs, too. 21 - 22 - When we speak of free software, we are referring to freedom, not 23 - price. Our General Public Licenses are designed to make sure that you 24 - have the freedom to distribute copies of free software (and charge for 25 - them if you wish), that you receive source code or can get it if you 26 - want it, that you can change the software or use pieces of it in new 27 - free programs, and that you know you can do these things. 28 - 29 - To protect your rights, we need to prevent others from denying you 30 - these rights or asking you to surrender the rights. Therefore, you have 31 - certain responsibilities if you distribute copies of the software, or if 32 - you modify it: responsibilities to respect the freedom of others. 33 - 34 - For example, if you distribute copies of such a program, whether 35 - gratis or for a fee, you must pass on to the recipients the same 36 - freedoms that you received. You must make sure that they, too, receive 37 - or can get the source code. And you must show them these terms so they 38 - know their rights. 39 - 40 - Developers that use the GNU GPL protect your rights with two steps: 41 - (1) assert copyright on the software, and (2) offer you this License 42 - giving you legal permission to copy, distribute and/or modify it. 43 - 44 - For the developers' and authors' protection, the GPL clearly explains 45 - that there is no warranty for this free software. For both users' and 46 - authors' sake, the GPL requires that modified versions be marked as 47 - changed, so that their problems will not be attributed erroneously to 48 - authors of previous versions. 49 - 50 - Some devices are designed to deny users access to install or run 51 - modified versions of the software inside them, although the manufacturer 52 - can do so. This is fundamentally incompatible with the aim of 53 - protecting users' freedom to change the software. The systematic 54 - pattern of such abuse occurs in the area of products for individuals to 55 - use, which is precisely where it is most unacceptable. Therefore, we 56 - have designed this version of the GPL to prohibit the practice for those 57 - products. If such problems arise substantially in other domains, we 58 - stand ready to extend this provision to those domains in future versions 59 - of the GPL, as needed to protect the freedom of users. 60 - 61 - Finally, every program is threatened constantly by software patents. 62 - States should not allow patents to restrict development and use of 63 - software on general-purpose computers, but in those that do, we wish to 64 - avoid the special danger that patents applied to a free program could 65 - make it effectively proprietary. To prevent this, the GPL assures that 66 - patents cannot be used to render the program non-free. 67 - 68 - The precise terms and conditions for copying, distribution and 69 - modification follow. 70 - 71 - TERMS AND CONDITIONS 72 - 73 - 0. Definitions. 74 - 75 - "This License" refers to version 3 of the GNU General Public License. 76 - 77 - "Copyright" also means copyright-like laws that apply to other kinds of 78 - works, such as semiconductor masks. 79 - 80 - "The Program" refers to any copyrightable work licensed under this 81 - License. Each licensee is addressed as "you". "Licensees" and 82 - "recipients" may be individuals or organizations. 83 - 84 - To "modify" a work means to copy from or adapt all or part of the work 85 - in a fashion requiring copyright permission, other than the making of an 86 - exact copy. The resulting work is called a "modified version" of the 87 - earlier work or a work "based on" the earlier work. 88 - 89 - A "covered work" means either the unmodified Program or a work based 90 - on the Program. 91 - 92 - To "propagate" a work means to do anything with it that, without 93 - permission, would make you directly or secondarily liable for 94 - infringement under applicable copyright law, except executing it on a 95 - computer or modifying a private copy. Propagation includes copying, 96 - distribution (with or without modification), making available to the 97 - public, and in some countries other activities as well. 98 - 99 - To "convey" a work means any kind of propagation that enables other 100 - parties to make or receive copies. Mere interaction with a user through 101 - a computer network, with no transfer of a copy, is not conveying. 102 - 103 - An interactive user interface displays "Appropriate Legal Notices" 104 - to the extent that it includes a convenient and prominently visible 105 - feature that (1) displays an appropriate copyright notice, and (2) 106 - tells the user that there is no warranty for the work (except to the 107 - extent that warranties are provided), that licensees may convey the 108 - work under this License, and how to view a copy of this License. If 109 - the interface presents a list of user commands or options, such as a 110 - menu, a prominent item in the list meets this criterion. 111 - 112 - 1. Source Code. 113 - 114 - The "source code" for a work means the preferred form of the work 115 - for making modifications to it. "Object code" means any non-source 116 - form of a work. 117 - 118 - A "Standard Interface" means an interface that either is an official 119 - standard defined by a recognized standards body, or, in the case of 120 - interfaces specified for a particular programming language, one that 121 - is widely used among developers working in that language. 122 - 123 - The "System Libraries" of an executable work include anything, other 124 - than the work as a whole, that (a) is included in the normal form of 125 - packaging a Major Component, but which is not part of that Major 126 - Component, and (b) serves only to enable use of the work with that 127 - Major Component, or to implement a Standard Interface for which an 128 - implementation is available to the public in source code form. A 129 - "Major Component", in this context, means a major essential component 130 - (kernel, window system, and so on) of the specific operating system 131 - (if any) on which the executable work runs, or a compiler used to 132 - produce the work, or an object code interpreter used to run it. 133 - 134 - The "Corresponding Source" for a work in object code form means all 135 - the source code needed to generate, install, and (for an executable 136 - work) run the object code and to modify the work, including scripts to 137 - control those activities. However, it does not include the work's 138 - System Libraries, or general-purpose tools or generally available free 139 - programs which are used unmodified in performing those activities but 140 - which are not part of the work. For example, Corresponding Source 141 - includes interface definition files associated with source files for 142 - the work, and the source code for shared libraries and dynamically 143 - linked subprograms that the work is specifically designed to require, 144 - such as by intimate data communication or control flow between those 145 - subprograms and other parts of the work. 146 - 147 - The Corresponding Source need not include anything that users 148 - can regenerate automatically from other parts of the Corresponding 149 - Source. 150 - 151 - The Corresponding Source for a work in source code form is that 152 - same work. 153 - 154 - 2. Basic Permissions. 155 - 156 - All rights granted under this License are granted for the term of 157 - copyright on the Program, and are irrevocable provided the stated 158 - conditions are met. This License explicitly affirms your unlimited 159 - permission to run the unmodified Program. The output from running a 160 - covered work is covered by this License only if the output, given its 161 - content, constitutes a covered work. This License acknowledges your 162 - rights of fair use or other equivalent, as provided by copyright law. 163 - 164 - You may make, run and propagate covered works that you do not 165 - convey, without conditions so long as your license otherwise remains 166 - in force. You may convey covered works to others for the sole purpose 167 - of having them make modifications exclusively for you, or provide you 168 - with facilities for running those works, provided that you comply with 169 - the terms of this License in conveying all material for which you do 170 - not control copyright. Those thus making or running the covered works 171 - for you must do so exclusively on your behalf, under your direction 172 - and control, on terms that prohibit them from making any copies of 173 - your copyrighted material outside their relationship with you. 174 - 175 - Conveying under any other circumstances is permitted solely under 176 - the conditions stated below. Sublicensing is not allowed; section 10 177 - makes it unnecessary. 178 - 179 - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 - 181 - No covered work shall be deemed part of an effective technological 182 - measure under any applicable law fulfilling obligations under article 183 - 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 - similar laws prohibiting or restricting circumvention of such 185 - measures. 186 - 187 - When you convey a covered work, you waive any legal power to forbid 188 - circumvention of technological measures to the extent such circumvention 189 - is effected by exercising rights under this License with respect to 190 - the covered work, and you disclaim any intention to limit operation or 191 - modification of the work as a means of enforcing, against the work's 192 - users, your or third parties' legal rights to forbid circumvention of 193 - technological measures. 194 - 195 - 4. Conveying Verbatim Copies. 196 - 197 - You may convey verbatim copies of the Program's source code as you 198 - receive it, in any medium, provided that you conspicuously and 199 - appropriately publish on each copy an appropriate copyright notice; 200 - keep intact all notices stating that this License and any 201 - non-permissive terms added in accord with section 7 apply to the code; 202 - keep intact all notices of the absence of any warranty; and give all 203 - recipients a copy of this License along with the Program. 204 - 205 - You may charge any price or no price for each copy that you convey, 206 - and you may offer support or warranty protection for a fee. 207 - 208 - 5. Conveying Modified Source Versions. 209 - 210 - You may convey a work based on the Program, or the modifications to 211 - produce it from the Program, in the form of source code under the 212 - terms of section 4, provided that you also meet all of these conditions: 213 - 214 - a) The work must carry prominent notices stating that you modified 215 - it, and giving a relevant date. 216 - 217 - b) The work must carry prominent notices stating that it is 218 - released under this License and any conditions added under section 219 - 7. This requirement modifies the requirement in section 4 to 220 - "keep intact all notices". 221 - 222 - c) You must license the entire work, as a whole, under this 223 - License to anyone who comes into possession of a copy. This 224 - License will therefore apply, along with any applicable section 7 225 - additional terms, to the whole of the work, and all its parts, 226 - regardless of how they are packaged. This License gives no 227 - permission to license the work in any other way, but it does not 228 - invalidate such permission if you have separately received it. 229 - 230 - d) If the work has interactive user interfaces, each must display 231 - Appropriate Legal Notices; however, if the Program has interactive 232 - interfaces that do not display Appropriate Legal Notices, your 233 - work need not make them do so. 234 - 235 - A compilation of a covered work with other separate and independent 236 - works, which are not by their nature extensions of the covered work, 237 - and which are not combined with it such as to form a larger program, 238 - in or on a volume of a storage or distribution medium, is called an 239 - "aggregate" if the compilation and its resulting copyright are not 240 - used to limit the access or legal rights of the compilation's users 241 - beyond what the individual works permit. Inclusion of a covered work 242 - in an aggregate does not cause this License to apply to the other 243 - parts of the aggregate. 244 - 245 - 6. Conveying Non-Source Forms. 246 - 247 - You may convey a covered work in object code form under the terms 248 - of sections 4 and 5, provided that you also convey the 249 - machine-readable Corresponding Source under the terms of this License, 250 - in one of these ways: 251 - 252 - a) Convey the object code in, or embodied in, a physical product 253 - (including a physical distribution medium), accompanied by the 254 - Corresponding Source fixed on a durable physical medium 255 - customarily used for software interchange. 256 - 257 - b) Convey the object code in, or embodied in, a physical product 258 - (including a physical distribution medium), accompanied by a 259 - written offer, valid for at least three years and valid for as 260 - long as you offer spare parts or customer support for that product 261 - model, to give anyone who possesses the object code either (1) a 262 - copy of the Corresponding Source for all the software in the 263 - product that is covered by this License, on a durable physical 264 - medium customarily used for software interchange, for a price no 265 - more than your reasonable cost of physically performing this 266 - conveying of source, or (2) access to copy the 267 - Corresponding Source from a network server at no charge. 268 - 269 - c) Convey individual copies of the object code with a copy of the 270 - written offer to provide the Corresponding Source. This 271 - alternative is allowed only occasionally and noncommercially, and 272 - only if you received the object code with such an offer, in accord 273 - with subsection 6b. 274 - 275 - d) Convey the object code by offering access from a designated 276 - place (gratis or for a charge), and offer equivalent access to the 277 - Corresponding Source in the same way through the same place at no 278 - further charge. You need not require recipients to copy the 279 - Corresponding Source along with the object code. If the place to 280 - copy the object code is a network server, the Corresponding Source 281 - may be on a different server (operated by you or a third party) 282 - that supports equivalent copying facilities, provided you maintain 283 - clear directions next to the object code saying where to find the 284 - Corresponding Source. Regardless of what server hosts the 285 - Corresponding Source, you remain obligated to ensure that it is 286 - available for as long as needed to satisfy these requirements. 287 - 288 - e) Convey the object code using peer-to-peer transmission, provided 289 - you inform other peers where the object code and Corresponding 290 - Source of the work are being offered to the general public at no 291 - charge under subsection 6d. 292 - 293 - A separable portion of the object code, whose source code is excluded 294 - from the Corresponding Source as a System Library, need not be 295 - included in conveying the object code work. 296 - 297 - A "User Product" is either (1) a "consumer product", which means any 298 - tangible personal property which is normally used for personal, family, 299 - or household purposes, or (2) anything designed or sold for incorporation 300 - into a dwelling. In determining whether a product is a consumer product, 301 - doubtful cases shall be resolved in favor of coverage. For a particular 302 - product received by a particular user, "normally used" refers to a 303 - typical or common use of that class of product, regardless of the status 304 - of the particular user or of the way in which the particular user 305 - actually uses, or expects or is expected to use, the product. A product 306 - is a consumer product regardless of whether the product has substantial 307 - commercial, industrial or non-consumer uses, unless such uses represent 308 - the only significant mode of use of the product. 309 - 310 - "Installation Information" for a User Product means any methods, 311 - procedures, authorization keys, or other information required to install 312 - and execute modified versions of a covered work in that User Product from 313 - a modified version of its Corresponding Source. The information must 314 - suffice to ensure that the continued functioning of the modified object 315 - code is in no case prevented or interfered with solely because 316 - modification has been made. 317 - 318 - If you convey an object code work under this section in, or with, or 319 - specifically for use in, a User Product, and the conveying occurs as 320 - part of a transaction in which the right of possession and use of the 321 - User Product is transferred to the recipient in perpetuity or for a 322 - fixed term (regardless of how the transaction is characterized), the 323 - Corresponding Source conveyed under this section must be accompanied 324 - by the Installation Information. But this requirement does not apply 325 - if neither you nor any third party retains the ability to install 326 - modified object code on the User Product (for example, the work has 327 - been installed in ROM). 328 - 329 - The requirement to provide Installation Information does not include a 330 - requirement to continue to provide support service, warranty, or updates 331 - for a work that has been modified or installed by the recipient, or for 332 - the User Product in which it has been modified or installed. Access to a 333 - network may be denied when the modification itself materially and 334 - adversely affects the operation of the network or violates the rules and 335 - protocols for communication across the network. 336 - 337 - Corresponding Source conveyed, and Installation Information provided, 338 - in accord with this section must be in a format that is publicly 339 - documented (and with an implementation available to the public in 340 - source code form), and must require no special password or key for 341 - unpacking, reading or copying. 342 - 343 - 7. Additional Terms. 344 - 345 - "Additional permissions" are terms that supplement the terms of this 346 - License by making exceptions from one or more of its conditions. 347 - Additional permissions that are applicable to the entire Program shall 348 - be treated as though they were included in this License, to the extent 349 - that they are valid under applicable law. If additional permissions 350 - apply only to part of the Program, that part may be used separately 351 - under those permissions, but the entire Program remains governed by 352 - this License without regard to the additional permissions. 353 - 354 - When you convey a copy of a covered work, you may at your option 355 - remove any additional permissions from that copy, or from any part of 356 - it. (Additional permissions may be written to require their own 357 - removal in certain cases when you modify the work.) You may place 358 - additional permissions on material, added by you to a covered work, 359 - for which you have or can give appropriate copyright permission. 360 - 361 - Notwithstanding any other provision of this License, for material you 362 - add to a covered work, you may (if authorized by the copyright holders of 363 - that material) supplement the terms of this License with terms: 364 - 365 - a) Disclaiming warranty or limiting liability differently from the 366 - terms of sections 15 and 16 of this License; or 367 - 368 - b) Requiring preservation of specified reasonable legal notices or 369 - author attributions in that material or in the Appropriate Legal 370 - Notices displayed by works containing it; or 371 - 372 - c) Prohibiting misrepresentation of the origin of that material, or 373 - requiring that modified versions of such material be marked in 374 - reasonable ways as different from the original version; or 375 - 376 - d) Limiting the use for publicity purposes of names of licensors or 377 - authors of the material; or 378 - 379 - e) Declining to grant rights under trademark law for use of some 380 - trade names, trademarks, or service marks; or 381 - 382 - f) Requiring indemnification of licensors and authors of that 383 - material by anyone who conveys the material (or modified versions of 384 - it) with contractual assumptions of liability to the recipient, for 385 - any liability that these contractual assumptions directly impose on 386 - those licensors and authors. 387 - 388 - All other non-permissive additional terms are considered "further 389 - restrictions" within the meaning of section 10. If the Program as you 390 - received it, or any part of it, contains a notice stating that it is 391 - governed by this License along with a term that is a further 392 - restriction, you may remove that term. If a license document contains 393 - a further restriction but permits relicensing or conveying under this 394 - License, you may add to a covered work material governed by the terms 395 - of that license document, provided that the further restriction does 396 - not survive such relicensing or conveying. 397 - 398 - If you add terms to a covered work in accord with this section, you 399 - must place, in the relevant source files, a statement of the 400 - additional terms that apply to those files, or a notice indicating 401 - where to find the applicable terms. 402 - 403 - Additional terms, permissive or non-permissive, may be stated in the 404 - form of a separately written license, or stated as exceptions; 405 - the above requirements apply either way. 406 - 407 - 8. Termination. 408 - 409 - You may not propagate or modify a covered work except as expressly 410 - provided under this License. Any attempt otherwise to propagate or 411 - modify it is void, and will automatically terminate your rights under 412 - this License (including any patent licenses granted under the third 413 - paragraph of section 11). 414 - 415 - However, if you cease all violation of this License, then your 416 - license from a particular copyright holder is reinstated (a) 417 - provisionally, unless and until the copyright holder explicitly and 418 - finally terminates your license, and (b) permanently, if the copyright 419 - holder fails to notify you of the violation by some reasonable means 420 - prior to 60 days after the cessation. 421 - 422 - Moreover, your license from a particular copyright holder is 423 - reinstated permanently if the copyright holder notifies you of the 424 - violation by some reasonable means, this is the first time you have 425 - received notice of violation of this License (for any work) from that 426 - copyright holder, and you cure the violation prior to 30 days after 427 - your receipt of the notice. 428 - 429 - Termination of your rights under this section does not terminate the 430 - licenses of parties who have received copies or rights from you under 431 - this License. If your rights have been terminated and not permanently 432 - reinstated, you do not qualify to receive new licenses for the same 433 - material under section 10. 434 - 435 - 9. Acceptance Not Required for Having Copies. 436 - 437 - You are not required to accept this License in order to receive or 438 - run a copy of the Program. Ancillary propagation of a covered work 439 - occurring solely as a consequence of using peer-to-peer transmission 440 - to receive a copy likewise does not require acceptance. However, 441 - nothing other than this License grants you permission to propagate or 442 - modify any covered work. These actions infringe copyright if you do 443 - not accept this License. Therefore, by modifying or propagating a 444 - covered work, you indicate your acceptance of this License to do so. 445 - 446 - 10. Automatic Licensing of Downstream Recipients. 447 - 448 - Each time you convey a covered work, the recipient automatically 449 - receives a license from the original licensors, to run, modify and 450 - propagate that work, subject to this License. You are not responsible 451 - for enforcing compliance by third parties with this License. 452 - 453 - An "entity transaction" is a transaction transferring control of an 454 - organization, or substantially all assets of one, or subdividing an 455 - organization, or merging organizations. If propagation of a covered 456 - work results from an entity transaction, each party to that 457 - transaction who receives a copy of the work also receives whatever 458 - licenses to the work the party's predecessor in interest had or could 459 - give under the previous paragraph, plus a right to possession of the 460 - Corresponding Source of the work from the predecessor in interest, if 461 - the predecessor has it or can get it with reasonable efforts. 462 - 463 - You may not impose any further restrictions on the exercise of the 464 - rights granted or affirmed under this License. For example, you may 465 - not impose a license fee, royalty, or other charge for exercise of 466 - rights granted under this License, and you may not initiate litigation 467 - (including a cross-claim or counterclaim in a lawsuit) alleging that 468 - any patent claim is infringed by making, using, selling, offering for 469 - sale, or importing the Program or any portion of it. 470 - 471 - 11. Patents. 472 - 473 - A "contributor" is a copyright holder who authorizes use under this 474 - License of the Program or a work on which the Program is based. The 475 - work thus licensed is called the contributor's "contributor version". 476 - 477 - A contributor's "essential patent claims" are all patent claims 478 - owned or controlled by the contributor, whether already acquired or 479 - hereafter acquired, that would be infringed by some manner, permitted 480 - by this License, of making, using, or selling its contributor version, 481 - but do not include claims that would be infringed only as a 482 - consequence of further modification of the contributor version. For 483 - purposes of this definition, "control" includes the right to grant 484 - patent sublicenses in a manner consistent with the requirements of 485 - this License. 486 - 487 - Each contributor grants you a non-exclusive, worldwide, royalty-free 488 - patent license under the contributor's essential patent claims, to 489 - make, use, sell, offer for sale, import and otherwise run, modify and 490 - propagate the contents of its contributor version. 491 - 492 - In the following three paragraphs, a "patent license" is any express 493 - agreement or commitment, however denominated, not to enforce a patent 494 - (such as an express permission to practice a patent or covenant not to 495 - sue for patent infringement). To "grant" such a patent license to a 496 - party means to make such an agreement or commitment not to enforce a 497 - patent against the party. 498 - 499 - If you convey a covered work, knowingly relying on a patent license, 500 - and the Corresponding Source of the work is not available for anyone 501 - to copy, free of charge and under the terms of this License, through a 502 - publicly available network server or other readily accessible means, 503 - then you must either (1) cause the Corresponding Source to be so 504 - available, or (2) arrange to deprive yourself of the benefit of the 505 - patent license for this particular work, or (3) arrange, in a manner 506 - consistent with the requirements of this License, to extend the patent 507 - license to downstream recipients. "Knowingly relying" means you have 508 - actual knowledge that, but for the patent license, your conveying the 509 - covered work in a country, or your recipient's use of the covered work 510 - in a country, would infringe one or more identifiable patents in that 511 - country that you have reason to believe are valid. 512 - 513 - If, pursuant to or in connection with a single transaction or 514 - arrangement, you convey, or propagate by procuring conveyance of, a 515 - covered work, and grant a patent license to some of the parties 516 - receiving the covered work authorizing them to use, propagate, modify 517 - or convey a specific copy of the covered work, then the patent license 518 - you grant is automatically extended to all recipients of the covered 519 - work and works based on it. 520 - 521 - A patent license is "discriminatory" if it does not include within 522 - the scope of its coverage, prohibits the exercise of, or is 523 - conditioned on the non-exercise of one or more of the rights that are 524 - specifically granted under this License. You may not convey a covered 525 - work if you are a party to an arrangement with a third party that is 526 - in the business of distributing software, under which you make payment 527 - to the third party based on the extent of your activity of conveying 528 - the work, and under which the third party grants, to any of the 529 - parties who would receive the covered work from you, a discriminatory 530 - patent license (a) in connection with copies of the covered work 531 - conveyed by you (or copies made from those copies), or (b) primarily 532 - for and in connection with specific products or compilations that 533 - contain the covered work, unless you entered into that arrangement, 534 - or that patent license was granted, prior to 28 March 2007. 535 - 536 - Nothing in this License shall be construed as excluding or limiting 537 - any implied license or other defenses to infringement that may 538 - otherwise be available to you under applicable patent law. 539 - 540 - 12. No Surrender of Others' Freedom. 541 - 542 - If conditions are imposed on you (whether by court order, agreement or 543 - otherwise) that contradict the conditions of this License, they do not 544 - excuse you from the conditions of this License. If you cannot convey a 545 - covered work so as to satisfy simultaneously your obligations under this 546 - License and any other pertinent obligations, then as a consequence you may 547 - not convey it at all. For example, if you agree to terms that obligate you 548 - to collect a royalty for further conveying from those to whom you convey 549 - the Program, the only way you could satisfy both those terms and this 550 - License would be to refrain entirely from conveying the Program. 551 - 552 - 13. Use with the GNU Affero General Public License. 553 - 554 - Notwithstanding any other provision of this License, you have 555 - permission to link or combine any covered work with a work licensed 556 - under version 3 of the GNU Affero General Public License into a single 557 - combined work, and to convey the resulting work. The terms of this 558 - License will continue to apply to the part which is the covered work, 559 - but the special requirements of the GNU Affero General Public License, 560 - section 13, concerning interaction through a network will apply to the 561 - combination as such. 562 - 563 - 14. Revised Versions of this License. 564 - 565 - The Free Software Foundation may publish revised and/or new versions of 566 - the GNU General Public License from time to time. Such new versions will 567 - be similar in spirit to the present version, but may differ in detail to 568 - address new problems or concerns. 569 - 570 - Each version is given a distinguishing version number. If the 571 - Program specifies that a certain numbered version of the GNU General 572 - Public License "or any later version" applies to it, you have the 573 - option of following the terms and conditions either of that numbered 574 - version or of any later version published by the Free Software 575 - Foundation. If the Program does not specify a version number of the 576 - GNU General Public License, you may choose any version ever published 577 - by the Free Software Foundation. 578 - 579 - If the Program specifies that a proxy can decide which future 580 - versions of the GNU General Public License can be used, that proxy's 581 - public statement of acceptance of a version permanently authorizes you 582 - to choose that version for the Program. 583 - 584 - Later license versions may give you additional or different 585 - permissions. However, no additional obligations are imposed on any 586 - author or copyright holder as a result of your choosing to follow a 587 - later version. 588 - 589 - 15. Disclaimer of Warranty. 590 - 591 - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 - APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 - HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 - OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 - THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 - PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 - IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 - ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 - 600 - 16. Limitation of Liability. 601 - 602 - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 - WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 - THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 - GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 - USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 - DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 - PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 - EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 - SUCH DAMAGES. 611 - 612 - 17. Interpretation of Sections 15 and 16. 613 - 614 - If the disclaimer of warranty and limitation of liability provided 615 - above cannot be given local legal effect according to their terms, 616 - reviewing courts shall apply local law that most closely approximates 617 - an absolute waiver of all civil liability in connection with the 618 - Program, unless a warranty or assumption of liability accompanies a 619 - copy of the Program in return for a fee. 620 - 621 - END OF TERMS AND CONDITIONS 622 - 623 - How to Apply These Terms to Your New Programs 624 - 625 - If you develop a new program, and you want it to be of the greatest 626 - possible use to the public, the best way to achieve this is to make it 627 - free software which everyone can redistribute and change under these terms. 628 - 629 - To do so, attach the following notices to the program. It is safest 630 - to attach them to the start of each source file to most effectively 631 - state the exclusion of warranty; and each file should have at least 632 - the "copyright" line and a pointer to where the full notice is found. 633 - 634 - <one line to give the program's name and a brief idea of what it does.> 635 - Copyright (C) <year> <name of author> 636 - 637 - This program is free software: you can redistribute it and/or modify 638 - it under the terms of the GNU General Public License as published by 639 - the Free Software Foundation, either version 3 of the License, or 640 - (at your option) any later version. 641 - 642 - This program is distributed in the hope that it will be useful, 643 - but WITHOUT ANY WARRANTY; without even the implied warranty of 644 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 - GNU General Public License for more details. 646 - 647 - You should have received a copy of the GNU General Public License 648 - along with this program. If not, see <https://www.gnu.org/licenses/>. 649 - 650 - Also add information on how to contact you by electronic and paper mail. 651 - 652 - If the program does terminal interaction, make it output a short 653 - notice like this when it starts in an interactive mode: 654 - 655 - <program> Copyright (C) <year> <name of author> 656 - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 - This is free software, and you are welcome to redistribute it 658 - under certain conditions; type `show c' for details. 659 - 660 - The hypothetical commands `show w' and `show c' should show the appropriate 661 - parts of the General Public License. Of course, your program's commands 662 - might be different; for a GUI interface, you would use an "about box". 663 - 664 - You should also get your employer (if you work as a programmer) or school, 665 - if any, to sign a "copyright disclaimer" for the program, if necessary. 666 - For more information on this, and how to apply and follow the GNU GPL, see 667 - <https://www.gnu.org/licenses/>. 668 - 669 - The GNU General Public License does not permit incorporating your program 670 - into proprietary programs. If your program is a subroutine library, you 671 - may consider it more useful to permit linking proprietary applications with 672 - the library. If this is what you want to do, use the GNU Lesser General 673 - Public License instead of this License. But first, please read 674 - <https://www.gnu.org/licenses/why-not-lgpl.html>. 1 + GNU GENERAL PUBLIC LICENSE 2 + Version 3, 29 June 2007 3 + 4 + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> 5 + Everyone is permitted to copy and distribute verbatim copies 6 + of this license document, but changing it is not allowed. 7 + 8 + Preamble 9 + 10 + The GNU General Public License is a free, copyleft license for 11 + software and other kinds of works. 12 + 13 + The licenses for most software and other practical works are designed 14 + to take away your freedom to share and change the works. By contrast, 15 + the GNU General Public License is intended to guarantee your freedom to 16 + share and change all versions of a program--to make sure it remains free 17 + software for all its users. We, the Free Software Foundation, use the 18 + GNU General Public License for most of our software; it applies also to 19 + any other work released this way by its authors. You can apply it to 20 + your programs, too. 21 + 22 + When we speak of free software, we are referring to freedom, not 23 + price. Our General Public Licenses are designed to make sure that you 24 + have the freedom to distribute copies of free software (and charge for 25 + them if you wish), that you receive source code or can get it if you 26 + want it, that you can change the software or use pieces of it in new 27 + free programs, and that you know you can do these things. 28 + 29 + To protect your rights, we need to prevent others from denying you 30 + these rights or asking you to surrender the rights. Therefore, you have 31 + certain responsibilities if you distribute copies of the software, or if 32 + you modify it: responsibilities to respect the freedom of others. 33 + 34 + For example, if you distribute copies of such a program, whether 35 + gratis or for a fee, you must pass on to the recipients the same 36 + freedoms that you received. You must make sure that they, too, receive 37 + or can get the source code. And you must show them these terms so they 38 + know their rights. 39 + 40 + Developers that use the GNU GPL protect your rights with two steps: 41 + (1) assert copyright on the software, and (2) offer you this License 42 + giving you legal permission to copy, distribute and/or modify it. 43 + 44 + For the developers' and authors' protection, the GPL clearly explains 45 + that there is no warranty for this free software. For both users' and 46 + authors' sake, the GPL requires that modified versions be marked as 47 + changed, so that their problems will not be attributed erroneously to 48 + authors of previous versions. 49 + 50 + Some devices are designed to deny users access to install or run 51 + modified versions of the software inside them, although the manufacturer 52 + can do so. This is fundamentally incompatible with the aim of 53 + protecting users' freedom to change the software. The systematic 54 + pattern of such abuse occurs in the area of products for individuals to 55 + use, which is precisely where it is most unacceptable. Therefore, we 56 + have designed this version of the GPL to prohibit the practice for those 57 + products. If such problems arise substantially in other domains, we 58 + stand ready to extend this provision to those domains in future versions 59 + of the GPL, as needed to protect the freedom of users. 60 + 61 + Finally, every program is threatened constantly by software patents. 62 + States should not allow patents to restrict development and use of 63 + software on general-purpose computers, but in those that do, we wish to 64 + avoid the special danger that patents applied to a free program could 65 + make it effectively proprietary. To prevent this, the GPL assures that 66 + patents cannot be used to render the program non-free. 67 + 68 + The precise terms and conditions for copying, distribution and 69 + modification follow. 70 + 71 + TERMS AND CONDITIONS 72 + 73 + 0. Definitions. 74 + 75 + "This License" refers to version 3 of the GNU General Public License. 76 + 77 + "Copyright" also means copyright-like laws that apply to other kinds of 78 + works, such as semiconductor masks. 79 + 80 + "The Program" refers to any copyrightable work licensed under this 81 + License. Each licensee is addressed as "you". "Licensees" and 82 + "recipients" may be individuals or organizations. 83 + 84 + To "modify" a work means to copy from or adapt all or part of the work 85 + in a fashion requiring copyright permission, other than the making of an 86 + exact copy. The resulting work is called a "modified version" of the 87 + earlier work or a work "based on" the earlier work. 88 + 89 + A "covered work" means either the unmodified Program or a work based 90 + on the Program. 91 + 92 + To "propagate" a work means to do anything with it that, without 93 + permission, would make you directly or secondarily liable for 94 + infringement under applicable copyright law, except executing it on a 95 + computer or modifying a private copy. Propagation includes copying, 96 + distribution (with or without modification), making available to the 97 + public, and in some countries other activities as well. 98 + 99 + To "convey" a work means any kind of propagation that enables other 100 + parties to make or receive copies. Mere interaction with a user through 101 + a computer network, with no transfer of a copy, is not conveying. 102 + 103 + An interactive user interface displays "Appropriate Legal Notices" 104 + to the extent that it includes a convenient and prominently visible 105 + feature that (1) displays an appropriate copyright notice, and (2) 106 + tells the user that there is no warranty for the work (except to the 107 + extent that warranties are provided), that licensees may convey the 108 + work under this License, and how to view a copy of this License. If 109 + the interface presents a list of user commands or options, such as a 110 + menu, a prominent item in the list meets this criterion. 111 + 112 + 1. Source Code. 113 + 114 + The "source code" for a work means the preferred form of the work 115 + for making modifications to it. "Object code" means any non-source 116 + form of a work. 117 + 118 + A "Standard Interface" means an interface that either is an official 119 + standard defined by a recognized standards body, or, in the case of 120 + interfaces specified for a particular programming language, one that 121 + is widely used among developers working in that language. 122 + 123 + The "System Libraries" of an executable work include anything, other 124 + than the work as a whole, that (a) is included in the normal form of 125 + packaging a Major Component, but which is not part of that Major 126 + Component, and (b) serves only to enable use of the work with that 127 + Major Component, or to implement a Standard Interface for which an 128 + implementation is available to the public in source code form. A 129 + "Major Component", in this context, means a major essential component 130 + (kernel, window system, and so on) of the specific operating system 131 + (if any) on which the executable work runs, or a compiler used to 132 + produce the work, or an object code interpreter used to run it. 133 + 134 + The "Corresponding Source" for a work in object code form means all 135 + the source code needed to generate, install, and (for an executable 136 + work) run the object code and to modify the work, including scripts to 137 + control those activities. However, it does not include the work's 138 + System Libraries, or general-purpose tools or generally available free 139 + programs which are used unmodified in performing those activities but 140 + which are not part of the work. For example, Corresponding Source 141 + includes interface definition files associated with source files for 142 + the work, and the source code for shared libraries and dynamically 143 + linked subprograms that the work is specifically designed to require, 144 + such as by intimate data communication or control flow between those 145 + subprograms and other parts of the work. 146 + 147 + The Corresponding Source need not include anything that users 148 + can regenerate automatically from other parts of the Corresponding 149 + Source. 150 + 151 + The Corresponding Source for a work in source code form is that 152 + same work. 153 + 154 + 2. Basic Permissions. 155 + 156 + All rights granted under this License are granted for the term of 157 + copyright on the Program, and are irrevocable provided the stated 158 + conditions are met. This License explicitly affirms your unlimited 159 + permission to run the unmodified Program. The output from running a 160 + covered work is covered by this License only if the output, given its 161 + content, constitutes a covered work. This License acknowledges your 162 + rights of fair use or other equivalent, as provided by copyright law. 163 + 164 + You may make, run and propagate covered works that you do not 165 + convey, without conditions so long as your license otherwise remains 166 + in force. You may convey covered works to others for the sole purpose 167 + of having them make modifications exclusively for you, or provide you 168 + with facilities for running those works, provided that you comply with 169 + the terms of this License in conveying all material for which you do 170 + not control copyright. Those thus making or running the covered works 171 + for you must do so exclusively on your behalf, under your direction 172 + and control, on terms that prohibit them from making any copies of 173 + your copyrighted material outside their relationship with you. 174 + 175 + Conveying under any other circumstances is permitted solely under 176 + the conditions stated below. Sublicensing is not allowed; section 10 177 + makes it unnecessary. 178 + 179 + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 + 181 + No covered work shall be deemed part of an effective technological 182 + measure under any applicable law fulfilling obligations under article 183 + 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 + similar laws prohibiting or restricting circumvention of such 185 + measures. 186 + 187 + When you convey a covered work, you waive any legal power to forbid 188 + circumvention of technological measures to the extent such circumvention 189 + is effected by exercising rights under this License with respect to 190 + the covered work, and you disclaim any intention to limit operation or 191 + modification of the work as a means of enforcing, against the work's 192 + users, your or third parties' legal rights to forbid circumvention of 193 + technological measures. 194 + 195 + 4. Conveying Verbatim Copies. 196 + 197 + You may convey verbatim copies of the Program's source code as you 198 + receive it, in any medium, provided that you conspicuously and 199 + appropriately publish on each copy an appropriate copyright notice; 200 + keep intact all notices stating that this License and any 201 + non-permissive terms added in accord with section 7 apply to the code; 202 + keep intact all notices of the absence of any warranty; and give all 203 + recipients a copy of this License along with the Program. 204 + 205 + You may charge any price or no price for each copy that you convey, 206 + and you may offer support or warranty protection for a fee. 207 + 208 + 5. Conveying Modified Source Versions. 209 + 210 + You may convey a work based on the Program, or the modifications to 211 + produce it from the Program, in the form of source code under the 212 + terms of section 4, provided that you also meet all of these conditions: 213 + 214 + a) The work must carry prominent notices stating that you modified 215 + it, and giving a relevant date. 216 + 217 + b) The work must carry prominent notices stating that it is 218 + released under this License and any conditions added under section 219 + 7. This requirement modifies the requirement in section 4 to 220 + "keep intact all notices". 221 + 222 + c) You must license the entire work, as a whole, under this 223 + License to anyone who comes into possession of a copy. This 224 + License will therefore apply, along with any applicable section 7 225 + additional terms, to the whole of the work, and all its parts, 226 + regardless of how they are packaged. This License gives no 227 + permission to license the work in any other way, but it does not 228 + invalidate such permission if you have separately received it. 229 + 230 + d) If the work has interactive user interfaces, each must display 231 + Appropriate Legal Notices; however, if the Program has interactive 232 + interfaces that do not display Appropriate Legal Notices, your 233 + work need not make them do so. 234 + 235 + A compilation of a covered work with other separate and independent 236 + works, which are not by their nature extensions of the covered work, 237 + and which are not combined with it such as to form a larger program, 238 + in or on a volume of a storage or distribution medium, is called an 239 + "aggregate" if the compilation and its resulting copyright are not 240 + used to limit the access or legal rights of the compilation's users 241 + beyond what the individual works permit. Inclusion of a covered work 242 + in an aggregate does not cause this License to apply to the other 243 + parts of the aggregate. 244 + 245 + 6. Conveying Non-Source Forms. 246 + 247 + You may convey a covered work in object code form under the terms 248 + of sections 4 and 5, provided that you also convey the 249 + machine-readable Corresponding Source under the terms of this License, 250 + in one of these ways: 251 + 252 + a) Convey the object code in, or embodied in, a physical product 253 + (including a physical distribution medium), accompanied by the 254 + Corresponding Source fixed on a durable physical medium 255 + customarily used for software interchange. 256 + 257 + b) Convey the object code in, or embodied in, a physical product 258 + (including a physical distribution medium), accompanied by a 259 + written offer, valid for at least three years and valid for as 260 + long as you offer spare parts or customer support for that product 261 + model, to give anyone who possesses the object code either (1) a 262 + copy of the Corresponding Source for all the software in the 263 + product that is covered by this License, on a durable physical 264 + medium customarily used for software interchange, for a price no 265 + more than your reasonable cost of physically performing this 266 + conveying of source, or (2) access to copy the 267 + Corresponding Source from a network server at no charge. 268 + 269 + c) Convey individual copies of the object code with a copy of the 270 + written offer to provide the Corresponding Source. This 271 + alternative is allowed only occasionally and noncommercially, and 272 + only if you received the object code with such an offer, in accord 273 + with subsection 6b. 274 + 275 + d) Convey the object code by offering access from a designated 276 + place (gratis or for a charge), and offer equivalent access to the 277 + Corresponding Source in the same way through the same place at no 278 + further charge. You need not require recipients to copy the 279 + Corresponding Source along with the object code. If the place to 280 + copy the object code is a network server, the Corresponding Source 281 + may be on a different server (operated by you or a third party) 282 + that supports equivalent copying facilities, provided you maintain 283 + clear directions next to the object code saying where to find the 284 + Corresponding Source. Regardless of what server hosts the 285 + Corresponding Source, you remain obligated to ensure that it is 286 + available for as long as needed to satisfy these requirements. 287 + 288 + e) Convey the object code using peer-to-peer transmission, provided 289 + you inform other peers where the object code and Corresponding 290 + Source of the work are being offered to the general public at no 291 + charge under subsection 6d. 292 + 293 + A separable portion of the object code, whose source code is excluded 294 + from the Corresponding Source as a System Library, need not be 295 + included in conveying the object code work. 296 + 297 + A "User Product" is either (1) a "consumer product", which means any 298 + tangible personal property which is normally used for personal, family, 299 + or household purposes, or (2) anything designed or sold for incorporation 300 + into a dwelling. In determining whether a product is a consumer product, 301 + doubtful cases shall be resolved in favor of coverage. For a particular 302 + product received by a particular user, "normally used" refers to a 303 + typical or common use of that class of product, regardless of the status 304 + of the particular user or of the way in which the particular user 305 + actually uses, or expects or is expected to use, the product. A product 306 + is a consumer product regardless of whether the product has substantial 307 + commercial, industrial or non-consumer uses, unless such uses represent 308 + the only significant mode of use of the product. 309 + 310 + "Installation Information" for a User Product means any methods, 311 + procedures, authorization keys, or other information required to install 312 + and execute modified versions of a covered work in that User Product from 313 + a modified version of its Corresponding Source. The information must 314 + suffice to ensure that the continued functioning of the modified object 315 + code is in no case prevented or interfered with solely because 316 + modification has been made. 317 + 318 + If you convey an object code work under this section in, or with, or 319 + specifically for use in, a User Product, and the conveying occurs as 320 + part of a transaction in which the right of possession and use of the 321 + User Product is transferred to the recipient in perpetuity or for a 322 + fixed term (regardless of how the transaction is characterized), the 323 + Corresponding Source conveyed under this section must be accompanied 324 + by the Installation Information. But this requirement does not apply 325 + if neither you nor any third party retains the ability to install 326 + modified object code on the User Product (for example, the work has 327 + been installed in ROM). 328 + 329 + The requirement to provide Installation Information does not include a 330 + requirement to continue to provide support service, warranty, or updates 331 + for a work that has been modified or installed by the recipient, or for 332 + the User Product in which it has been modified or installed. Access to a 333 + network may be denied when the modification itself materially and 334 + adversely affects the operation of the network or violates the rules and 335 + protocols for communication across the network. 336 + 337 + Corresponding Source conveyed, and Installation Information provided, 338 + in accord with this section must be in a format that is publicly 339 + documented (and with an implementation available to the public in 340 + source code form), and must require no special password or key for 341 + unpacking, reading or copying. 342 + 343 + 7. Additional Terms. 344 + 345 + "Additional permissions" are terms that supplement the terms of this 346 + License by making exceptions from one or more of its conditions. 347 + Additional permissions that are applicable to the entire Program shall 348 + be treated as though they were included in this License, to the extent 349 + that they are valid under applicable law. If additional permissions 350 + apply only to part of the Program, that part may be used separately 351 + under those permissions, but the entire Program remains governed by 352 + this License without regard to the additional permissions. 353 + 354 + When you convey a copy of a covered work, you may at your option 355 + remove any additional permissions from that copy, or from any part of 356 + it. (Additional permissions may be written to require their own 357 + removal in certain cases when you modify the work.) You may place 358 + additional permissions on material, added by you to a covered work, 359 + for which you have or can give appropriate copyright permission. 360 + 361 + Notwithstanding any other provision of this License, for material you 362 + add to a covered work, you may (if authorized by the copyright holders of 363 + that material) supplement the terms of this License with terms: 364 + 365 + a) Disclaiming warranty or limiting liability differently from the 366 + terms of sections 15 and 16 of this License; or 367 + 368 + b) Requiring preservation of specified reasonable legal notices or 369 + author attributions in that material or in the Appropriate Legal 370 + Notices displayed by works containing it; or 371 + 372 + c) Prohibiting misrepresentation of the origin of that material, or 373 + requiring that modified versions of such material be marked in 374 + reasonable ways as different from the original version; or 375 + 376 + d) Limiting the use for publicity purposes of names of licensors or 377 + authors of the material; or 378 + 379 + e) Declining to grant rights under trademark law for use of some 380 + trade names, trademarks, or service marks; or 381 + 382 + f) Requiring indemnification of licensors and authors of that 383 + material by anyone who conveys the material (or modified versions of 384 + it) with contractual assumptions of liability to the recipient, for 385 + any liability that these contractual assumptions directly impose on 386 + those licensors and authors. 387 + 388 + All other non-permissive additional terms are considered "further 389 + restrictions" within the meaning of section 10. If the Program as you 390 + received it, or any part of it, contains a notice stating that it is 391 + governed by this License along with a term that is a further 392 + restriction, you may remove that term. If a license document contains 393 + a further restriction but permits relicensing or conveying under this 394 + License, you may add to a covered work material governed by the terms 395 + of that license document, provided that the further restriction does 396 + not survive such relicensing or conveying. 397 + 398 + If you add terms to a covered work in accord with this section, you 399 + must place, in the relevant source files, a statement of the 400 + additional terms that apply to those files, or a notice indicating 401 + where to find the applicable terms. 402 + 403 + Additional terms, permissive or non-permissive, may be stated in the 404 + form of a separately written license, or stated as exceptions; 405 + the above requirements apply either way. 406 + 407 + 8. Termination. 408 + 409 + You may not propagate or modify a covered work except as expressly 410 + provided under this License. Any attempt otherwise to propagate or 411 + modify it is void, and will automatically terminate your rights under 412 + this License (including any patent licenses granted under the third 413 + paragraph of section 11). 414 + 415 + However, if you cease all violation of this License, then your 416 + license from a particular copyright holder is reinstated (a) 417 + provisionally, unless and until the copyright holder explicitly and 418 + finally terminates your license, and (b) permanently, if the copyright 419 + holder fails to notify you of the violation by some reasonable means 420 + prior to 60 days after the cessation. 421 + 422 + Moreover, your license from a particular copyright holder is 423 + reinstated permanently if the copyright holder notifies you of the 424 + violation by some reasonable means, this is the first time you have 425 + received notice of violation of this License (for any work) from that 426 + copyright holder, and you cure the violation prior to 30 days after 427 + your receipt of the notice. 428 + 429 + Termination of your rights under this section does not terminate the 430 + licenses of parties who have received copies or rights from you under 431 + this License. If your rights have been terminated and not permanently 432 + reinstated, you do not qualify to receive new licenses for the same 433 + material under section 10. 434 + 435 + 9. Acceptance Not Required for Having Copies. 436 + 437 + You are not required to accept this License in order to receive or 438 + run a copy of the Program. Ancillary propagation of a covered work 439 + occurring solely as a consequence of using peer-to-peer transmission 440 + to receive a copy likewise does not require acceptance. However, 441 + nothing other than this License grants you permission to propagate or 442 + modify any covered work. These actions infringe copyright if you do 443 + not accept this License. Therefore, by modifying or propagating a 444 + covered work, you indicate your acceptance of this License to do so. 445 + 446 + 10. Automatic Licensing of Downstream Recipients. 447 + 448 + Each time you convey a covered work, the recipient automatically 449 + receives a license from the original licensors, to run, modify and 450 + propagate that work, subject to this License. You are not responsible 451 + for enforcing compliance by third parties with this License. 452 + 453 + An "entity transaction" is a transaction transferring control of an 454 + organization, or substantially all assets of one, or subdividing an 455 + organization, or merging organizations. If propagation of a covered 456 + work results from an entity transaction, each party to that 457 + transaction who receives a copy of the work also receives whatever 458 + licenses to the work the party's predecessor in interest had or could 459 + give under the previous paragraph, plus a right to possession of the 460 + Corresponding Source of the work from the predecessor in interest, if 461 + the predecessor has it or can get it with reasonable efforts. 462 + 463 + You may not impose any further restrictions on the exercise of the 464 + rights granted or affirmed under this License. For example, you may 465 + not impose a license fee, royalty, or other charge for exercise of 466 + rights granted under this License, and you may not initiate litigation 467 + (including a cross-claim or counterclaim in a lawsuit) alleging that 468 + any patent claim is infringed by making, using, selling, offering for 469 + sale, or importing the Program or any portion of it. 470 + 471 + 11. Patents. 472 + 473 + A "contributor" is a copyright holder who authorizes use under this 474 + License of the Program or a work on which the Program is based. The 475 + work thus licensed is called the contributor's "contributor version". 476 + 477 + A contributor's "essential patent claims" are all patent claims 478 + owned or controlled by the contributor, whether already acquired or 479 + hereafter acquired, that would be infringed by some manner, permitted 480 + by this License, of making, using, or selling its contributor version, 481 + but do not include claims that would be infringed only as a 482 + consequence of further modification of the contributor version. For 483 + purposes of this definition, "control" includes the right to grant 484 + patent sublicenses in a manner consistent with the requirements of 485 + this License. 486 + 487 + Each contributor grants you a non-exclusive, worldwide, royalty-free 488 + patent license under the contributor's essential patent claims, to 489 + make, use, sell, offer for sale, import and otherwise run, modify and 490 + propagate the contents of its contributor version. 491 + 492 + In the following three paragraphs, a "patent license" is any express 493 + agreement or commitment, however denominated, not to enforce a patent 494 + (such as an express permission to practice a patent or covenant not to 495 + sue for patent infringement). To "grant" such a patent license to a 496 + party means to make such an agreement or commitment not to enforce a 497 + patent against the party. 498 + 499 + If you convey a covered work, knowingly relying on a patent license, 500 + and the Corresponding Source of the work is not available for anyone 501 + to copy, free of charge and under the terms of this License, through a 502 + publicly available network server or other readily accessible means, 503 + then you must either (1) cause the Corresponding Source to be so 504 + available, or (2) arrange to deprive yourself of the benefit of the 505 + patent license for this particular work, or (3) arrange, in a manner 506 + consistent with the requirements of this License, to extend the patent 507 + license to downstream recipients. "Knowingly relying" means you have 508 + actual knowledge that, but for the patent license, your conveying the 509 + covered work in a country, or your recipient's use of the covered work 510 + in a country, would infringe one or more identifiable patents in that 511 + country that you have reason to believe are valid. 512 + 513 + If, pursuant to or in connection with a single transaction or 514 + arrangement, you convey, or propagate by procuring conveyance of, a 515 + covered work, and grant a patent license to some of the parties 516 + receiving the covered work authorizing them to use, propagate, modify 517 + or convey a specific copy of the covered work, then the patent license 518 + you grant is automatically extended to all recipients of the covered 519 + work and works based on it. 520 + 521 + A patent license is "discriminatory" if it does not include within 522 + the scope of its coverage, prohibits the exercise of, or is 523 + conditioned on the non-exercise of one or more of the rights that are 524 + specifically granted under this License. You may not convey a covered 525 + work if you are a party to an arrangement with a third party that is 526 + in the business of distributing software, under which you make payment 527 + to the third party based on the extent of your activity of conveying 528 + the work, and under which the third party grants, to any of the 529 + parties who would receive the covered work from you, a discriminatory 530 + patent license (a) in connection with copies of the covered work 531 + conveyed by you (or copies made from those copies), or (b) primarily 532 + for and in connection with specific products or compilations that 533 + contain the covered work, unless you entered into that arrangement, 534 + or that patent license was granted, prior to 28 March 2007. 535 + 536 + Nothing in this License shall be construed as excluding or limiting 537 + any implied license or other defenses to infringement that may 538 + otherwise be available to you under applicable patent law. 539 + 540 + 12. No Surrender of Others' Freedom. 541 + 542 + If conditions are imposed on you (whether by court order, agreement or 543 + otherwise) that contradict the conditions of this License, they do not 544 + excuse you from the conditions of this License. If you cannot convey a 545 + covered work so as to satisfy simultaneously your obligations under this 546 + License and any other pertinent obligations, then as a consequence you may 547 + not convey it at all. For example, if you agree to terms that obligate you 548 + to collect a royalty for further conveying from those to whom you convey 549 + the Program, the only way you could satisfy both those terms and this 550 + License would be to refrain entirely from conveying the Program. 551 + 552 + 13. Use with the GNU Affero General Public License. 553 + 554 + Notwithstanding any other provision of this License, you have 555 + permission to link or combine any covered work with a work licensed 556 + under version 3 of the GNU Affero General Public License into a single 557 + combined work, and to convey the resulting work. The terms of this 558 + License will continue to apply to the part which is the covered work, 559 + but the special requirements of the GNU Affero General Public License, 560 + section 13, concerning interaction through a network will apply to the 561 + combination as such. 562 + 563 + 14. Revised Versions of this License. 564 + 565 + The Free Software Foundation may publish revised and/or new versions of 566 + the GNU General Public License from time to time. Such new versions will 567 + be similar in spirit to the present version, but may differ in detail to 568 + address new problems or concerns. 569 + 570 + Each version is given a distinguishing version number. If the 571 + Program specifies that a certain numbered version of the GNU General 572 + Public License "or any later version" applies to it, you have the 573 + option of following the terms and conditions either of that numbered 574 + version or of any later version published by the Free Software 575 + Foundation. If the Program does not specify a version number of the 576 + GNU General Public License, you may choose any version ever published 577 + by the Free Software Foundation. 578 + 579 + If the Program specifies that a proxy can decide which future 580 + versions of the GNU General Public License can be used, that proxy's 581 + public statement of acceptance of a version permanently authorizes you 582 + to choose that version for the Program. 583 + 584 + Later license versions may give you additional or different 585 + permissions. However, no additional obligations are imposed on any 586 + author or copyright holder as a result of your choosing to follow a 587 + later version. 588 + 589 + 15. Disclaimer of Warranty. 590 + 591 + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 + APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 + HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 + OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 + PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 + IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 + ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 + 600 + 16. Limitation of Liability. 601 + 602 + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 + THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 + GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 + USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 + DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 + PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 + EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 + SUCH DAMAGES. 611 + 612 + 17. Interpretation of Sections 15 and 16. 613 + 614 + If the disclaimer of warranty and limitation of liability provided 615 + above cannot be given local legal effect according to their terms, 616 + reviewing courts shall apply local law that most closely approximates 617 + an absolute waiver of all civil liability in connection with the 618 + Program, unless a warranty or assumption of liability accompanies a 619 + copy of the Program in return for a fee. 620 + 621 + END OF TERMS AND CONDITIONS 622 + 623 + How to Apply These Terms to Your New Programs 624 + 625 + If you develop a new program, and you want it to be of the greatest 626 + possible use to the public, the best way to achieve this is to make it 627 + free software which everyone can redistribute and change under these terms. 628 + 629 + To do so, attach the following notices to the program. It is safest 630 + to attach them to the start of each source file to most effectively 631 + state the exclusion of warranty; and each file should have at least 632 + the "copyright" line and a pointer to where the full notice is found. 633 + 634 + <one line to give the program's name and a brief idea of what it does.> 635 + Copyright (C) <year> <name of author> 636 + 637 + This program is free software: you can redistribute it and/or modify 638 + it under the terms of the GNU General Public License as published by 639 + the Free Software Foundation, either version 3 of the License, or 640 + (at your option) any later version. 641 + 642 + This program is distributed in the hope that it will be useful, 643 + but WITHOUT ANY WARRANTY; without even the implied warranty of 644 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 + GNU General Public License for more details. 646 + 647 + You should have received a copy of the GNU General Public License 648 + along with this program. If not, see <https://www.gnu.org/licenses/>. 649 + 650 + Also add information on how to contact you by electronic and paper mail. 651 + 652 + If the program does terminal interaction, make it output a short 653 + notice like this when it starts in an interactive mode: 654 + 655 + <program> Copyright (C) <year> <name of author> 656 + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 + This is free software, and you are welcome to redistribute it 658 + under certain conditions; type `show c' for details. 659 + 660 + The hypothetical commands `show w' and `show c' should show the appropriate 661 + parts of the General Public License. Of course, your program's commands 662 + might be different; for a GUI interface, you would use an "about box". 663 + 664 + You should also get your employer (if you work as a programmer) or school, 665 + if any, to sign a "copyright disclaimer" for the program, if necessary. 666 + For more information on this, and how to apply and follow the GNU GPL, see 667 + <https://www.gnu.org/licenses/>. 668 + 669 + The GNU General Public License does not permit incorporating your program 670 + into proprietary programs. If your program is a subroutine library, you 671 + may consider it more useful to permit linking proprietary applications with 672 + the library. If this is what you want to do, use the GNU Lesser General 673 + Public License instead of this License. But first, please read 674 + <https://www.gnu.org/licenses/why-not-lgpl.html>.
bin/DDGAME.8xp

This is a binary file and will not be displayed.

bin/DDGAME.bin

This is a binary file and will not be displayed.

+39 -39
bin/DDGAME.map
··· 8 8 .init D1A983 D1A9AD 2Ah 9 9 .fini D1A9AD D1A9E1 34h 10 10 .text D1A9E1 D1BC15 1234h 11 - .data D1BC15 D1E6A3 2A8Eh 12 - .rodata D1E6A3 D1E77B D8h 11 + .data D1BC15 D1E869 2C54h 12 + .rodata D1E869 D1E941 D8h 13 13 .init_array 000000 000000 0h 14 14 .ctors 000000 000000 0h 15 15 .dtors 000000 000000 0h ··· 45 45 _os_EnableHomeTextBuffer = D1AB13 46 46 _os_GetCSC = 021D3C 47 47 _clock = D1AB25 48 - .missingappvar = D1E6A3 49 - .libloadname = D1E6A8 48 + .missingappvar = D1E869 49 + .libloadname = D1E86E 50 50 .libloadnamelen = 000007 51 - .webaddress = D1E6B0 51 + .webaddress = D1E876 52 52 ___init_clock = D1A968 53 53 __start = D1A983 54 54 ___exithl = D1A9AD ··· 65 65 _drawEntities = D1B125 66 66 _drawErrorsAndTotals = D1B1EC 67 67 _doInput = D1B4C3 68 - JTI7_0 = D1E6C5 69 - JTI7_1 = D1E6D1 70 - JTI7_2 = D1E713 71 - JTI7_3 = D1E71F 72 - JTI7_4 = D1E72B 68 + JTI7_0 = D1E88B 69 + JTI7_1 = D1E897 70 + JTI7_2 = D1E8D9 71 + JTI7_3 = D1E8E5 72 + JTI7_4 = D1E8F1 73 73 _setView = D1B70F 74 74 _saveLevel = D1B76C 75 75 _loadLevel = D1B817 ··· 79 79 _main = D1BAFB 80 80 _wallsInRow = D1BB67 81 81 _wallsInCol = D1BBB5 82 - _tileIds = D1E737 83 - _.str = D1E747 84 - _.str.1 = D1E75C 82 + _tileIds = D1E8FD 83 + _.str = D1E90D 84 + _.str.1 = D1E922 85 85 _lastWinAnimFrame = D052C6 86 86 _currentView = D052CA 87 87 _cursorRow = D052CD ··· 90 90 _levelIndex = D052D0 91 91 _packNumLevels = D052D1 92 92 _numLevelPacks = D052D4 93 - _.str.24 = D1E772 94 - _.str.1.23 = D1E776 93 + _.str.24 = D1E938 94 + _.str.1.23 = D1E93C 95 95 _levelPackNames = D052D5 96 - _.str.2 = D1E778 96 + _.str.2 = D1E93E 97 97 _packStart = D052ED 98 98 _packTitle = D052F0 99 99 _packToc = D052F3 ··· 145 145 _tileset_tile_22_data = D1D137 146 146 _tileset_tile_23_data = D1D1E1 147 147 _tileset_tile_24_data = D1D29B 148 - _tileset_tile_25_data = D1D2AD 149 - _tileset_tile_26_data = D1D2BF 150 - _tileset_tile_27_data = D1D2D1 151 - _tileset_tiles_data = D1D2E3 152 - _title_data = D1D337 153 - _walls_tile_0_data = D1DBA9 154 - _walls_tile_1_data = D1DBFE 155 - _walls_tile_2_data = D1DC90 156 - _walls_tile_3_data = D1DD7A 157 - _walls_tile_4_data = D1DE14 158 - _walls_tile_5_data = D1DED9 159 - _walls_tile_6_data = D1DFBB 160 - _walls_tile_7_data = D1E0DD 161 - _walls_tile_8_data = D1E1DF 162 - _walls_tile_9_data = D1E244 163 - _walls_tile_10_data = D1E311 164 - _walls_tile_11_data = D1E40E 165 - _walls_tile_12_data = D1E4B0 166 - _walls_tile_13_data = D1E4C2 167 - _walls_tile_14_data = D1E50F 168 - _walls_tile_15_data = D1E5D1 169 - _walls_tiles_data = D1E641 170 - _default_palette = D1E671 148 + _tileset_tile_25_data = D1D323 149 + _tileset_tile_26_data = D1D39F 150 + _tileset_tile_27_data = D1D42D 151 + _tileset_tiles_data = D1D4A9 152 + _title_data = D1D4FD 153 + _walls_tile_0_data = D1DD6F 154 + _walls_tile_1_data = D1DDC4 155 + _walls_tile_2_data = D1DE56 156 + _walls_tile_3_data = D1DF40 157 + _walls_tile_4_data = D1DFDA 158 + _walls_tile_5_data = D1E09F 159 + _walls_tile_6_data = D1E181 160 + _walls_tile_7_data = D1E2A3 161 + _walls_tile_8_data = D1E3A5 162 + _walls_tile_9_data = D1E40A 163 + _walls_tile_10_data = D1E4D7 164 + _walls_tile_11_data = D1E5D4 165 + _walls_tile_12_data = D1E676 166 + _walls_tile_13_data = D1E688 167 + _walls_tile_14_data = D1E6D5 168 + _walls_tile_15_data = D1E797 169 + _walls_tiles_data = D1E807 170 + _default_palette = D1E837 171 171 _toExit = D052FF 172 172 _map = D05300 173 173 _blitBuffer = D1BC06
+15 -15
makefile
··· 1 - # ---------------------------- 2 - # Makefile Options 3 - # ---------------------------- 4 - 5 - NAME = DDGAME 6 - ICON = icon.png 7 - DESCRIPTION = "Dungeons & Diagrams" 8 - COMPRESSED = NO 9 - ARCHIVED = NO 10 - 11 - CFLAGS = -Wall -Wextra -Oz -Wno-pointer-sign 12 - CXXFLAGS = -Wall -Wextra -Oz 13 - 14 - # ---------------------------- 15 - 1 + # ---------------------------- 2 + # Makefile Options 3 + # ---------------------------- 4 + 5 + NAME = DDGAME 6 + ICON = icon.png 7 + DESCRIPTION = "Dungeons & Diagrams" 8 + COMPRESSED = NO 9 + ARCHIVED = NO 10 + 11 + CFLAGS = -Wall -Wextra -Oz -Wno-pointer-sign 12 + CXXFLAGS = -Wall -Wextra -Oz 13 + 14 + # ---------------------------- 15 + 16 16 include $(shell cedev-config --makefile)
obj/lto.bc

This is a binary file and will not be displayed.

+31 -31
obj/lto.src
··· 2459 2459 section .data,"aw",@progbits 2460 2460 public _tileset_tile_4_data 2461 2461 _tileset_tile_4_data: 2462 - db "", 10, "         " 2462 + db "", 10, "                         " 2463 2463 2464 2464 section .data,"aw",@progbits 2465 2465 public _tileset_tile_5_data 2466 2466 _tileset_tile_5_data: 2467 - db "", 10, "      " 2467 + db "", 10, "                     " 2468 2468 2469 2469 section .data,"aw",@progbits 2470 2470 public _tileset_tile_6_data 2471 2471 _tileset_tile_6_data: 2472 - db "", 10, "", 10, "        " 2472 + db "", 10, "  ", 10, "                   " 2473 2473 2474 2474 section .data,"aw",@progbits 2475 2475 public _tileset_tile_7_data 2476 2476 _tileset_tile_7_data: 2477 - db "", 10, "  " 2477 + db "", 10, "                    " 2478 2478 2479 2479 section .data,"aw",@progbits 2480 2480 public _tileset_tile_8_data 2481 2481 _tileset_tile_8_data: 2482 - db "   " 2482 + db "                               " 2483 2483 2484 2484 section .data,"aw",@progbits 2485 2485 public _tileset_tile_9_data 2486 2486 _tileset_tile_9_data: 2487 - db "   " 2487 + db "                               " 2488 2488 2489 2489 section .data,"aw",@progbits 2490 2490 public _tileset_tile_10_data 2491 2491 _tileset_tile_10_data: 2492 - db "", 13, " ", 10, "", 10, "" 2492 + db " ", 13, "         ", 10, "    ", 10, "                " 2493 2493 2494 2494 section .data,"aw",@progbits 2495 2495 public _tileset_tile_11_data 2496 2496 _tileset_tile_11_data: 2497 - db "", 13, " ", 10, "", 10, "" 2497 + db "", 13, "          ", 10, "    ", 10, "                " 2498 2498 2499 2499 section .data,"aw",@progbits 2500 2500 public _tileset_tile_12_data ··· 2519 2519 section .data,"aw",@progbits 2520 2520 public _tileset_tile_16_data 2521 2521 _tileset_tile_16_data: 2522 - db "", 10, "", 10, "    ", 10, "" 2522 + db "", 10, "", 10, "        ", 10, "" 2523 2523 2524 2524 section .data,"aw",@progbits 2525 2525 public _tileset_tile_17_data 2526 2526 _tileset_tile_17_data: 2527 - db "", 10, "", 10, "    ", 10, "" 2527 + db "", 10, "", 10, "      ", 10, "" 2528 2528 2529 2529 section .data,"aw",@progbits 2530 2530 public _tileset_tile_18_data 2531 2531 _tileset_tile_18_data: 2532 - db "  ", 13, "", 13, "", 13, "", 13, "", 13, " " 2532 + db "  ", 13, "", 13, "  ", 13, "", 13, "", 13, " " 2533 2533 2534 2534 section .data,"aw",@progbits 2535 2535 public _tileset_tile_19_data 2536 2536 _tileset_tile_19_data: 2537 - db "", 10, "      " 2537 + db "", 10, "        " 2538 2538 2539 2539 section .data,"aw",@progbits 2540 2540 public _tileset_tile_20_data ··· 2559 2559 section .data,"aw",@progbits 2560 2560 public _tileset_tile_24_data 2561 2561 _tileset_tile_24_data: 2562 - db 18 dup 16 2562 + db "   ", 10, "      " 2563 2563 2564 2564 section .data,"aw",@progbits 2565 2565 public _tileset_tile_25_data 2566 2566 _tileset_tile_25_data: 2567 - db 18 dup 16 2567 + db "     ", 10, "    " 2568 2568 2569 2569 section .data,"aw",@progbits 2570 2570 public _tileset_tile_26_data 2571 2571 _tileset_tile_26_data: 2572 - db 18 dup 16 2572 + db " ", 10, "      " 2573 2573 2574 2574 section .data,"aw",@progbits 2575 2575 public _tileset_tile_27_data 2576 2576 _tileset_tile_27_data: 2577 - db 18 dup 16 2577 + db " ", 10, "    " 2578 2578 2579 2579 section .data,"aw",@progbits 2580 2580 public _tileset_tiles_data ··· 2616 2616 section .data,"aw",@progbits 2617 2617 public _walls_tile_0_data 2618 2618 _walls_tile_0_data: 2619 - db "", 0, " ", 0, "", 10, 0, "", 10, 0, " ", 0, " ", 0, " ", 0, " ", 0, " " 2619 + db "", 0, " ", 0, "", 10, 10, 10, 10, " ", 10, 0, "", 10, 10, 10, 10, 10, " ", 10, 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " " 2620 2620 2621 2621 section .data,"aw",@progbits 2622 2622 public _walls_tile_1_data 2623 2623 _walls_tile_1_data: 2624 - db "                " 2624 + db "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10 2625 2625 2626 2626 section .data,"aw",@progbits 2627 2627 public _walls_tile_2_data 2628 2628 _walls_tile_2_data: 2629 - db "", 0, " ", 0, " ", 0, " ", 0, " ", 0, "", 0, "", 0, " ", 0, " ", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "" 2629 + db "", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, 10, " ", 0, " ", 10, 10, 10, 10, 10, 10, 10, 10, " ", 0, " ", 10, 10, 10, 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 2630 2630 2631 2631 section .data,"aw",@progbits 2632 2632 public _walls_tile_3_data 2633 2633 _walls_tile_3_data: 2634 - db "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "" 2634 + db "", 0, " ", 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 2635 2635 2636 2636 section .data,"aw",@progbits 2637 2637 public _walls_tile_4_data 2638 2638 _walls_tile_4_data: 2639 - db "", 0, " ", 0, " ", 0, " ", 0, " ", 0, "", 0, "", 0, "  ", 0, "  ", 0, "  ", 0, "  ", 0, "       " 2639 + db "", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, 10, " ", 0, " ", 10, 10, " ", 0, "   ", 10, " ", 0, " ", 10, 10, 10, "  ", 10, " ", 0, "", 10, " ", 10, 10, "  ", 10, 10, " ", 0, " ", 10, 10, "  ", 10, 10, 10, 10, 10, 10, 10, 0, "", 10, " ", 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, " ", 10, 10, " ", 10, 10, 10, 10, 10, 10, " ", 10, " ", 10, 10, 10, 10, 10, 10, " ", 10, 10, 10, 10, 10, 10, "", 10, " ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10 2640 2640 2641 2641 section .data,"aw",@progbits 2642 2642 public _walls_tile_5_data 2643 2643 _walls_tile_5_data: 2644 - db "      ", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "" 2644 + db "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, " ", 10, 10, 10, 10, 10, 10, 10, " ", 10, 10, 10, 10, 10, 10, 10, " ", 10, 10, 10, 10, 10, 10, 10, 10, " ", 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, " ", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 2645 2645 2646 2646 section .data,"aw",@progbits 2647 2647 public _walls_tile_6_data 2648 2648 _walls_tile_6_data: 2649 - db "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "" 2649 + db "", 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 2650 2650 2651 2651 section .data,"aw",@progbits 2652 2652 public _walls_tile_7_data 2653 2653 _walls_tile_7_data: 2654 - db "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, " ", 0, "  ", 0, " ", 0, "  ", 0, "   ", 0, "  ", 0, " ", 0, "", 0, "", 0, " " 2654 + db "", 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, 10, 10, " ", 10, " ", 0, "", 10, 10, 10, 10, 10, 10, 10, " ", 10, 10, " ", 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, "  ", 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 10, " ", 10, 10, 10, " ", 10, 0, " ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, "", 0, " ", 10, 10, 10, 10, 10, 10, " ", 10, "", 0, "", 10, 10, 10, 10, 10, 10, " ", 10, "", 0, "", 10, 10, 10, 10, 10, 10, " ", 10, "", 0, "", 10, 10, 10, 10, 10, 10, " " 2655 2655 2656 2656 section .data,"aw",@progbits 2657 2657 public _walls_tile_8_data 2658 2658 _walls_tile_8_data: 2659 - db "             ", 10, "  ", 10, "    " 2659 + db "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, "  ", 10, 10, 10, "      ", 10, " ", 10, "", 10, 10, "", 10, " ", 10, 10, " ", 10, " ", 10, 10, " ", 10, " ", 10, 10, 10, " " 2660 2660 2661 2661 section .data,"aw",@progbits 2662 2662 public _walls_tile_9_data 2663 2663 _walls_tile_9_data: 2664 - db "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "  ", 0, "    ", 0, "    ", 0, "  ", 0, "  " 2664 + db "", 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, " ", 0, "", 10, "  ", 0, "", 10, " ", 10, " ", 10, 10, " ", 10, " ", 0, "  ", 10, 10, " ", 10, 10, " ", 10, 10, 0, "", 10, 10, " ", 10, 10, "", 10, 10, 10, " ", 0, "", 10, 10, 10, " ", 10, 10, 10, 10, " ", 10, 10, "" 2665 2665 2666 2666 section .data,"aw",@progbits 2667 2667 public _walls_tile_10_data 2668 2668 _walls_tile_10_data: 2669 - db "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "", 0, "  ", 0, " ", 0, "  ", 0, "  ", 0, "       " 2669 + db "", 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, " ", 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "   ", 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, 10, 10, 0, "", 10, " ", 10, 10, "  ", 10, 10, 10, 10, 10, 10, 10, 0, " ", 10, 10, "  ", 10, 10, 10, 10, 10, 10, 10, 0, "", 10, " ", 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, " ", 10, 10, " ", 10, 10, 10, 10, 10, 10, " ", 10, " ", 10, 10, 10, 10, 10, 10, " ", 10, 10, 10, 10, 10, 10, "", 10, " ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10 2670 2670 2671 2671 section .data,"aw",@progbits 2672 2672 public _walls_tile_11_data 2673 2673 _walls_tile_11_data: 2674 - db "", 0, " ", 0, " ", 0, " ", 0, " ", 0, " ", 0, " ", 0, " ", 0, " ", 0, " ", 0, " ", 0, " ", 0, " ", 0, " ", 0, " ", 0, " ", 0, " " 2674 + db "", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " " 2675 2675 2676 2676 section .data,"aw",@progbits 2677 2677 public _walls_tile_12_data ··· 2681 2681 section .data,"aw",@progbits 2682 2682 public _walls_tile_13_data 2683 2683 _walls_tile_13_data: 2684 - db " ", 10, "", 10, "     " 2684 + db "  ", 10, " ", 10, 10, 10, 10, 10, " ", 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10 2685 2685 2686 2686 section .data,"aw",@progbits 2687 2687 public _walls_tile_14_data 2688 2688 _walls_tile_14_data: 2689 - db "         ", 0, " ", 0, "  ", 0, "   ", 0, "  ", 0, " ", 0, "", 0, "", 0, " " 2689 + db "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, 10, 10, 10, 10, " ", 10, 10, 10, 10, 10, 10, 10, " ", 10, 10, "  ", 10, "  ", 10, " ", 10, " ", 0, " ", 10, 10, " ", 10, 10, " ", 10, 10, 0, "", 10, 10, 10, 10, 10, 10, 10, "  ", 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 10, " ", 10, 10, 10, " ", 10, 0, " ", 10, 10, 10, 10, 10, 10, "  ", 10, 10, "", 0, " ", 10, 10, 10, 10, 10, 10, " ", 10, "", 0, "", 10, 10, 10, 10, 10, 10, " ", 10, "", 0, "", 10, 10, 10, 10, 10, 10, " ", 10, "", 0, "", 10, 10, 10, 10, 10, 10, " " 2690 2690 2691 2691 section .data,"aw",@progbits 2692 2692 public _walls_tile_15_data 2693 2693 _walls_tile_15_data: 2694 - db "", 0, " ", 0, " ", 0, " ", 0, " ", 0, " ", 0, " ", 0, "   ", 0, "   ", 0, " ", 10, 0, " ", 10, 0, " " 2694 + db "", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, 10, " ", 0, "", 10, 10, 10, 10, "  ", 0, "  ", 0, "  ", 10, " ", 0, " ", 10, " ", 10, " ", 0, "", 10, 10, "", 10, " ", 10, 10, 0, " ", 10, "", 10, 10, 10, 0, "", 10, 10, " " 2695 2695 2696 2696 section .data,"aw",@progbits 2697 2697 public _walls_tiles_data
+10 -10
obj/src/drawing.c.d
··· 1 - obj/src/drawing.c.bc: src\drawing.c \ 2 - C:\Users\aliya\source\CEdev\include\stdlib.h \ 3 - C:\Users\aliya\source\CEdev\include\cdefs.h \ 4 - C:\Users\aliya\source\CEdev\include\graphx.h \ 5 - C:\Users\aliya\source\CEdev\include\stdint.h \ 6 - C:\Users\aliya\source\CEdev\include\stdbool.h \ 7 - C:\Users\aliya\source\CEdev\include\time.h src\map.h src\drawing.h \ 8 - src\game.h src\gfx\gfx.h src\gfx\default_palette.h src\gfx\scroll.h \ 9 - src\gfx\title.h src\gfx\digits.h src\gfx\tileset.h src\gfx\walls.h \ 10 - src\asm\blitBuffer.h 1 + obj/src/drawing.c.bc: src/drawing.c \ 2 + /home/aliya/projects/CEdev/include/stdlib.h \ 3 + /home/aliya/projects/CEdev/include/cdefs.h \ 4 + /home/aliya/projects/CEdev/include/graphx.h \ 5 + /home/aliya/projects/CEdev/include/stdint.h \ 6 + /home/aliya/projects/CEdev/include/stdbool.h \ 7 + /home/aliya/projects/CEdev/include/time.h src/map.h src/drawing.h \ 8 + src/game.h src/gfx/gfx.h src/gfx/default_palette.h src/gfx/scroll.h \ 9 + src/gfx/title.h src/gfx/digits.h src/gfx/tileset.h src/gfx/walls.h \ 10 + src/asm/blitBuffer.h
+15 -15
obj/src/game.c.d
··· 1 - obj/src/game.c.bc: src\game.c \ 2 - C:\Users\aliya\source\CEdev\include\fileioc.h \ 3 - C:\Users\aliya\source\CEdev\include\stdint.h \ 4 - C:\Users\aliya\source\CEdev\include\cdefs.h \ 5 - C:\Users\aliya\source\CEdev\include\stddef.h \ 6 - C:\Users\aliya\source\CEdev\include\stdlib.h \ 7 - C:\Users\aliya\source\CEdev\include\stdbool.h \ 8 - C:\Users\aliya\source\CEdev\include\stdio.h \ 9 - C:\Users\aliya\source\CEdev\include\stdarg.h \ 10 - C:\Users\aliya\source\CEdev\include\ti\vars.h \ 11 - C:\Users\aliya\source\CEdev\include\ti\real.h \ 12 - C:\Users\aliya\source\CEdev\include\graphx.h \ 13 - C:\Users\aliya\source\CEdev\include\keypadc.h \ 14 - C:\Users\aliya\source\CEdev\include\ti\getcsc.h src\game.h \ 15 - src\drawing.h src\map.h 1 + obj/src/game.c.bc: src/game.c \ 2 + /home/aliya/projects/CEdev/include/fileioc.h \ 3 + /home/aliya/projects/CEdev/include/stdint.h \ 4 + /home/aliya/projects/CEdev/include/cdefs.h \ 5 + /home/aliya/projects/CEdev/include/stddef.h \ 6 + /home/aliya/projects/CEdev/include/stdlib.h \ 7 + /home/aliya/projects/CEdev/include/stdbool.h \ 8 + /home/aliya/projects/CEdev/include/stdio.h \ 9 + /home/aliya/projects/CEdev/include/stdarg.h \ 10 + /home/aliya/projects/CEdev/include/ti/vars.h \ 11 + /home/aliya/projects/CEdev/include/ti/real.h \ 12 + /home/aliya/projects/CEdev/include/graphx.h \ 13 + /home/aliya/projects/CEdev/include/keypadc.h \ 14 + /home/aliya/projects/CEdev/include/ti/getcsc.h src/game.h \ 15 + src/drawing.h src/map.h
+1 -1
obj/src/gfx/default_palette.c.d
··· 1 - obj/src/gfx/default_palette.c.bc: src\gfx\default_palette.c 1 + obj/src/gfx/default_palette.c.bc: src/gfx/default_palette.c
+1 -1
obj/src/gfx/digits.c.d
··· 1 - obj/src/gfx/digits.c.bc: src\gfx\digits.c 1 + obj/src/gfx/digits.c.bc: src/gfx/digits.c
obj/src/gfx/tileset.c.bc

This is a binary file and will not be displayed.

+1 -1
obj/src/gfx/tileset.c.d
··· 1 - obj/src/gfx/tileset.c.bc: src\gfx\tileset.c 1 + obj/src/gfx/tileset.c.bc: src/gfx/tileset.c
+1 -1
obj/src/gfx/title.c.d
··· 1 - obj/src/gfx/title.c.bc: src\gfx\title.c 1 + obj/src/gfx/title.c.bc: src/gfx/title.c
obj/src/gfx/walls.c.bc

This is a binary file and will not be displayed.

+1 -1
obj/src/gfx/walls.c.d
··· 1 - obj/src/gfx/walls.c.bc: src\gfx\walls.c 1 + obj/src/gfx/walls.c.bc: src/gfx/walls.c
+9 -10
obj/src/main.c.d
··· 1 - obj/src/main.c.bc: src\main.c \ 2 - C:\Users\aliya\source\CEdev\include\stdlib.h \ 3 - C:\Users\aliya\source\CEdev\include\cdefs.h \ 4 - C:\Users\aliya\source\CEdev\include\graphx.h \ 5 - C:\Users\aliya\source\CEdev\include\stdint.h \ 6 - C:\Users\aliya\source\CEdev\include\stdbool.h \ 7 - C:\Users\aliya\source\CEdev\include\keypadc.h src\gfx\gfx.h \ 8 - src\gfx\default_palette.h src\gfx\scroll.h src\gfx\title.h \ 9 - src\gfx\digits.h src\gfx\tileset.h src\gfx\walls.h src\drawing.h \ 10 - src\game.h 1 + obj/src/main.c.bc: src/main.c /home/aliya/projects/CEdev/include/stdlib.h \ 2 + /home/aliya/projects/CEdev/include/cdefs.h \ 3 + /home/aliya/projects/CEdev/include/graphx.h \ 4 + /home/aliya/projects/CEdev/include/stdint.h \ 5 + /home/aliya/projects/CEdev/include/stdbool.h \ 6 + /home/aliya/projects/CEdev/include/keypadc.h src/gfx/gfx.h \ 7 + src/gfx/default_palette.h src/gfx/scroll.h src/gfx/title.h \ 8 + src/gfx/digits.h src/gfx/tileset.h src/gfx/walls.h src/drawing.h \ 9 + src/game.h
+5 -5
obj/src/map.c.d
··· 1 - obj/src/map.c.bc: src\map.c C:\Users\aliya\source\CEdev\include\stdlib.h \ 2 - C:\Users\aliya\source\CEdev\include\cdefs.h \ 3 - C:\Users\aliya\source\CEdev\include\graphx.h \ 4 - C:\Users\aliya\source\CEdev\include\stdint.h \ 5 - C:\Users\aliya\source\CEdev\include\stdbool.h src\map.h 1 + obj/src/map.c.bc: src/map.c /home/aliya/projects/CEdev/include/stdlib.h \ 2 + /home/aliya/projects/CEdev/include/cdefs.h \ 3 + /home/aliya/projects/CEdev/include/graphx.h \ 4 + /home/aliya/projects/CEdev/include/stdint.h \ 5 + /home/aliya/projects/CEdev/include/stdbool.h src/map.h
packs/DDLVLZOP.8xv

This is a binary file and will not be displayed.

+99 -99
packs/compilepack.py
··· 1 - import yaml 2 - import argparse 3 - import subprocess 4 - from os import remove 5 - 6 - magic_number = 0xF908EC 7 - 8 - def load_yaml(filename : str) -> dict: 9 - try: 10 - with open(filename, 'r') as file: 11 - data = yaml.safe_load(file) 12 - return data 13 - except FileNotFoundError: 14 - print(f"Error: The file '{filename}' does not exist.") 15 - except yaml.YAMLError as e: 16 - print(f"Error: Failed to parse YAML file. {e}") 17 - except Exception as e: 18 - print(f"An unexpected error occurred: {e}") 19 - 20 - def verify_pack(data : dict) -> bool: 21 - if ('id' not in data): 22 - print("Error: no three-character id provided for level pack.") 23 - return False 24 - if (len(data['id']) != 3): 25 - print("Error: level pack id must be three characters long.") 26 - return False 27 - if ('name' not in data): 28 - data['name'] = 'Untitled Level Pack' 29 - if ('levels' not in data): 30 - print("Error: no levels in pack!") 31 - return False 32 - data['count'] = len(data['levels']) 33 - return True 34 - 35 - def serialize(data : dict) -> None: 36 - global file_name; file_name = f"DDLVL{data['id']}" 37 - global bin_name; bin_name = f"{file_name}.bin" 38 - global out_name; out_name = f"{file_name}.8xv" 39 - 40 - level_lengths : list = list(map(lambda level: len(level['name']) + 3 * len(level['monsters']) + 2 * len(level['chests']) + 19 + 8, data['levels'])) 41 - title_offset : int = 3 42 - toc_offset : int = title_offset + len(data['name']) + 2 43 - first_level_offset : int = toc_offset + 2 * len(data['levels']) 44 - level_offsets : list = [None] * len(level_lengths) 45 - for i in range(len(level_lengths)): 46 - level_offsets[i] = first_level_offset 47 - for j in range(i): 48 - level_offsets[i] += level_lengths[j] 49 - 50 - with open(bin_name, 'wb') as file: 51 - file.write(magic_number.to_bytes(3, 'little')) 52 - file.write(bytes(data['name'], "ascii")) 53 - file.write(b'\x00') 54 - file.write(len(data['levels']).to_bytes(1)) 55 - for level_offset in level_offsets: 56 - file.write(level_offset.to_bytes(2, 'little')) 57 - for level in data['levels']: 58 - file.write(bytes(level['name'], "ascii")) 59 - file.write(b'\x00') 60 - for i in range(8): 61 - file.write(b'\x00') 62 - for i in range(8): 63 - file.write(level['cols'][i].to_bytes(1)) 64 - for i in range(8): 65 - file.write(level['rows'][i].to_bytes(1)) 66 - for monster in level['monsters']: 67 - file.write(monster[0].to_bytes(1)) 68 - file.write(monster[1].to_bytes(1)) 69 - file.write(monster[2].to_bytes(1)) 70 - file.write(b'\xff') 71 - for chest in level['chests']: 72 - file.write(chest[0].to_bytes(1)) 73 - file.write(chest[1].to_bytes(1)) 74 - file.write(b'\xff') 75 - 76 - def convbin(): 77 - command = ["convbin", "-j", "bin", "-k", "8xv", "-i", bin_name, "-o", out_name, "-n", file_name] 78 - try: 79 - subprocess.run(command) 80 - except FileNotFoundError: 81 - print("Error: ensure that convbin is in your $PATH.") 82 - remove(bin_name) 83 - 84 - def main(): 85 - parser = argparse.ArgumentParser(description="Compile a level pack for Dungeons and Diagrams CE from a YAML file.") 86 - parser.add_argument("inputfile", help="The name of the YAML file to load.") 87 - args = parser.parse_args() 88 - data = load_yaml(args.inputfile) 89 - print("Loading file...") 90 - if not verify_pack(data): 91 - return 92 - if data: 93 - print(f"Loaded level pack '{data['name']}' with {data['count']} levels.") 94 - print("Compiling...") 95 - serialize(data) 96 - print("Converting...") 97 - convbin() 98 - 99 - if __name__ == "__main__": 1 + import yaml 2 + import argparse 3 + import subprocess 4 + from os import remove 5 + 6 + magic_number = 0xF908EC 7 + 8 + def load_yaml(filename : str) -> dict: 9 + try: 10 + with open(filename, 'r') as file: 11 + data = yaml.safe_load(file) 12 + return data 13 + except FileNotFoundError: 14 + print(f"Error: The file '{filename}' does not exist.") 15 + except yaml.YAMLError as e: 16 + print(f"Error: Failed to parse YAML file. {e}") 17 + except Exception as e: 18 + print(f"An unexpected error occurred: {e}") 19 + 20 + def verify_pack(data : dict) -> bool: 21 + if ('id' not in data): 22 + print("Error: no three-character id provided for level pack.") 23 + return False 24 + if (len(data['id']) != 3): 25 + print("Error: level pack id must be three characters long.") 26 + return False 27 + if ('name' not in data): 28 + data['name'] = 'Untitled Level Pack' 29 + if ('levels' not in data): 30 + print("Error: no levels in pack!") 31 + return False 32 + data['count'] = len(data['levels']) 33 + return True 34 + 35 + def serialize(data : dict) -> None: 36 + global file_name; file_name = f"DDLVL{data['id']}" 37 + global bin_name; bin_name = f"{file_name}.bin" 38 + global out_name; out_name = f"{file_name}.8xv" 39 + 40 + level_lengths : list = list(map(lambda level: len(level['name']) + 3 * len(level['monsters']) + 2 * len(level['chests']) + 19 + 8, data['levels'])) 41 + title_offset : int = 3 42 + toc_offset : int = title_offset + len(data['name']) + 2 43 + first_level_offset : int = toc_offset + 2 * len(data['levels']) 44 + level_offsets : list = [None] * len(level_lengths) 45 + for i in range(len(level_lengths)): 46 + level_offsets[i] = first_level_offset 47 + for j in range(i): 48 + level_offsets[i] += level_lengths[j] 49 + 50 + with open(bin_name, 'wb') as file: 51 + file.write(magic_number.to_bytes(3, 'little')) 52 + file.write(bytes(data['name'], "ascii")) 53 + file.write(b'\x00') 54 + file.write(len(data['levels']).to_bytes(1)) 55 + for level_offset in level_offsets: 56 + file.write(level_offset.to_bytes(2, 'little')) 57 + for level in data['levels']: 58 + file.write(bytes(level['name'], "ascii")) 59 + file.write(b'\x00') 60 + for i in range(8): 61 + file.write(b'\x00') 62 + for i in range(8): 63 + file.write(level['cols'][i].to_bytes(1)) 64 + for i in range(8): 65 + file.write(level['rows'][i].to_bytes(1)) 66 + for monster in level['monsters']: 67 + file.write(monster[0].to_bytes(1)) 68 + file.write(monster[1].to_bytes(1)) 69 + file.write(monster[2].to_bytes(1)) 70 + file.write(b'\xff') 71 + for chest in level['chests']: 72 + file.write(chest[0].to_bytes(1)) 73 + file.write(chest[1].to_bytes(1)) 74 + file.write(b'\xff') 75 + 76 + def convbin(): 77 + command = ["convbin", "-j", "bin", "-k", "8xv", "-i", bin_name, "-o", out_name, "-n", file_name] 78 + try: 79 + subprocess.run(command) 80 + except FileNotFoundError: 81 + print("Error: ensure that convbin is in your $PATH.") 82 + remove(bin_name) 83 + 84 + def main(): 85 + parser = argparse.ArgumentParser(description="Compile a level pack for Dungeons and Diagrams CE from a YAML file.") 86 + parser.add_argument("inputfile", help="The name of the YAML file to load.") 87 + args = parser.parse_args() 88 + data = load_yaml(args.inputfile) 89 + print("Loading file...") 90 + if not verify_pack(data): 91 + return 92 + if data: 93 + print(f"Loaded level pack '{data['name']}' with {data['count']} levels.") 94 + print("Compiling...") 95 + serialize(data) 96 + print("Converting...") 97 + convbin() 98 + 99 + if __name__ == "__main__": 100 100 main()
+57 -57
packs/originalpack.yaml
··· 1 - name: Zach's Original Pack 2 - id : ZOP 3 - 4 - levels: 5 - - name: Tenaxxus's Gullet 6 - cols: [4, 4, 2, 6, 2, 3, 4, 7] 7 - rows: [7, 3, 4, 1, 7, 1, 6, 3] 8 - monsters: [[0, 5, 3], [5, 0, 3], [7, 2, 0], [7, 7, 3]] 9 - chests: [[2, 1]] 10 - 11 - - name: The Twin Cities of the Dead 12 - cols: [1, 3, 1, 5, 3, 4, 3, 5] 13 - rows: [5, 2, 2, 3, 6, 0, 6, 1] 14 - monsters: [[4, 0, 2], [7, 4, 2], [7, 6, 2]] 15 - chests: [[1, 2], [1, 4]] 16 - 17 - - name: The Gardens of Hell 18 - cols: [1, 4, 3, 6, 3, 1, 4, 4] 19 - rows: [6, 0, 4, 1, 5, 3, 3, 4] 20 - monsters: [[0, 0, 0], [0, 7, 0], [3, 7, 0], [4, 0, 0], [7, 0, 0]] 21 - chests: [[6, 4]] 22 - 23 - - name: The House Penumbral 24 - cols: [0, 4, 0, 7, 3, 4, 3, 2] 25 - rows: [6, 2, 3, 1, 5, 1, 4, 1] 26 - monsters: [[0, 0, 1], [0, 2, 1], [7, 6, 0]] 27 - chests: [[1, 7]] 28 - 29 - - name: The Maze of the Minotaur 30 - cols: [7, 2, 6, 1, 3, 2, 6, 1] 31 - rows: [0, 7, 3, 3, 3, 5, 2, 5] 32 - monsters: [[0, 0, 0], [2, 1, 4]] 33 - chests: [[2, 3]] 34 - 35 - - name: The Halls of the Golemancer 36 - cols: [5, 3, 2, 4, 6, 4, 1, 5] 37 - rows: [6, 3, 3, 3, 5, 3, 4, 3] 38 - monsters: [[0, 5, 0], [1, 7, 0], [2, 5, 0], [3, 7, 0], [4, 5, 0], [5, 7, 0]] 39 - chests: [[2, 2]] 40 - 41 - - name: The Tomb of the Broken God 42 - cols: [1, 3, 3, 2, 6, 2, 4, 1] 43 - rows: [1, 4, 1, 6, 2, 2, 5, 1] 44 - monsters: [[0, 5, 3], [4, 7, 3], [7, 5, 3]] 45 - chests: [[0, 1]] 46 - 47 - - name: The Hive of Great Sorrow 48 - cols: [3, 6, 0, 5, 4, 0, 6, 3] 49 - rows: [6, 2, 4, 3, 2, 4, 2, 4] 50 - monsters: [[0, 2, 0], [0, 5, 1], [1, 0, 1], [1, 7, 0], [3, 4, 0], [6, 0, 1], [6, 7, 1]] 51 - chests: [] 52 - 53 - - name: Lair of the Elemental King 54 - cols: [5, 2, 1, 2, 5, 4, 2, 3] 55 - rows: [4, 1, 4, 2, 6, 2, 3, 2] 56 - monsters: [[0, 7, 0], [2, 2, 4]] 57 - chests: [[6, 3]] 1 + name: Zach's Original Pack 2 + id : ZOP 3 + 4 + levels: 5 + - name: Tenaxxus's Gullet 6 + cols: [4, 4, 2, 6, 2, 3, 4, 7] 7 + rows: [7, 3, 4, 1, 7, 1, 6, 3] 8 + monsters: [[0, 5, 3], [5, 0, 3], [7, 2, 0], [7, 7, 3]] 9 + chests: [[2, 1]] 10 + 11 + - name: The Twin Cities of the Dead 12 + cols: [1, 3, 1, 5, 3, 4, 3, 5] 13 + rows: [5, 2, 2, 3, 6, 0, 6, 1] 14 + monsters: [[4, 0, 2], [7, 4, 2], [7, 6, 2]] 15 + chests: [[1, 2], [1, 4]] 16 + 17 + - name: The Gardens of Hell 18 + cols: [1, 4, 3, 6, 3, 1, 4, 4] 19 + rows: [6, 0, 4, 1, 5, 3, 3, 4] 20 + monsters: [[0, 0, 0], [0, 7, 0], [3, 7, 0], [4, 0, 0], [7, 0, 0]] 21 + chests: [[6, 4]] 22 + 23 + - name: The House Penumbral 24 + cols: [0, 4, 0, 7, 3, 4, 3, 2] 25 + rows: [6, 2, 3, 1, 5, 1, 4, 1] 26 + monsters: [[0, 0, 1], [0, 2, 1], [7, 6, 0]] 27 + chests: [[1, 7]] 28 + 29 + - name: The Maze of the Minotaur 30 + cols: [7, 2, 6, 1, 3, 2, 6, 1] 31 + rows: [0, 7, 3, 3, 3, 5, 2, 5] 32 + monsters: [[0, 0, 0], [2, 1, 4]] 33 + chests: [[2, 3]] 34 + 35 + - name: The Halls of the Golemancer 36 + cols: [5, 3, 2, 4, 6, 4, 1, 5] 37 + rows: [6, 3, 3, 3, 5, 3, 4, 3] 38 + monsters: [[0, 5, 5], [1, 7, 5], [2, 5, 5], [3, 7, 5], [4, 5, 5], [5, 7, 5]] 39 + chests: [[2, 2]] 40 + 41 + - name: The Tomb of the Broken God 42 + cols: [1, 3, 3, 2, 6, 2, 4, 1] 43 + rows: [1, 4, 1, 6, 2, 2, 5, 1] 44 + monsters: [[0, 5, 3], [4, 7, 3], [7, 5, 2]] 45 + chests: [[0, 1]] 46 + 47 + - name: The Hive of Great Sorrow 48 + cols: [3, 6, 0, 5, 4, 0, 6, 3] 49 + rows: [6, 2, 4, 3, 2, 4, 2, 4] 50 + monsters: [[0, 2, 0], [0, 5, 1], [1, 0, 1], [1, 7, 0], [3, 4, 0], [6, 0, 1], [6, 7, 1]] 51 + chests: [] 52 + 53 + - name: Lair of the Elemental King 54 + cols: [5, 2, 1, 2, 5, 4, 2, 3] 55 + rows: [4, 1, 4, 2, 6, 2, 3, 2] 56 + monsters: [[0, 7, 5], [2, 2, 4]] 57 + chests: [[6, 3]]
+13 -13
src/asm/blitBuffer.asm
··· 1 - vbuffer := 0xD52C00 2 - vram := 0xD40000 3 - numBytes := 76800 4 - 5 - assume adl=1 6 - 7 - section .text 8 - public _blitBuffer 9 - _blitBuffer: 10 - ld hl, vbuffer 11 - ld de, vram 12 - ld bc, numBytes 13 - ldir 1 + vbuffer := 0xD52C00 2 + vram := 0xD40000 3 + numBytes := 76800 4 + 5 + assume adl=1 6 + 7 + section .text 8 + public _blitBuffer 9 + _blitBuffer: 10 + ld hl, vbuffer 11 + ld de, vram 12 + ld bc, numBytes 13 + ldir 14 14 ret
+5 -5
src/asm/blitBuffer.h
··· 1 - #ifndef BLITBUFFER_H 2 - #define BLITBUFFER_H 3 - 4 - void blitBuffer(); 5 - 1 + #ifndef BLITBUFFER_H 2 + #define BLITBUFFER_H 3 + 4 + void blitBuffer(); 5 + 6 6 #endif
+239 -239
src/drawing.c
··· 1 - #include <stdlib.h> 2 - #include <graphx.h> 3 - #include <time.h> 4 - #include "map.h" 5 - #include "drawing.h" 6 - #include "game.h" 7 - #include "gfx/gfx.h" 8 - #include "asm/blitBuffer.h" 9 - 10 - #define TILE_CURSOR tileset_tiles[0] 11 - #define TILE_FLAG tileset_tiles[1] 12 - #define TILE_CHEST tileset_tiles[2] 13 - #define TILE_ERROR tileset_tiles[3] 14 - 15 - #define NUM_WIN_ANIM_FRAMES 4 16 - #define WIN_ANIM_FRAME_TIME 10000 17 - 18 - const uint8_t tileIds[] = {12, 15, 8, 9, 0, 11, 14, 7, 13, 4, 1, 10, 3, 2, 5, 6}; 19 - #define getTileIndexFromNeighbors(tileNeighbors) tileIds[tileNeighbors] 20 - 21 - uint8_t levelWinAnimFrame = 0; 22 - clock_t lastWinAnimFrame; 23 - 24 - void drawBackground() 25 - { 26 - gfx_SetColor(COLOR_LIGHT_GREY); 27 - gfx_FillRectangle(BG_X, 0, BG_WIDTH, BANNER_HEIGHT); 28 - gfx_SetColor(COLOR_DARK_GREY); 29 - gfx_FillRectangle(BG_X, BANNER_HEIGHT, BG_WIDTH, GFX_LCD_HEIGHT - BANNER_HEIGHT); 30 - } 31 - 32 - void drawView() { 33 - gfx_FillScreen(COLOR_BLACK); 34 - switch (currentView) { 35 - case VIEW_TITLE: 36 - gfx_SetTextFGColor(COLOR_WHITE); 37 - gfx_RLETSprite(title, PACKS_TITLE_X, PACKS_TITLE_Y); 38 - gfx_SetTextXY(LIST_X, LIST_Y - LIST_DY); 39 - 40 - if (numLevelPacks > 0) { 41 - gfx_PrintString("Select pack to load:"); 42 - listLevelPacks(); 43 - } 44 - else { 45 - gfx_PrintString("No level packs found!"); 46 - } 47 - 48 - break; 49 - 50 - case VIEW_LEVELS: 51 - drawBackground(); 52 - gfx_RLETSprite(title, LEVELS_TITLE_X, LEVELS_TITLE_Y); 53 - gfx_SetTextFGColor(COLOR_BLACK); 54 - printCentered(packTitle, LEVEL_PACK_NAME_Y); 55 - 56 - for (uint8_t i = 0; i < *packNumLevels; i++) { 57 - const uint24_t levelX = LEVELS_X + LEVELS_DX * (i % LEVELS_PER_ROW); 58 - const uint8_t levelY = LEVELS_Y + LEVELS_DY * (i / LEVELS_PER_ROW); 59 - loadLevel(i); 60 - 61 - // draw a preview of the level 62 - for (uint8_t row = 0; row < MAP_HEIGHT; row++) { 63 - for (uint8_t col = 0; col < MAP_WIDTH; col++) { 64 - const uint8_t cellColor = map[row][col].contents == ENTITY_WALL ? COLOR_BLACK 65 - : map[row][col].contents == ENTITY_CHEST ? COLOR_YELLOW 66 - : map[row][col].contents == ENTITY_MONSTER ? COLOR_RED 67 - : COLOR_WHITE; 68 - gfx_SetColor(cellColor); 69 - gfx_FillRectangle(levelX + col * LEVELS_SCALE, levelY + row * LEVELS_SCALE, LEVELS_SCALE, LEVELS_SCALE); 70 - } 71 - } 72 - 73 - if (i != levelIndex) continue; 74 - 75 - // only get here if this is the selected level 76 - // draw the selection cursor and display the name of the level 77 - printCentered(levelTitle, LEVEL_SELECT_NAME_Y); 78 - gfx_SetColor(COLOR_RED); 79 - gfx_Rectangle(levelX - LEVELS_CURSOR_HOFFSET, levelY - LEVELS_CURSOR_VOFFSET, LEVELS_DX, LEVELS_DY); 80 - } 81 - 82 - break; 83 - 84 - case VIEW_GAME: 85 - drawBackground(); 86 - gfx_RLETSprite(title, LEVELS_TITLE_X, LEVELS_TITLE_Y); 87 - gfx_SetTextFGColor(COLOR_BLACK); 88 - printCentered(levelTitle, LEVEL_TITLE_Y); 89 - drawTiles(); 90 - 91 - break; 92 - 93 - default: 94 - break; 95 - } 96 - 97 - blitBuffer(); 98 - } 99 - 100 - void drawTiles() { 101 - drawWalls(); 102 - drawEntities(); 103 - drawErrorsAndTotals(); 104 - 105 - // no cursor if win animation playing (to tell user interaction is not permitted) 106 - if (levelWinAnimFrame != 0) return; 107 - 108 - gfx_RLETSprite(TILE_CURSOR, MAP_X + cursorCol * TILE_WIDTH + TILE_WIDTH / 2, MAP_Y + cursorRow * TILE_HEIGHT + TILE_HEIGHT / 2 + 1); 109 - } 110 - 111 - void drawEntities() 112 - { 113 - for (uint8_t col = 0; col < MAP_WIDTH; col++) 114 - { 115 - for (uint8_t row = 0; row < MAP_HEIGHT; row++) 116 - { 117 - gfx_rletsprite_t *tileSprite; 118 - 119 - switch (map[row][col].contents) { 120 - case ENTITY_FLAG: 121 - tileSprite = TILE_FLAG; 122 - break; 123 - case ENTITY_CHEST: 124 - tileSprite = TILE_CHEST; 125 - break; 126 - case ENTITY_MONSTER: 127 - tileSprite = tileset_tiles[4 * (map[row][col].variant + 1) + levelWinAnimFrame]; 128 - break; 129 - default: continue; 130 - } 131 - 132 - gfx_RLETSprite(tileSprite, MAP_X + col * TILE_WIDTH + TILE_WIDTH / 2, MAP_Y + row * TILE_HEIGHT + TILE_HEIGHT / 2); 133 - } 134 - } 135 - } 136 - 137 - void drawWalls() { 138 - for (uint8_t col = 0; col <= MAP_WIDTH; col++) { 139 - for (uint8_t row = 0; row <= MAP_HEIGHT; row++) { 140 - uint8_t tileNeighbors = getCell(row - 1, col - 1).contents == ENTITY_WALL ? 1 : 0; 141 - tileNeighbors += 2 * (getCell(row - 1, col).contents == ENTITY_WALL ? 1 : 0); 142 - tileNeighbors += 4 * (getCell(row, col - 1).contents == ENTITY_WALL ? 1 : 0); 143 - tileNeighbors += 8 * (getCell(row, col).contents == ENTITY_WALL ? 1 : 0); 144 - 145 - const uint8_t tileId = getTileIndexFromNeighbors(tileNeighbors); 146 - gfx_RLETSprite(walls_tiles[tileId], MAP_X + col * TILE_WIDTH, MAP_Y + row * TILE_HEIGHT); 147 - } 148 - } 149 - } 150 - 151 - void drawErrorsAndTotals() 152 - { 153 - bool noExcess = true; 154 - 155 - // errors 156 - for (uint8_t col = 0; col < MAP_WIDTH; col++) { 157 - if (wallsInCol(col) > colTargets[col]) { 158 - noExcess = false; 159 - for (uint8_t row = 0; row < MAP_HEIGHT; row++) { 160 - gfx_RLETSprite(TILE_ERROR, MAP_X + col * TILE_WIDTH + TILE_WIDTH / 2, MAP_Y + row * TILE_HEIGHT + TILE_HEIGHT / 2); 161 - } 162 - } 163 - } 164 - for (uint8_t row = 0; row < MAP_HEIGHT; row++) { 165 - if (wallsInRow(row) > rowTargets[row]) { 166 - noExcess = false; 167 - for (uint8_t col = 0; col < MAP_WIDTH; col++) { 168 - gfx_RLETSprite(TILE_ERROR, MAP_X + col * TILE_WIDTH + TILE_WIDTH / 2, MAP_Y + row * TILE_HEIGHT + TILE_HEIGHT / 2); 169 - } 170 - } 171 - } 172 - 173 - bool noMissing = true; 174 - 175 - // totals 176 - for (uint8_t col = 0; col < MAP_WIDTH; col++) { 177 - bool thisSatisfied = wallsInCol(col) == colTargets[col]; 178 - noMissing &= thisSatisfied; 179 - const uint8_t spriteIndex = colTargets[col] + (thisSatisfied ? 9 : 0); 180 - gfx_RLETSprite(digits_tiles[spriteIndex], MAP_X + col * TILE_WIDTH + TILE_WIDTH / 2, MAP_Y - DIGIT_VOFFSET); 181 - } 182 - for (uint8_t row = 0; row < MAP_HEIGHT; row++) { 183 - bool thisSatisfied = wallsInRow(row) == rowTargets[row]; 184 - noMissing &= thisSatisfied; 185 - const uint8_t spriteIndex = rowTargets[row] + (thisSatisfied ? 9 : 0); 186 - gfx_RLETSprite(digits_tiles[spriteIndex], MAP_X - DIGIT_HOFFSET, MAP_Y + row * TILE_HEIGHT + TILE_HEIGHT / 2); 187 - } 188 - 189 - if (noMissing && noExcess) 190 - { 191 - if (levelWinAnimFrame == 0) { 192 - levelWinAnimFrame++; 193 - lastWinAnimFrame = clock(); 194 - 195 - for (uint8_t row = 0; row < MAP_HEIGHT; row++) 196 - { 197 - for (uint8_t col = 0; col < MAP_WIDTH; col++) 198 - { 199 - if (map[row][col].contents == ENTITY_FLAG) map[row][col].contents = ENTITY_NONE; 200 - } 201 - } 202 - } 203 - else if (clock() - lastWinAnimFrame > WIN_ANIM_FRAME_TIME) 204 - { 205 - lastWinAnimFrame = clock(); 206 - if (levelWinAnimFrame < NUM_WIN_ANIM_FRAMES - 1) { 207 - levelWinAnimFrame++; 208 - } 209 - else { 210 - levelWinAnimFrame--; 211 - } 212 - } 213 - } 214 - } 215 - 216 - void printCentered(char *str, uint8_t y) 217 - { 218 - uint8_t length = 0; 219 - for (char *ptr = str; *ptr != 0x00; ptr++) 220 - { 221 - const uint8_t dl = *ptr == ' ' ? 3 : 8; 222 - length += dl; 223 - } 224 - 225 - const uint24_t x0 = (GFX_LCD_WIDTH - (uint24_t) length) / 2; 226 - const uint24_t x1 = (GFX_LCD_WIDTH + (uint24_t) length) / 2; 227 - 228 - // draw scroll background 229 - gfx_SetColor(COLOR_DARK_BROWN); 230 - gfx_HorizLine_NoClip(x0 - 3, y - 3, length + 6); 231 - gfx_HorizLine_NoClip(x0 - 3, y + 9, length + 6); 232 - gfx_SetColor(COLOR_LIGHT_BROWN); 233 - gfx_FillRectangle_NoClip(x0 - 2, y - 2, length, 11); 234 - gfx_RLETSprite_NoClip(scroll, x0 - (scroll_width + 2), y - (scroll_height - 8)/2 - 1); 235 - gfx_RLETSprite_NoClip(scroll, x1 - 2, y - (scroll_height - 8)/2 - 1); 236 - 237 - // text 238 - gfx_SetColor(COLOR_BLACK); 239 - gfx_PrintStringXY(str, x0, y); 1 + #include <stdlib.h> 2 + #include <graphx.h> 3 + #include <time.h> 4 + #include "map.h" 5 + #include "drawing.h" 6 + #include "game.h" 7 + #include "gfx/gfx.h" 8 + #include "asm/blitBuffer.h" 9 + 10 + #define TILE_CURSOR tileset_tiles[0] 11 + #define TILE_FLAG tileset_tiles[1] 12 + #define TILE_CHEST tileset_tiles[2] 13 + #define TILE_ERROR tileset_tiles[3] 14 + 15 + #define NUM_WIN_ANIM_FRAMES 4 16 + #define WIN_ANIM_FRAME_TIME 10000 17 + 18 + const uint8_t tileIds[] = {12, 15, 8, 9, 0, 11, 14, 7, 13, 4, 1, 10, 3, 2, 5, 6}; 19 + #define getTileIndexFromNeighbors(tileNeighbors) tileIds[tileNeighbors] 20 + 21 + uint8_t levelWinAnimFrame = 0; 22 + clock_t lastWinAnimFrame; 23 + 24 + void drawBackground() 25 + { 26 + gfx_SetColor(COLOR_LIGHT_GREY); 27 + gfx_FillRectangle(BG_X, 0, BG_WIDTH, BANNER_HEIGHT); 28 + gfx_SetColor(COLOR_DARK_GREY); 29 + gfx_FillRectangle(BG_X, BANNER_HEIGHT, BG_WIDTH, GFX_LCD_HEIGHT - BANNER_HEIGHT); 30 + } 31 + 32 + void drawView() { 33 + gfx_FillScreen(COLOR_BLACK); 34 + switch (currentView) { 35 + case VIEW_TITLE: 36 + gfx_SetTextFGColor(COLOR_WHITE); 37 + gfx_RLETSprite(title, PACKS_TITLE_X, PACKS_TITLE_Y); 38 + gfx_SetTextXY(LIST_X, LIST_Y - LIST_DY); 39 + 40 + if (numLevelPacks > 0) { 41 + gfx_PrintString("Select pack to load:"); 42 + listLevelPacks(); 43 + } 44 + else { 45 + gfx_PrintString("No level packs found!"); 46 + } 47 + 48 + break; 49 + 50 + case VIEW_LEVELS: 51 + drawBackground(); 52 + gfx_RLETSprite(title, LEVELS_TITLE_X, LEVELS_TITLE_Y); 53 + gfx_SetTextFGColor(COLOR_BLACK); 54 + printCentered(packTitle, LEVEL_PACK_NAME_Y); 55 + 56 + for (uint8_t i = 0; i < *packNumLevels; i++) { 57 + const uint24_t levelX = LEVELS_X + LEVELS_DX * (i % LEVELS_PER_ROW); 58 + const uint8_t levelY = LEVELS_Y + LEVELS_DY * (i / LEVELS_PER_ROW); 59 + loadLevel(i); 60 + 61 + // draw a preview of the level 62 + for (uint8_t row = 0; row < MAP_HEIGHT; row++) { 63 + for (uint8_t col = 0; col < MAP_WIDTH; col++) { 64 + const uint8_t cellColor = map[row][col].contents == ENTITY_WALL ? COLOR_BLACK 65 + : map[row][col].contents == ENTITY_CHEST ? COLOR_YELLOW 66 + : map[row][col].contents == ENTITY_MONSTER ? COLOR_RED 67 + : COLOR_WHITE; 68 + gfx_SetColor(cellColor); 69 + gfx_FillRectangle(levelX + col * LEVELS_SCALE, levelY + row * LEVELS_SCALE, LEVELS_SCALE, LEVELS_SCALE); 70 + } 71 + } 72 + 73 + if (i != levelIndex) continue; 74 + 75 + // only get here if this is the selected level 76 + // draw the selection cursor and display the name of the level 77 + printCentered(levelTitle, LEVEL_SELECT_NAME_Y); 78 + gfx_SetColor(COLOR_RED); 79 + gfx_Rectangle(levelX - LEVELS_CURSOR_HOFFSET, levelY - LEVELS_CURSOR_VOFFSET, LEVELS_DX, LEVELS_DY); 80 + } 81 + 82 + break; 83 + 84 + case VIEW_GAME: 85 + drawBackground(); 86 + gfx_RLETSprite(title, LEVELS_TITLE_X, LEVELS_TITLE_Y); 87 + gfx_SetTextFGColor(COLOR_BLACK); 88 + printCentered(levelTitle, LEVEL_TITLE_Y); 89 + drawTiles(); 90 + 91 + break; 92 + 93 + default: 94 + break; 95 + } 96 + 97 + blitBuffer(); 98 + } 99 + 100 + void drawTiles() { 101 + drawWalls(); 102 + drawEntities(); 103 + drawErrorsAndTotals(); 104 + 105 + // no cursor if win animation playing (to tell user interaction is not permitted) 106 + if (levelWinAnimFrame != 0) return; 107 + 108 + gfx_RLETSprite(TILE_CURSOR, MAP_X + cursorCol * TILE_WIDTH + TILE_WIDTH / 2, MAP_Y + cursorRow * TILE_HEIGHT + TILE_HEIGHT / 2 + 1); 109 + } 110 + 111 + void drawEntities() 112 + { 113 + for (uint8_t col = 0; col < MAP_WIDTH; col++) 114 + { 115 + for (uint8_t row = 0; row < MAP_HEIGHT; row++) 116 + { 117 + gfx_rletsprite_t *tileSprite; 118 + 119 + switch (map[row][col].contents) { 120 + case ENTITY_FLAG: 121 + tileSprite = TILE_FLAG; 122 + break; 123 + case ENTITY_CHEST: 124 + tileSprite = TILE_CHEST; 125 + break; 126 + case ENTITY_MONSTER: 127 + tileSprite = tileset_tiles[4 * (map[row][col].variant + 1) + levelWinAnimFrame]; 128 + break; 129 + default: continue; 130 + } 131 + 132 + gfx_RLETSprite(tileSprite, MAP_X + col * TILE_WIDTH + TILE_WIDTH / 2, MAP_Y + row * TILE_HEIGHT + TILE_HEIGHT / 2); 133 + } 134 + } 135 + } 136 + 137 + void drawWalls() { 138 + for (uint8_t col = 0; col <= MAP_WIDTH; col++) { 139 + for (uint8_t row = 0; row <= MAP_HEIGHT; row++) { 140 + uint8_t tileNeighbors = getCell(row - 1, col - 1).contents == ENTITY_WALL ? 1 : 0; 141 + tileNeighbors += 2 * (getCell(row - 1, col).contents == ENTITY_WALL ? 1 : 0); 142 + tileNeighbors += 4 * (getCell(row, col - 1).contents == ENTITY_WALL ? 1 : 0); 143 + tileNeighbors += 8 * (getCell(row, col).contents == ENTITY_WALL ? 1 : 0); 144 + 145 + const uint8_t tileId = getTileIndexFromNeighbors(tileNeighbors); 146 + gfx_RLETSprite(walls_tiles[tileId], MAP_X + col * TILE_WIDTH, MAP_Y + row * TILE_HEIGHT); 147 + } 148 + } 149 + } 150 + 151 + void drawErrorsAndTotals() 152 + { 153 + bool noExcess = true; 154 + 155 + // errors 156 + for (uint8_t col = 0; col < MAP_WIDTH; col++) { 157 + if (wallsInCol(col) > colTargets[col]) { 158 + noExcess = false; 159 + for (uint8_t row = 0; row < MAP_HEIGHT; row++) { 160 + gfx_RLETSprite(TILE_ERROR, MAP_X + col * TILE_WIDTH + TILE_WIDTH / 2, MAP_Y + row * TILE_HEIGHT + TILE_HEIGHT / 2); 161 + } 162 + } 163 + } 164 + for (uint8_t row = 0; row < MAP_HEIGHT; row++) { 165 + if (wallsInRow(row) > rowTargets[row]) { 166 + noExcess = false; 167 + for (uint8_t col = 0; col < MAP_WIDTH; col++) { 168 + gfx_RLETSprite(TILE_ERROR, MAP_X + col * TILE_WIDTH + TILE_WIDTH / 2, MAP_Y + row * TILE_HEIGHT + TILE_HEIGHT / 2); 169 + } 170 + } 171 + } 172 + 173 + bool noMissing = true; 174 + 175 + // totals 176 + for (uint8_t col = 0; col < MAP_WIDTH; col++) { 177 + bool thisSatisfied = wallsInCol(col) == colTargets[col]; 178 + noMissing &= thisSatisfied; 179 + const uint8_t spriteIndex = colTargets[col] + (thisSatisfied ? 9 : 0); 180 + gfx_RLETSprite(digits_tiles[spriteIndex], MAP_X + col * TILE_WIDTH + TILE_WIDTH / 2, MAP_Y - DIGIT_VOFFSET); 181 + } 182 + for (uint8_t row = 0; row < MAP_HEIGHT; row++) { 183 + bool thisSatisfied = wallsInRow(row) == rowTargets[row]; 184 + noMissing &= thisSatisfied; 185 + const uint8_t spriteIndex = rowTargets[row] + (thisSatisfied ? 9 : 0); 186 + gfx_RLETSprite(digits_tiles[spriteIndex], MAP_X - DIGIT_HOFFSET, MAP_Y + row * TILE_HEIGHT + TILE_HEIGHT / 2); 187 + } 188 + 189 + if (noMissing && noExcess) 190 + { 191 + if (levelWinAnimFrame == 0) { 192 + levelWinAnimFrame++; 193 + lastWinAnimFrame = clock(); 194 + 195 + for (uint8_t row = 0; row < MAP_HEIGHT; row++) 196 + { 197 + for (uint8_t col = 0; col < MAP_WIDTH; col++) 198 + { 199 + if (map[row][col].contents == ENTITY_FLAG) map[row][col].contents = ENTITY_NONE; 200 + } 201 + } 202 + } 203 + else if (clock() - lastWinAnimFrame > WIN_ANIM_FRAME_TIME) 204 + { 205 + lastWinAnimFrame = clock(); 206 + if (levelWinAnimFrame < NUM_WIN_ANIM_FRAMES - 1) { 207 + levelWinAnimFrame++; 208 + } 209 + else { 210 + levelWinAnimFrame--; 211 + } 212 + } 213 + } 214 + } 215 + 216 + void printCentered(char *str, uint8_t y) 217 + { 218 + uint8_t length = 0; 219 + for (char *ptr = str; *ptr != 0x00; ptr++) 220 + { 221 + const uint8_t dl = *ptr == ' ' ? 3 : 8; 222 + length += dl; 223 + } 224 + 225 + const uint24_t x0 = (GFX_LCD_WIDTH - (uint24_t) length) / 2; 226 + const uint24_t x1 = (GFX_LCD_WIDTH + (uint24_t) length) / 2; 227 + 228 + // draw scroll background 229 + gfx_SetColor(COLOR_DARK_BROWN); 230 + gfx_HorizLine_NoClip(x0 - 3, y - 3, length + 6); 231 + gfx_HorizLine_NoClip(x0 - 3, y + 9, length + 6); 232 + gfx_SetColor(COLOR_LIGHT_BROWN); 233 + gfx_FillRectangle_NoClip(x0 - 2, y - 2, length, 11); 234 + gfx_RLETSprite_NoClip(scroll, x0 - (scroll_width + 2), y - (scroll_height - 8)/2 - 1); 235 + gfx_RLETSprite_NoClip(scroll, x1 - 2, y - (scroll_height - 8)/2 - 1); 236 + 237 + // text 238 + gfx_SetColor(COLOR_BLACK); 239 + gfx_PrintStringXY(str, x0, y); 240 240 }
+58 -58
src/drawing.h
··· 1 - #ifndef DRAWING_H 2 - #define DRAWING_H 3 - 4 - #define COLOR_MAGENTA 0 5 - #define COLOR_BLACK 1 6 - #define COLOR_WHITE 2 7 - #define COLOR_RED 3 8 - #define COLOR_YELLOW 4 9 - #define COLOR_LIGHT_GREY 5 10 - #define COLOR_DARK_GREY 6 11 - #define COLOR_LIGHT_BROWN 8 12 - #define COLOR_DARK_BROWN 7 13 - 14 - #define BG_X 40 15 - #define BG_WIDTH 240 16 - #define BANNER_HEIGHT 64 17 - #define PACKS_TITLE_X ((GFX_LCD_WIDTH - title_width) / 2) 18 - #define PACKS_TITLE_Y ((80 - title_height) / 2) 19 - #define LIST_X 40 20 - #define LIST_Y 80 21 - #define LIST_DY 14 22 - #define LIST_WIDTH ((GFX_LCD_WIDTH - LIST_X) / 2) 23 - 24 - #define LEVELS_TITLE_X 73 25 - #define LEVELS_TITLE_Y 10 26 - #define LEVEL_PACK_NAME_X 78 27 - #define LEVEL_PACK_NAME_Y 49 28 - #define LEVEL_SELECT_NAME_X 64 29 - #define LEVEL_SELECT_NAME_Y 74 30 - #define LEVELS_PER_ROW 6 31 - #define LEVELS_MAX_ROWS 4 32 - #define LEVELS_X 54 33 - #define LEVELS_Y 91 34 - #define LEVELS_DX 36 35 - #define LEVELS_DY 36 36 - #define LEVELS_CURSOR_HOFFSET 2 37 - #define LEVELS_CURSOR_VOFFSET 2 38 - #define LEVELS_SCALE 4 39 - 40 - #define LEVEL_TITLE_Y LEVEL_PACK_NAME_Y 41 - #define MAP_X 88 42 - #define MAP_Y 86 43 - #define TILE_WIDTH 16 44 - #define TILE_HEIGHT 16 45 - #define DIGIT_HOFFSET 12 46 - #define DIGIT_VOFFSET 12 47 - 48 - void drawView(); 49 - 50 - extern uint8_t levelWinAnimFrame; 51 - 52 - void drawTiles(); 53 - void drawEntities(); 54 - void drawWalls(); 55 - void drawErrorsAndTotals(); 56 - 57 - void printCentered(char *str, uint8_t y); 58 - 1 + #ifndef DRAWING_H 2 + #define DRAWING_H 3 + 4 + #define COLOR_MAGENTA 0 5 + #define COLOR_BLACK 1 6 + #define COLOR_WHITE 2 7 + #define COLOR_RED 3 8 + #define COLOR_YELLOW 4 9 + #define COLOR_LIGHT_GREY 5 10 + #define COLOR_DARK_GREY 6 11 + #define COLOR_LIGHT_BROWN 8 12 + #define COLOR_DARK_BROWN 7 13 + 14 + #define BG_X 40 15 + #define BG_WIDTH 240 16 + #define BANNER_HEIGHT 64 17 + #define PACKS_TITLE_X ((GFX_LCD_WIDTH - title_width) / 2) 18 + #define PACKS_TITLE_Y ((80 - title_height) / 2) 19 + #define LIST_X 40 20 + #define LIST_Y 80 21 + #define LIST_DY 14 22 + #define LIST_WIDTH ((GFX_LCD_WIDTH - LIST_X) / 2) 23 + 24 + #define LEVELS_TITLE_X 73 25 + #define LEVELS_TITLE_Y 10 26 + #define LEVEL_PACK_NAME_X 78 27 + #define LEVEL_PACK_NAME_Y 49 28 + #define LEVEL_SELECT_NAME_X 64 29 + #define LEVEL_SELECT_NAME_Y 74 30 + #define LEVELS_PER_ROW 6 31 + #define LEVELS_MAX_ROWS 4 32 + #define LEVELS_X 54 33 + #define LEVELS_Y 91 34 + #define LEVELS_DX 36 35 + #define LEVELS_DY 36 36 + #define LEVELS_CURSOR_HOFFSET 2 37 + #define LEVELS_CURSOR_VOFFSET 2 38 + #define LEVELS_SCALE 4 39 + 40 + #define LEVEL_TITLE_Y LEVEL_PACK_NAME_Y 41 + #define MAP_X 88 42 + #define MAP_Y 86 43 + #define TILE_WIDTH 16 44 + #define TILE_HEIGHT 16 45 + #define DIGIT_HOFFSET 12 46 + #define DIGIT_VOFFSET 12 47 + 48 + void drawView(); 49 + 50 + extern uint8_t levelWinAnimFrame; 51 + 52 + void drawTiles(); 53 + void drawEntities(); 54 + void drawWalls(); 55 + void drawErrorsAndTotals(); 56 + 57 + void printCentered(char *str, uint8_t y); 58 + 59 59 #endif
+255 -255
src/game.c
··· 1 - #include <fileioc.h> 2 - #include <graphx.h> 3 - #include <keypadc.h> 4 - #include <ti/getcsc.h> 5 - #include "game.h" 6 - #include "drawing.h" 7 - #include "map.h" 8 - 9 - bool toExit = false; 10 - 11 - view_t currentView = VIEW_TITLE; 12 - 13 - uint8_t cursorRow = 0; 14 - uint8_t cursorCol = 0; 15 - 16 - uint8_t *rowTargets; 17 - uint8_t *colTargets; 18 - 19 - uint8_t numLevelPacks; 20 - char *levelPackNames[MAX_PACKS]; 21 - 22 - void *packStart; 23 - char *packTitle; 24 - uint8_t *packNumLevels; 25 - uint16_t *packToc; 26 - 27 - uint8_t levelIndex; 28 - char *levelTitle; 29 - 30 - void doInput() { 31 - uint8_t key = os_GetCSC(); 32 - 33 - switch(currentView) { 34 - case VIEW_CREDITS: 35 - if (key == sk_2nd || key == sk_Clear) { 36 - setView(VIEW_TITLE); 37 - } 38 - break; 39 - 40 - case VIEW_GAME: 41 - if (key == sk_Clear) { 42 - saveLevel(); 43 - setView(VIEW_LEVELS); 44 - break; 45 - } 46 - 47 - if (levelWinAnimFrame > 0) break; 48 - 49 - if (map[cursorRow][cursorCol].contents != ENTITY_MONSTER && map[cursorRow][cursorCol].contents != ENTITY_CHEST) { 50 - if (key == sk_2nd) { 51 - map[cursorRow][cursorCol].contents = map[cursorRow][cursorCol].contents == ENTITY_WALL ? ENTITY_NONE : ENTITY_WALL; 52 - } 53 - else if (key == sk_Alpha) { 54 - map[cursorRow][cursorCol].contents = map[cursorRow][cursorCol].contents == ENTITY_FLAG ? ENTITY_NONE : ENTITY_FLAG; 55 - } 56 - } 57 - 58 - if (key == sk_Left && cursorCol > 0) { 59 - cursorCol--; 60 - } 61 - if (key == sk_Right && cursorCol < MAP_WIDTH - 1) { 62 - cursorCol++; 63 - } 64 - if (key == sk_Up && cursorRow > 0) { 65 - cursorRow--; 66 - } 67 - if (key == sk_Down && cursorRow < MAP_HEIGHT - 1) { 68 - cursorRow++; 69 - } 70 - break; 71 - 72 - case VIEW_LEVELS: 73 - if (key == sk_Up && levelIndex >= LEVELS_PER_ROW) { 74 - levelIndex -= LEVELS_PER_ROW; 75 - } 76 - if (key == sk_Down && levelIndex + LEVELS_PER_ROW < *packNumLevels) { 77 - levelIndex += LEVELS_PER_ROW; 78 - } 79 - if (key == sk_Left && levelIndex > 0) { 80 - levelIndex--; 81 - } 82 - if (key == sk_Right && levelIndex + 1 < *packNumLevels) { 83 - levelIndex++; 84 - } 85 - 86 - if (key == sk_Clear) { 87 - if (numLevelPacks > 1) setView(VIEW_TITLE); 88 - else toExit = true; 89 - return; 90 - } 91 - if (key == sk_2nd) { 92 - loadLevel(levelIndex); 93 - setView(VIEW_GAME); 94 - } 95 - 96 - break; 97 - 98 - case VIEW_TITLE: 99 - switch (key) { 100 - case sk_1: 101 - loadLevelPack(0); 102 - return; 103 - case sk_2: 104 - loadLevelPack(1); 105 - return; 106 - case sk_3: 107 - loadLevelPack(2); 108 - return; 109 - case sk_4: 110 - loadLevelPack(3); 111 - return; 112 - case sk_5: 113 - loadLevelPack(4); 114 - return; 115 - case sk_6: 116 - loadLevelPack(5); 117 - return; 118 - case sk_7: 119 - loadLevelPack(6); 120 - return; 121 - case sk_8: 122 - loadLevelPack(7); 123 - return; 124 - case sk_Clear: 125 - toExit = true; 126 - return; 127 - default: break; 128 - } 129 - break; 130 - 131 - default: 132 - break; 133 - } 134 - } 135 - 136 - void setView(view_t newView) { 137 - currentView = newView; 138 - 139 - switch (newView) { 140 - case VIEW_TITLE: 141 - findLevelPacks(); 142 - if (numLevelPacks == 1) { 143 - loadLevelPack(0); 144 - return; 145 - } 146 - break; 147 - case VIEW_LEVELS: 148 - loadLevel(levelIndex); 149 - break; 150 - case VIEW_GAME: 151 - cursorRow = 0; 152 - cursorCol = 0; 153 - break; 154 - default: 155 - break; 156 - } 157 - 158 - drawView(); 159 - } 160 - 161 - void findLevelPacks() { 162 - numLevelPacks = 0; 163 - char *var_name; 164 - void *vat_ptr = NULL; 165 - 166 - while (true) { 167 - var_name = ti_Detect(&vat_ptr, "\xEC\x08\xF9"); 168 - if (var_name == NULL) break; 169 - 170 - uint8_t packHandle = ti_Open(var_name, "r"); 171 - ti_Seek(3, SEEK_SET, packHandle); 172 - levelPackNames[numLevelPacks] = ti_GetDataPtr(packHandle); 173 - numLevelPacks++; 174 - 175 - ti_Close(packHandle); 176 - } 177 - } 178 - 179 - void listLevelPacks() { 180 - for (uint8_t i = 0; i < numLevelPacks; i++) { 181 - char * packName = levelPackNames[i]; 182 - gfx_SetTextXY(LIST_X, LIST_Y + LIST_DY * i); 183 - gfx_PrintUInt(i + 1, 1); 184 - gfx_PrintString(". "); 185 - gfx_PrintString(packName); 186 - } 187 - } 188 - 189 - void loadLevelPack(uint8_t index) { 190 - if (index >= numLevelPacks) return; 191 - 192 - char *var_name; 193 - void *vat_ptr = NULL; 194 - 195 - for (uint8_t i = 0; i <= index; i++) { 196 - var_name = ti_Detect(&vat_ptr, "\xEC\x08\xF9"); 197 - } 198 - 199 - uint8_t packHandle = ti_Open(var_name, "r"); 200 - packStart = ti_GetDataPtr(packHandle); 201 - ti_Seek(3, SEEK_SET, packHandle); 202 - packTitle = ti_GetDataPtr(packHandle); 203 - 204 - for (packNumLevels = packTitle; *packNumLevels != 0; packNumLevels++); 205 - packNumLevels++; 206 - 207 - packToc = (uint16_t *)(packNumLevels + 1); 208 - 209 - ti_Close(packHandle); 210 - 211 - levelIndex = 0; 212 - setView(VIEW_LEVELS); 213 - } 214 - 215 - void loadLevel(uint8_t index) { 216 - levelTitle = packStart + packToc[index]; 217 - 218 - // load previously saved wall configuration 219 - uint8_t *levelMap = levelTitle; 220 - while (*levelMap != 0x00) levelMap++; 221 - levelMap++; 222 - for (uint8_t row = 0; row < MAP_HEIGHT; row++) { 223 - uint8_t loadByte = levelMap[row]; 224 - for (uint8_t col = 0; col < MAP_WIDTH; col++) { 225 - map[row][col] = (loadByte & 0x01) ? (cell_t){ENTITY_WALL, 0} : (cell_t){ENTITY_NONE, 0}; 226 - loadByte >>= 1; 227 - } 228 - } 229 - 230 - colTargets = levelMap + MAP_HEIGHT; 231 - rowTargets = colTargets + MAP_WIDTH; 232 - 233 - // load monsters and chests 234 - uint8_t *read_ptr; 235 - for (read_ptr = rowTargets + MAP_HEIGHT; *read_ptr != 0xff; read_ptr += 3) { 236 - map[read_ptr[0]][read_ptr[1]] = (cell_t){ENTITY_MONSTER, read_ptr[2]}; 237 - } 238 - for (read_ptr++; *read_ptr != 0xff; read_ptr += 2) { 239 - map[read_ptr[0]][read_ptr[1]] = (cell_t){ENTITY_CHEST, 0}; 240 - } 241 - 242 - levelWinAnimFrame = 0; 243 - } 244 - 245 - void saveLevel() { 246 - uint8_t *levelMap = packStart + packToc[levelIndex]; 247 - while (*levelMap != 0x00) levelMap++; 248 - levelMap++; 249 - for (uint8_t row = 0; row < MAP_HEIGHT; row++) { 250 - levelMap[row] = 0x00; 251 - for (uint8_t col = 0; col < MAP_WIDTH; col++) { 252 - levelMap[row] >>= 1; 253 - if (map[row][col].contents == ENTITY_WALL) levelMap[row] |= 0x80; 254 - } 255 - } 1 + #include <fileioc.h> 2 + #include <graphx.h> 3 + #include <keypadc.h> 4 + #include <ti/getcsc.h> 5 + #include "game.h" 6 + #include "drawing.h" 7 + #include "map.h" 8 + 9 + bool toExit = false; 10 + 11 + view_t currentView = VIEW_TITLE; 12 + 13 + uint8_t cursorRow = 0; 14 + uint8_t cursorCol = 0; 15 + 16 + uint8_t *rowTargets; 17 + uint8_t *colTargets; 18 + 19 + uint8_t numLevelPacks; 20 + char *levelPackNames[MAX_PACKS]; 21 + 22 + void *packStart; 23 + char *packTitle; 24 + uint8_t *packNumLevels; 25 + uint16_t *packToc; 26 + 27 + uint8_t levelIndex; 28 + char *levelTitle; 29 + 30 + void doInput() { 31 + uint8_t key = os_GetCSC(); 32 + 33 + switch(currentView) { 34 + case VIEW_CREDITS: 35 + if (key == sk_2nd || key == sk_Clear) { 36 + setView(VIEW_TITLE); 37 + } 38 + break; 39 + 40 + case VIEW_GAME: 41 + if (key == sk_Clear) { 42 + saveLevel(); 43 + setView(VIEW_LEVELS); 44 + break; 45 + } 46 + 47 + if (levelWinAnimFrame > 0) break; 48 + 49 + if (map[cursorRow][cursorCol].contents != ENTITY_MONSTER && map[cursorRow][cursorCol].contents != ENTITY_CHEST) { 50 + if (key == sk_2nd) { 51 + map[cursorRow][cursorCol].contents = map[cursorRow][cursorCol].contents == ENTITY_WALL ? ENTITY_NONE : ENTITY_WALL; 52 + } 53 + else if (key == sk_Alpha) { 54 + map[cursorRow][cursorCol].contents = map[cursorRow][cursorCol].contents == ENTITY_FLAG ? ENTITY_NONE : ENTITY_FLAG; 55 + } 56 + } 57 + 58 + if (key == sk_Left && cursorCol > 0) { 59 + cursorCol--; 60 + } 61 + if (key == sk_Right && cursorCol < MAP_WIDTH - 1) { 62 + cursorCol++; 63 + } 64 + if (key == sk_Up && cursorRow > 0) { 65 + cursorRow--; 66 + } 67 + if (key == sk_Down && cursorRow < MAP_HEIGHT - 1) { 68 + cursorRow++; 69 + } 70 + break; 71 + 72 + case VIEW_LEVELS: 73 + if (key == sk_Up && levelIndex >= LEVELS_PER_ROW) { 74 + levelIndex -= LEVELS_PER_ROW; 75 + } 76 + if (key == sk_Down && levelIndex + LEVELS_PER_ROW < *packNumLevels) { 77 + levelIndex += LEVELS_PER_ROW; 78 + } 79 + if (key == sk_Left && levelIndex > 0) { 80 + levelIndex--; 81 + } 82 + if (key == sk_Right && levelIndex + 1 < *packNumLevels) { 83 + levelIndex++; 84 + } 85 + 86 + if (key == sk_Clear) { 87 + if (numLevelPacks > 1) setView(VIEW_TITLE); 88 + else toExit = true; 89 + return; 90 + } 91 + if (key == sk_2nd) { 92 + loadLevel(levelIndex); 93 + setView(VIEW_GAME); 94 + } 95 + 96 + break; 97 + 98 + case VIEW_TITLE: 99 + switch (key) { 100 + case sk_1: 101 + loadLevelPack(0); 102 + return; 103 + case sk_2: 104 + loadLevelPack(1); 105 + return; 106 + case sk_3: 107 + loadLevelPack(2); 108 + return; 109 + case sk_4: 110 + loadLevelPack(3); 111 + return; 112 + case sk_5: 113 + loadLevelPack(4); 114 + return; 115 + case sk_6: 116 + loadLevelPack(5); 117 + return; 118 + case sk_7: 119 + loadLevelPack(6); 120 + return; 121 + case sk_8: 122 + loadLevelPack(7); 123 + return; 124 + case sk_Clear: 125 + toExit = true; 126 + return; 127 + default: break; 128 + } 129 + break; 130 + 131 + default: 132 + break; 133 + } 134 + } 135 + 136 + void setView(view_t newView) { 137 + currentView = newView; 138 + 139 + switch (newView) { 140 + case VIEW_TITLE: 141 + findLevelPacks(); 142 + if (numLevelPacks == 1) { 143 + loadLevelPack(0); 144 + return; 145 + } 146 + break; 147 + case VIEW_LEVELS: 148 + loadLevel(levelIndex); 149 + break; 150 + case VIEW_GAME: 151 + cursorRow = 0; 152 + cursorCol = 0; 153 + break; 154 + default: 155 + break; 156 + } 157 + 158 + drawView(); 159 + } 160 + 161 + void findLevelPacks() { 162 + numLevelPacks = 0; 163 + char *var_name; 164 + void *vat_ptr = NULL; 165 + 166 + while (true) { 167 + var_name = ti_Detect(&vat_ptr, "\xEC\x08\xF9"); 168 + if (var_name == NULL) break; 169 + 170 + uint8_t packHandle = ti_Open(var_name, "r"); 171 + ti_Seek(3, SEEK_SET, packHandle); 172 + levelPackNames[numLevelPacks] = ti_GetDataPtr(packHandle); 173 + numLevelPacks++; 174 + 175 + ti_Close(packHandle); 176 + } 177 + } 178 + 179 + void listLevelPacks() { 180 + for (uint8_t i = 0; i < numLevelPacks; i++) { 181 + char * packName = levelPackNames[i]; 182 + gfx_SetTextXY(LIST_X, LIST_Y + LIST_DY * i); 183 + gfx_PrintUInt(i + 1, 1); 184 + gfx_PrintString(". "); 185 + gfx_PrintString(packName); 186 + } 187 + } 188 + 189 + void loadLevelPack(uint8_t index) { 190 + if (index >= numLevelPacks) return; 191 + 192 + char *var_name; 193 + void *vat_ptr = NULL; 194 + 195 + for (uint8_t i = 0; i <= index; i++) { 196 + var_name = ti_Detect(&vat_ptr, "\xEC\x08\xF9"); 197 + } 198 + 199 + uint8_t packHandle = ti_Open(var_name, "r"); 200 + packStart = ti_GetDataPtr(packHandle); 201 + ti_Seek(3, SEEK_SET, packHandle); 202 + packTitle = ti_GetDataPtr(packHandle); 203 + 204 + for (packNumLevels = packTitle; *packNumLevels != 0; packNumLevels++); 205 + packNumLevels++; 206 + 207 + packToc = (uint16_t *)(packNumLevels + 1); 208 + 209 + ti_Close(packHandle); 210 + 211 + levelIndex = 0; 212 + setView(VIEW_LEVELS); 213 + } 214 + 215 + void loadLevel(uint8_t index) { 216 + levelTitle = packStart + packToc[index]; 217 + 218 + // load previously saved wall configuration 219 + uint8_t *levelMap = levelTitle; 220 + while (*levelMap != 0x00) levelMap++; 221 + levelMap++; 222 + for (uint8_t row = 0; row < MAP_HEIGHT; row++) { 223 + uint8_t loadByte = levelMap[row]; 224 + for (uint8_t col = 0; col < MAP_WIDTH; col++) { 225 + map[row][col] = (loadByte & 0x01) ? (cell_t){ENTITY_WALL, 0} : (cell_t){ENTITY_NONE, 0}; 226 + loadByte >>= 1; 227 + } 228 + } 229 + 230 + colTargets = levelMap + MAP_HEIGHT; 231 + rowTargets = colTargets + MAP_WIDTH; 232 + 233 + // load monsters and chests 234 + uint8_t *read_ptr; 235 + for (read_ptr = rowTargets + MAP_HEIGHT; *read_ptr != 0xff; read_ptr += 3) { 236 + map[read_ptr[0]][read_ptr[1]] = (cell_t){ENTITY_MONSTER, read_ptr[2]}; 237 + } 238 + for (read_ptr++; *read_ptr != 0xff; read_ptr += 2) { 239 + map[read_ptr[0]][read_ptr[1]] = (cell_t){ENTITY_CHEST, 0}; 240 + } 241 + 242 + levelWinAnimFrame = 0; 243 + } 244 + 245 + void saveLevel() { 246 + uint8_t *levelMap = packStart + packToc[levelIndex]; 247 + while (*levelMap != 0x00) levelMap++; 248 + levelMap++; 249 + for (uint8_t row = 0; row < MAP_HEIGHT; row++) { 250 + levelMap[row] = 0x00; 251 + for (uint8_t col = 0; col < MAP_WIDTH; col++) { 252 + levelMap[row] >>= 1; 253 + if (map[row][col].contents == ENTITY_WALL) levelMap[row] |= 0x80; 254 + } 255 + } 256 256 }
+42 -42
src/game.h
··· 1 - #ifndef GAME_H 2 - #define GAME_H 3 - 4 - #include <graphx.h> 5 - 6 - #define MAX_PACKS 8 7 - 8 - extern bool toExit; 9 - 10 - typedef enum { 11 - VIEW_TITLE, 12 - VIEW_CREDITS, 13 - VIEW_LEVELS, 14 - VIEW_GAME 15 - } view_t; 16 - 17 - extern view_t currentView; 18 - 19 - extern uint8_t cursorRow; 20 - extern uint8_t cursorCol; 21 - 22 - extern uint8_t *rowTargets; 23 - extern uint8_t *colTargets; 24 - 25 - extern uint8_t numLevelPacks; 26 - extern char *levelPackNames[MAX_PACKS]; 27 - 28 - extern char *packTitle; 29 - extern uint8_t *packNumLevels; 30 - extern uint8_t levelIndex; 31 - extern char *levelTitle; 32 - 33 - void doInput(); 34 - 35 - void setView(view_t newView); 36 - 37 - void findLevelPacks(); 38 - void listLevelPacks(); 39 - void loadLevelPack(uint8_t index); 40 - void loadLevel(uint8_t index); 41 - void saveLevel(); 42 - 1 + #ifndef GAME_H 2 + #define GAME_H 3 + 4 + #include <graphx.h> 5 + 6 + #define MAX_PACKS 8 7 + 8 + extern bool toExit; 9 + 10 + typedef enum { 11 + VIEW_TITLE, 12 + VIEW_CREDITS, 13 + VIEW_LEVELS, 14 + VIEW_GAME 15 + } view_t; 16 + 17 + extern view_t currentView; 18 + 19 + extern uint8_t cursorRow; 20 + extern uint8_t cursorCol; 21 + 22 + extern uint8_t *rowTargets; 23 + extern uint8_t *colTargets; 24 + 25 + extern uint8_t numLevelPacks; 26 + extern char *levelPackNames[MAX_PACKS]; 27 + 28 + extern char *packTitle; 29 + extern uint8_t *packNumLevels; 30 + extern uint8_t levelIndex; 31 + extern char *levelTitle; 32 + 33 + void doInput(); 34 + 35 + void setView(view_t newView); 36 + 37 + void findLevelPacks(); 38 + void listLevelPacks(); 39 + void loadLevelPack(uint8_t index); 40 + void loadLevel(uint8_t index); 41 + void saveLevel(); 42 + 43 43 #endif
+32 -32
src/gfx/convimg.yaml
··· 1 - palettes: 2 - - name: default_palette 3 - fixed-entries: 4 - - color: {index: 0, hex: "#ff00ff"} # magenta 5 - - color: {index: 1, hex: "#000000"} # black 6 - - color: {index: 2, hex: "#ffffff"} # white 7 - - color: {index: 3, hex: "#dd3745"} # red 8 - - color: {index: 4, hex: "#e3c054"} # yellow 9 - - color: {index: 5, hex: "#6a6565", exact: true} # light grey 10 - - color: {index: 6, hex: "#484444", exact: true} # dark grey 11 - - color: {index: 7, hex: "#6f452a", exact: true} # dark brown 12 - - color: {index: 8, hex: "#d4ae81", exact: true} # light brown 13 - images: automatic 14 - 15 - converts: 16 - - name: rlet 17 - style: rlet 18 - palette: default_palette 19 - images: 20 - - img/* 21 - tilesets: 22 - tile-width: 16 23 - tile-height: 16 24 - images: 25 - - tile/* 26 - 27 - outputs: 28 - - type: c 29 - include-file: gfx.h 30 - palettes: 31 - - default_palette 32 - converts: 1 + palettes: 2 + - name: default_palette 3 + fixed-entries: 4 + - color: {index: 0, hex: "#ff00ff"} # magenta 5 + - color: {index: 1, hex: "#000000"} # black 6 + - color: {index: 2, hex: "#ffffff"} # white 7 + - color: {index: 3, hex: "#dd3745"} # red 8 + - color: {index: 4, hex: "#e3c054"} # yellow 9 + - color: {index: 5, hex: "#6a6565", exact: true} # light grey 10 + - color: {index: 6, hex: "#484444", exact: true} # dark grey 11 + - color: {index: 7, hex: "#6f452a", exact: true} # dark brown 12 + - color: {index: 8, hex: "#d4ae81", exact: true} # light brown 13 + images: automatic 14 + 15 + converts: 16 + - name: rlet 17 + style: rlet 18 + palette: default_palette 19 + images: 20 + - img/* 21 + tilesets: 22 + tile-width: 16 23 + tile-height: 16 24 + images: 25 + - tile/* 26 + 27 + outputs: 28 + - type: c 29 + include-file: gfx.h 30 + palettes: 31 + - default_palette 32 + converts: 33 33 - rlet
src/gfx/tile/tileset.png

This is a binary file and will not be displayed.

+72 -58
src/gfx/tileset.c
··· 26 26 }; 27 27 unsigned char tileset_tile_4_data[167] = 28 28 { 29 - 0x10,0x10,0x10,0x06,0x04,0x12,0x12,0x0f,0x0f,0x06,0x02,0x02,0x12,0x12,0x01,0x06,0x12,0x12,0x12,0x12,0x0f,0x0f,0x01,0x02,0x0f,0x0f,0x02,0x03,0x0a,0x17,0x12,0x01, 30 - 0x01,0x12,0x01,0x01,0x0f,0x0f,0x16,0x03,0x04,0x08,0x17,0x12,0x01,0x12,0x12,0x01,0x0f,0x16,0x04,0x05,0x06,0x12,0x12,0x12,0x12,0x12,0x0f,0x05,0x03,0x01,0x13,0x02, 31 - 0x04,0x12,0x12,0x12,0x0f,0x06,0x02,0x03,0x13,0x13,0x13,0x02,0x02,0x12,0x0f,0x07,0x03,0x01,0x01,0x01,0x06,0x0b,0x13,0x01,0x0f,0x13,0x0b,0x05,0x03,0x01,0x01,0x01, 32 - 0x06,0x0b,0x13,0x13,0x13,0x13,0x0b,0x05,0x03,0x09,0x01,0x0b,0x0b,0x01,0x13,0x01,0x13,0x0b,0x0b,0x04,0x02,0x03,0x12,0x01,0x0b,0x01,0x04,0x13,0x01,0x13,0x13,0x01, 33 - 0x01,0x0b,0x04,0x03,0x01,0x01,0x02,0x04,0x01,0x01,0x01,0x01,0x01,0x01,0x0f,0x04,0x03,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x06,0x03,0x01,0x01,0x01,0x02,0x01, 34 - 0x01,0x02,0x02,0x01,0x01,0x05,0x10 29 + 0x10,0x10,0x10,0x06,0x04,0x12,0x12,0x0f,0x0f,0x06,0x02,0x02,0x12,0x12,0x01,0x06,0x12,0x12,0x12,0x12,0x0f,0x0f,0x01,0x02,0x0f,0x0f,0x02,0x03,0x0a,0x17,0x12,0x09, 30 + 0x09,0x12,0x09,0x09,0x0f,0x0f,0x16,0x03,0x04,0x08,0x17,0x12,0x09,0x12,0x12,0x09,0x0f,0x16,0x04,0x05,0x06,0x12,0x12,0x12,0x12,0x12,0x0f,0x05,0x03,0x01,0x13,0x02, 31 + 0x04,0x12,0x12,0x12,0x0f,0x06,0x02,0x03,0x13,0x13,0x13,0x02,0x02,0x12,0x0f,0x07,0x03,0x01,0x09,0x01,0x06,0x0b,0x13,0x09,0x0f,0x13,0x0b,0x05,0x03,0x01,0x09,0x01, 32 + 0x06,0x0b,0x13,0x13,0x13,0x13,0x0b,0x05,0x03,0x09,0x09,0x0b,0x0b,0x09,0x13,0x09,0x13,0x0b,0x0b,0x04,0x02,0x03,0x12,0x09,0x0b,0x01,0x04,0x13,0x09,0x13,0x13,0x01, 33 + 0x01,0x0b,0x04,0x03,0x01,0x09,0x02,0x04,0x09,0x09,0x09,0x09,0x01,0x01,0x0f,0x04,0x03,0x01,0x09,0x02,0x01,0x09,0x02,0x01,0x09,0x06,0x03,0x01,0x09,0x01,0x02,0x09, 34 + 0x09,0x02,0x02,0x09,0x09,0x05,0x10 35 35 }; 36 36 unsigned char tileset_tile_5_data[166] = 37 37 { 38 - 0x10,0x10,0x10,0x06,0x04,0x12,0x12,0x0f,0x0f,0x06,0x02,0x02,0x12,0x12,0x01,0x06,0x12,0x12,0x12,0x12,0x0f,0x0f,0x01,0x02,0x0f,0x0f,0x02,0x03,0x0a,0x17,0x12,0x01, 39 - 0x01,0x12,0x01,0x01,0x0f,0x0f,0x16,0x03,0x04,0x08,0x17,0x12,0x12,0x12,0x12,0x12,0x0f,0x16,0x04,0x05,0x06,0x12,0x12,0x12,0x12,0x12,0x0f,0x05,0x03,0x01,0x13,0x02, 40 - 0x04,0x12,0x12,0x12,0x0f,0x02,0x01,0x0f,0x03,0x02,0x03,0x13,0x13,0x13,0x02,0x02,0x12,0x0f,0x03,0x01,0x0b,0x03,0x03,0x01,0x01,0x01,0x08,0x0b,0x13,0x01,0x0f,0x13, 41 - 0x0b,0x0b,0x0b,0x03,0x03,0x01,0x01,0x01,0x05,0x0b,0x13,0x13,0x13,0x13,0x06,0x03,0x07,0x01,0x0b,0x0b,0x01,0x13,0x01,0x13,0x06,0x02,0x03,0x12,0x01,0x0b,0x01,0x04, 42 - 0x13,0x01,0x13,0x13,0x06,0x03,0x01,0x01,0x02,0x04,0x01,0x01,0x01,0x01,0x06,0x03,0x01,0x01,0x02,0x01,0x01,0x02,0x01,0x01,0x06,0x03,0x01,0x01,0x01,0x02,0x01,0x01, 43 - 0x02,0x02,0x01,0x01,0x05,0x10 38 + 0x10,0x10,0x10,0x06,0x04,0x12,0x12,0x0f,0x0f,0x06,0x02,0x02,0x12,0x12,0x01,0x06,0x12,0x12,0x12,0x12,0x0f,0x0f,0x01,0x02,0x0f,0x0f,0x02,0x03,0x0a,0x17,0x12,0x09, 39 + 0x09,0x12,0x09,0x09,0x0f,0x0f,0x16,0x03,0x04,0x08,0x17,0x12,0x12,0x12,0x12,0x12,0x0f,0x16,0x04,0x05,0x06,0x12,0x12,0x12,0x12,0x12,0x0f,0x05,0x03,0x01,0x13,0x02, 40 + 0x04,0x12,0x12,0x12,0x0f,0x02,0x01,0x0f,0x03,0x02,0x03,0x13,0x13,0x13,0x02,0x02,0x12,0x0f,0x03,0x01,0x0b,0x03,0x03,0x01,0x09,0x01,0x08,0x0b,0x13,0x09,0x0f,0x13, 41 + 0x0b,0x0b,0x0b,0x03,0x03,0x01,0x09,0x01,0x05,0x0b,0x13,0x13,0x13,0x13,0x06,0x03,0x07,0x09,0x0b,0x0b,0x09,0x13,0x09,0x13,0x06,0x02,0x03,0x12,0x09,0x0b,0x01,0x04, 42 + 0x13,0x09,0x13,0x13,0x06,0x03,0x01,0x09,0x02,0x04,0x09,0x09,0x09,0x09,0x06,0x03,0x01,0x09,0x02,0x01,0x09,0x02,0x01,0x09,0x06,0x03,0x01,0x09,0x01,0x02,0x09,0x09, 43 + 0x02,0x02,0x09,0x09,0x05,0x10 44 44 }; 45 45 unsigned char tileset_tile_6_data[162] = 46 46 { 47 - 0x10,0x10,0x10,0x06,0x04,0x12,0x12,0x0f,0x0f,0x06,0x02,0x02,0x12,0x12,0x01,0x06,0x12,0x12,0x12,0x12,0x0f,0x0f,0x01,0x02,0x0f,0x0f,0x02,0x03,0x0a,0x13,0x12,0x01, 48 - 0x01,0x12,0x01,0x01,0x0f,0x0f,0x16,0x03,0x02,0x0a,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x0f,0x16,0x04,0x02,0x02,0x12,0x01,0x01,0x06,0x12,0x12,0x12,0x12,0x12, 49 - 0x0f,0x02,0x01,0x0f,0x02,0x03,0x01,0x01,0x02,0x04,0x12,0x12,0x12,0x0f,0x02,0x01,0x0b,0x03,0x03,0x02,0x01,0x0b,0x02,0x02,0x12,0x0f,0x02,0x02,0x0b,0x0b,0x03,0x03, 50 - 0x09,0x01,0x0b,0x0b,0x13,0x01,0x0f,0x13,0x0b,0x0b,0x04,0x03,0x01,0x01,0x02,0x04,0x13,0x13,0x13,0x13,0x06,0x03,0x01,0x01,0x02,0x04,0x01,0x13,0x01,0x13,0x06,0x03, 51 - 0x01,0x01,0x02,0x04,0x13,0x01,0x13,0x13,0x01,0x01,0x01,0x04,0x03,0x01,0x01,0x02,0x06,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x06,0x01,0x01,0x09,0x05,0x02,0x01,0x01, 47 + 0x10,0x10,0x10,0x06,0x04,0x12,0x12,0x0f,0x0f,0x06,0x02,0x02,0x12,0x12,0x01,0x06,0x12,0x12,0x12,0x12,0x0f,0x0f,0x01,0x02,0x0f,0x0f,0x02,0x03,0x0a,0x13,0x12,0x09, 48 + 0x09,0x12,0x09,0x09,0x0f,0x0f,0x16,0x03,0x02,0x0a,0x13,0x13,0x13,0x12,0x12,0x12,0x12,0x12,0x0f,0x16,0x04,0x02,0x02,0x12,0x09,0x01,0x06,0x12,0x12,0x12,0x12,0x12, 49 + 0x0f,0x02,0x01,0x0f,0x02,0x03,0x01,0x09,0x02,0x04,0x12,0x12,0x12,0x0f,0x02,0x01,0x0b,0x03,0x03,0x02,0x09,0x0b,0x02,0x02,0x12,0x0f,0x02,0x02,0x0b,0x0b,0x03,0x03, 50 + 0x09,0x09,0x0b,0x0b,0x13,0x09,0x0f,0x13,0x0b,0x0b,0x04,0x03,0x01,0x09,0x02,0x04,0x13,0x13,0x13,0x13,0x06,0x03,0x01,0x09,0x02,0x04,0x09,0x13,0x09,0x13,0x06,0x03, 51 + 0x01,0x09,0x02,0x04,0x13,0x09,0x13,0x13,0x01,0x01,0x09,0x04,0x03,0x01,0x09,0x02,0x06,0x09,0x09,0x09,0x09,0x09,0x09,0x04,0x06,0x01,0x09,0x09,0x05,0x02,0x09,0x09, 52 52 0x09,0x10 53 53 }; 54 54 unsigned char tileset_tile_7_data[164] = 55 55 { 56 - 0x10,0x10,0x10,0x06,0x04,0x12,0x12,0x0f,0x0f,0x06,0x02,0x02,0x12,0x12,0x01,0x06,0x12,0x12,0x12,0x12,0x0f,0x0f,0x01,0x02,0x0f,0x0f,0x02,0x03,0x0a,0x17,0x12,0x01, 57 - 0x01,0x12,0x01,0x01,0x0f,0x0f,0x16,0x03,0x02,0x01,0x13,0x01,0x08,0x17,0x12,0x12,0x12,0x12,0x12,0x0f,0x16,0x04,0x01,0x03,0x13,0x13,0x13,0x01,0x06,0x12,0x12,0x12, 58 - 0x12,0x12,0x0f,0x05,0x02,0x01,0x01,0x03,0x04,0x12,0x12,0x12,0x0f,0x06,0x02,0x01,0x01,0x04,0x02,0x12,0x0f,0x07,0x01,0x0e,0x12,0x01,0x0b,0x0b,0x0b,0x13,0x01,0x0f, 59 - 0x13,0x0b,0x0b,0x0b,0x0b,0x0f,0x01,0x02,0x01,0x01,0x03,0x04,0x13,0x13,0x13,0x13,0x06,0x02,0x01,0x01,0x03,0x04,0x01,0x13,0x01,0x13,0x06,0x02,0x01,0x01,0x03,0x04, 60 - 0x13,0x01,0x13,0x13,0x06,0x02,0x01,0x01,0x03,0x04,0x01,0x01,0x01,0x01,0x06,0x02,0x01,0x01,0x03,0x01,0x01,0x02,0x02,0x01,0x01,0x05,0x05,0x02,0x01,0x01,0x03,0x02, 61 - 0x01,0x01,0x04,0x10 56 + 0x10,0x10,0x10,0x06,0x04,0x12,0x12,0x0f,0x0f,0x06,0x02,0x02,0x12,0x12,0x01,0x06,0x12,0x12,0x12,0x12,0x0f,0x0f,0x01,0x02,0x0f,0x0f,0x02,0x03,0x0a,0x17,0x12,0x09, 57 + 0x09,0x12,0x09,0x09,0x0f,0x0f,0x16,0x03,0x02,0x01,0x13,0x01,0x08,0x17,0x12,0x12,0x12,0x12,0x12,0x0f,0x16,0x04,0x01,0x03,0x13,0x13,0x13,0x01,0x06,0x12,0x12,0x12, 58 + 0x12,0x12,0x0f,0x05,0x02,0x01,0x09,0x03,0x04,0x12,0x12,0x12,0x0f,0x06,0x02,0x01,0x09,0x04,0x02,0x12,0x0f,0x07,0x01,0x0e,0x12,0x09,0x0b,0x0b,0x0b,0x13,0x09,0x0f, 59 + 0x13,0x0b,0x0b,0x0b,0x0b,0x0f,0x01,0x02,0x01,0x09,0x03,0x04,0x13,0x13,0x13,0x13,0x06,0x02,0x01,0x09,0x03,0x04,0x09,0x13,0x09,0x13,0x06,0x02,0x01,0x09,0x03,0x04, 60 + 0x13,0x09,0x13,0x13,0x06,0x02,0x01,0x09,0x03,0x04,0x09,0x09,0x09,0x09,0x06,0x02,0x01,0x09,0x03,0x01,0x09,0x02,0x02,0x09,0x09,0x05,0x05,0x02,0x09,0x09,0x03,0x02, 61 + 0x09,0x09,0x04,0x10 62 62 }; 63 63 unsigned char tileset_tile_8_data[151] = 64 64 { 65 - 0x10,0x10,0x10,0x10,0x03,0x01,0x01,0x09,0x01,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x05, 66 - 0x07,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x03,0x0b,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x07,0x01,0x01,0x01,0x01, 67 - 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x03,0x0b,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x07,0x01,0x18,0x01,0x01,0x01,0x18, 68 - 0x01,0x02,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x01,0x01,0x01,0x01,0x01,0x03, 69 - 0x01,0x01,0x01,0x01,0x01,0x03,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x10,0x10,0x10,0x10 65 + 0x10,0x10,0x10,0x10,0x03,0x01,0x09,0x09,0x01,0x09,0x02,0x02,0x01,0x09,0x01,0x01,0x09,0x01,0x05,0x09,0x09,0x09,0x09,0x09,0x01,0x01,0x09,0x01,0x01,0x09,0x01,0x05, 66 + 0x07,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x04,0x03,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x02,0x02,0x01,0x09,0x02,0x07,0x09,0x09,0x09,0x09, 67 + 0x09,0x09,0x09,0x02,0x01,0x09,0x01,0x03,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x02,0x02,0x01,0x09,0x02,0x07,0x09,0x18,0x09,0x09,0x09,0x18, 68 + 0x09,0x02,0x01,0x09,0x01,0x02,0x01,0x09,0x01,0x01,0x09,0x01,0x05,0x09,0x09,0x09,0x09,0x09,0x01,0x01,0x09,0x01,0x01,0x09,0x01,0x04,0x01,0x09,0x01,0x01,0x09,0x03, 69 + 0x01,0x09,0x01,0x01,0x09,0x03,0x05,0x01,0x09,0x01,0x01,0x09,0x01,0x01,0x09,0x01,0x01,0x09,0x04,0x10,0x10,0x10,0x10 70 70 }; 71 71 unsigned char tileset_tile_9_data[151] = 72 72 { 73 - 0x10,0x10,0x10,0x10,0x03,0x01,0x01,0x09,0x01,0x01,0x02,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x05, 74 - 0x07,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x03,0x0b,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x07,0x01,0x01,0x01,0x01, 75 - 0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x03,0x0b,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x02,0x01,0x01,0x02,0x07,0x01,0x18,0x18,0x01,0x18,0x18, 76 - 0x01,0x02,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x01,0x01,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x01,0x01,0x01,0x01,0x01,0x03, 77 - 0x01,0x01,0x01,0x01,0x01,0x03,0x03,0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x02,0x10,0x10,0x10,0x10 73 + 0x10,0x10,0x10,0x10,0x03,0x01,0x09,0x09,0x01,0x09,0x02,0x02,0x01,0x09,0x01,0x01,0x09,0x01,0x05,0x09,0x09,0x09,0x09,0x09,0x01,0x01,0x09,0x01,0x01,0x09,0x01,0x05, 74 + 0x07,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x04,0x03,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x02,0x02,0x01,0x09,0x02,0x07,0x09,0x09,0x09,0x09, 75 + 0x09,0x09,0x09,0x02,0x01,0x09,0x01,0x03,0x0b,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x02,0x02,0x01,0x09,0x02,0x07,0x09,0x18,0x18,0x09,0x18,0x18, 76 + 0x09,0x02,0x01,0x09,0x01,0x02,0x01,0x09,0x01,0x01,0x09,0x01,0x05,0x09,0x09,0x09,0x09,0x09,0x01,0x01,0x09,0x01,0x01,0x09,0x01,0x04,0x01,0x09,0x01,0x01,0x09,0x03, 77 + 0x01,0x09,0x01,0x01,0x09,0x03,0x03,0x01,0x09,0x03,0x01,0x09,0x01,0x01,0x09,0x03,0x01,0x09,0x02,0x10,0x10,0x10,0x10 78 78 }; 79 79 unsigned char tileset_tile_10_data[150] = 80 80 { 81 - 0x10,0x10,0x10,0x02,0x01,0x01,0x0d,0x03,0x01,0x01,0x09,0x01,0x01,0x02,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01, 82 - 0x01,0x01,0x02,0x02,0x01,0x01,0x01,0x07,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x04,0x0a,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x03,0x01, 83 - 0x01,0x01,0x01,0x07,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x01,0x04,0x0a,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x05,0x07,0x01,0x18, 84 - 0x18,0x01,0x18,0x18,0x01,0x02,0x01,0x01,0x01,0x03,0x02,0x01,0x01,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x03,0x01, 85 - 0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x03,0x07,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x10,0x10,0x10,0x10 81 + 0x10,0x10,0x10,0x02,0x01,0x09,0x0d,0x03,0x01,0x09,0x09,0x01,0x09,0x02,0x01,0x01,0x09,0x02,0x01,0x09,0x01,0x05,0x09,0x09,0x09,0x09,0x09,0x01,0x01,0x09,0x01,0x01, 82 + 0x09,0x01,0x02,0x02,0x09,0x09,0x01,0x07,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x04,0x04,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x02,0x01,0x03,0x09, 83 + 0x09,0x09,0x01,0x07,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x02,0x01,0x09,0x01,0x04,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x02,0x05,0x07,0x09,0x18, 84 + 0x18,0x09,0x18,0x18,0x09,0x02,0x01,0x09,0x01,0x03,0x02,0x09,0x09,0x01,0x05,0x09,0x09,0x09,0x09,0x09,0x01,0x01,0x09,0x01,0x01,0x09,0x01,0x02,0x01,0x09,0x03,0x01, 85 + 0x09,0x03,0x01,0x09,0x01,0x01,0x09,0x03,0x07,0x01,0x09,0x01,0x01,0x09,0x01,0x01,0x09,0x04,0x10,0x10,0x10,0x10 86 86 }; 87 87 unsigned char tileset_tile_11_data[150] = 88 88 { 89 - 0x10,0x10,0x10,0x0d,0x01,0x01,0x02,0x02,0x01,0x01,0x09,0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01, 90 - 0x01,0x01,0x04,0x07,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x02,0x02,0x0a,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x01,0x01,0x01, 91 - 0x02,0x07,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x01,0x01,0x01,0x01,0x02,0x0a,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x04,0x01,0x01,0x01,0x02, 92 - 0x07,0x01,0x18,0x18,0x01,0x18,0x18,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x02,0x01,0x01,0x03,0x03,0x01,0x01,0x01,0x01, 93 - 0x01,0x03,0x01,0x01,0x03,0x01,0x01,0x02,0x04,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x07,0x10,0x10,0x10,0x10 89 + 0x10,0x10,0x10,0x0d,0x01,0x09,0x02,0x02,0x01,0x09,0x09,0x01,0x09,0x03,0x01,0x01,0x09,0x01,0x01,0x09,0x01,0x05,0x09,0x09,0x09,0x09,0x09,0x01,0x01,0x09,0x02,0x01, 90 + 0x09,0x01,0x04,0x07,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x01,0x02,0x09,0x09,0x02,0x02,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x04,0x01,0x01,0x09, 91 + 0x02,0x07,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x01,0x03,0x09,0x09,0x09,0x01,0x02,0x0a,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x04,0x01,0x01,0x09,0x02, 92 + 0x07,0x09,0x18,0x18,0x09,0x18,0x18,0x09,0x05,0x01,0x01,0x09,0x01,0x01,0x09,0x01,0x05,0x09,0x09,0x09,0x09,0x09,0x01,0x02,0x09,0x09,0x03,0x03,0x01,0x09,0x01,0x01, 93 + 0x09,0x03,0x01,0x09,0x03,0x01,0x09,0x02,0x04,0x01,0x09,0x01,0x01,0x09,0x01,0x01,0x09,0x07,0x10,0x10,0x10,0x10 94 94 }; 95 95 unsigned char tileset_tile_12_data[150] = 96 96 { ··· 127 127 unsigned char tileset_tile_16_data[118] = 128 128 { 129 129 0x10,0x10,0x10,0x10,0x10,0x10,0x05,0x06,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x05,0x03,0x0a,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x03,0x03,0x0a,0x12,0x0f, 130 - 0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x03,0x02,0x0c,0x12,0x12,0x12,0x01,0x12,0x12,0x12,0x01,0x12,0x0f,0x0f,0x0f,0x02,0x02,0x0c,0x12,0x12,0x12,0x01,0x12,0x12, 131 - 0x12,0x01,0x12,0x12,0x0f,0x0f,0x02,0x02,0x0c,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x12,0x12,0x0f,0x0f,0x02,0x02,0x0c,0x12,0x12,0x0f,0x12,0x12,0x12,0x12,0x12, 130 + 0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x03,0x02,0x0c,0x12,0x12,0x12,0x09,0x12,0x12,0x12,0x09,0x12,0x0f,0x0f,0x0f,0x02,0x02,0x0c,0x12,0x12,0x12,0x09,0x12,0x12, 131 + 0x12,0x09,0x12,0x12,0x0f,0x0f,0x02,0x02,0x0c,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x12,0x12,0x0f,0x0f,0x02,0x02,0x0c,0x12,0x12,0x0f,0x12,0x12,0x12,0x12,0x12, 132 132 0x12,0x0f,0x0f,0x0f,0x02,0x03,0x0a,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x0f,0x03,0x10,0x10,0x10,0x10 133 133 }; 134 134 unsigned char tileset_tile_17_data[128] = 135 135 { 136 136 0x10,0x10,0x10,0x10,0x10,0x05,0x06,0x12,0x12,0x0f,0x0f,0x0f,0x0f,0x05,0x04,0x08,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x04,0x03,0x0a,0x12,0x12,0x12,0x12,0x12, 137 - 0x12,0x12,0x0f,0x0f,0x0f,0x03,0x03,0x0a,0x12,0x0f,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x03,0x02,0x0c,0x12,0x12,0x01,0x01,0x12,0x12,0x01,0x01,0x12,0x0f,0x0f, 137 + 0x12,0x12,0x0f,0x0f,0x0f,0x03,0x03,0x0a,0x12,0x0f,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x03,0x02,0x0c,0x12,0x12,0x09,0x09,0x12,0x12,0x09,0x09,0x12,0x0f,0x0f, 138 138 0x0f,0x02,0x02,0x0c,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x02,0x02,0x0c,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x12,0x12,0x0f,0x0f,0x02, 139 139 0x02,0x0c,0x12,0x12,0x0f,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x02,0x03,0x0a,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x0f,0x03,0x10,0x10,0x10,0x10 140 140 }; 141 141 unsigned char tileset_tile_18_data[139] = 142 142 { 143 143 0x10,0x10,0x10,0x10,0x10,0x04,0x07,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x05,0x03,0x09,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x04,0x02,0x0b,0x12,0x12,0x12, 144 - 0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x03,0x01,0x0d,0x12,0x12,0x12,0x12,0x0f,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x02,0x01,0x0d,0x12,0x12,0x01,0x01,0x12, 145 - 0x12,0x01,0x01,0x12,0x12,0x12,0x0f,0x0f,0x02,0x01,0x0d,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x02,0x01,0x0d,0x12,0x12,0x12,0x12,0x12, 144 + 0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x03,0x01,0x0d,0x12,0x12,0x12,0x12,0x0f,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x02,0x01,0x0d,0x12,0x12,0x09,0x09,0x12, 145 + 0x12,0x09,0x09,0x12,0x12,0x12,0x0f,0x0f,0x02,0x01,0x0d,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x02,0x01,0x0d,0x12,0x12,0x12,0x12,0x12, 146 146 0x12,0x12,0x12,0x12,0x0f,0x12,0x12,0x0f,0x02,0x01,0x0d,0x12,0x12,0x12,0x12,0x0f,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x02,0x02,0x0b,0x12,0x12,0x12,0x12,0x12, 147 147 0x12,0x12,0x12,0x0f,0x0f,0x0f,0x03,0x10,0x10,0x10,0x10 148 148 }; 149 149 unsigned char tileset_tile_19_data[129] = 150 150 { 151 151 0x10,0x10,0x10,0x10,0x10,0x06,0x06,0x12,0x0f,0x0f,0x0f,0x0f,0x0f,0x04,0x05,0x08,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x0f,0x03,0x04,0x0a,0x12,0x12,0x12,0x12,0x12, 152 - 0x12,0x0f,0x0f,0x0f,0x0f,0x02,0x03,0x0c,0x12,0x0f,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x0f,0x01,0x03,0x0c,0x12,0x12,0x12,0x12,0x01,0x01,0x12,0x12,0x01, 153 - 0x01,0x0f,0x0f,0x01,0x03,0x0c,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x01,0x03,0x0c,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x12,0x12,0x0f,0x0f, 152 + 0x12,0x0f,0x0f,0x0f,0x0f,0x02,0x03,0x0c,0x12,0x0f,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x0f,0x01,0x03,0x0c,0x12,0x12,0x12,0x12,0x09,0x09,0x12,0x12,0x09, 153 + 0x09,0x0f,0x0f,0x01,0x03,0x0c,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x01,0x03,0x0c,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x12,0x12,0x0f,0x0f, 154 154 0x0f,0x01,0x03,0x0c,0x12,0x0f,0x12,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x0f,0x01,0x04,0x09,0x12,0x12,0x12,0x12,0x12,0x0f,0x0f,0x0f,0x0f,0x03,0x10,0x10,0x10, 155 155 0x10 156 156 }; ··· 192 192 0x0e,0x0b,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x0e,0x01,0x02,0x0c,0x0b,0x0b,0x0b,0x0e,0x0b,0x0e,0x0e,0x0b,0x0b,0x0e,0x0b,0x0b,0x02,0x05,0x06,0x0e,0x0e, 193 193 0x0e,0x0e,0x0e,0x0b,0x05,0x05,0x06,0x0e,0x0e,0x0b,0x0b,0x0b,0x0b,0x05,0x04,0x03,0x0e,0x0e,0x0b,0x02,0x03,0x0b,0x0b,0x0b,0x04,0x10 194 194 }; 195 - unsigned char tileset_tile_24_data[18] = 195 + unsigned char tileset_tile_24_data[136] = 196 196 { 197 - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 197 + 0x10,0x10,0x10,0x10,0x05,0x06,0x15,0x15,0x15,0x15,0x15,0x13,0x05,0x05,0x06,0x15,0x09,0x15,0x15,0x09,0x13,0x05,0x05,0x06,0x15,0x03,0x15,0x15,0x03,0x13,0x05,0x05, 198 + 0x06,0x15,0x15,0x15,0x15,0x13,0x13,0x05,0x06,0x04,0x09,0x09,0x09,0x09,0x06,0x03,0x0a,0x15,0x09,0x15,0x15,0x15,0x15,0x15,0x13,0x09,0x15,0x03,0x03,0x01,0x15,0x01, 199 + 0x06,0x15,0x15,0x15,0x15,0x15,0x13,0x01,0x01,0x13,0x03,0x03,0x01,0x15,0x01,0x06,0x15,0x15,0x15,0x15,0x15,0x13,0x01,0x01,0x13,0x03,0x03,0x01,0x13,0x01,0x06,0x15, 200 + 0x15,0x15,0x15,0x13,0x13,0x01,0x01,0x13,0x03,0x05,0x06,0x15,0x15,0x15,0x15,0x13,0x13,0x05,0x06,0x04,0x15,0x15,0x13,0x13,0x06,0x06,0x01,0x09,0x02,0x01,0x09,0x06, 201 + 0x06,0x01,0x09,0x02,0x01,0x09,0x06,0x10 198 202 }; 199 - unsigned char tileset_tile_25_data[18] = 203 + unsigned char tileset_tile_25_data[124] = 200 204 { 201 - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 205 + 0x10,0x10,0x10,0x10,0x10,0x05,0x06,0x15,0x15,0x15,0x15,0x15,0x13,0x05,0x05,0x06,0x15,0x09,0x15,0x15,0x09,0x13,0x05,0x05,0x06,0x15,0x09,0x15,0x15,0x09,0x13,0x05, 206 + 0x05,0x06,0x15,0x15,0x15,0x15,0x13,0x13,0x05,0x06,0x04,0x09,0x09,0x09,0x09,0x06,0x03,0x0a,0x15,0x09,0x15,0x15,0x15,0x15,0x15,0x13,0x09,0x15,0x03,0x02,0x01,0x15, 207 + 0x02,0x06,0x15,0x15,0x15,0x15,0x15,0x13,0x02,0x01,0x15,0x02,0x01,0x01,0x13,0x03,0x06,0x15,0x15,0x15,0x15,0x15,0x13,0x03,0x01,0x13,0x01,0x05,0x06,0x15,0x15,0x15, 208 + 0x15,0x13,0x13,0x05,0x05,0x06,0x15,0x15,0x15,0x15,0x13,0x13,0x05,0x06,0x04,0x15,0x15,0x13,0x13,0x06,0x06,0x01,0x09,0x02,0x01,0x09,0x06,0x10 202 209 }; 203 - unsigned char tileset_tile_26_data[18] = 210 + unsigned char tileset_tile_26_data[142] = 204 211 { 205 - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 212 + 0x10,0x10,0x10,0x10,0x05,0x06,0x15,0x15,0x15,0x15,0x15,0x13,0x05,0x02,0x01,0x15,0x02,0x06,0x15,0x03,0x15,0x15,0x03,0x13,0x02,0x01,0x15,0x02,0x02,0x01,0x15,0x02, 213 + 0x06,0x15,0x03,0x15,0x15,0x03,0x13,0x02,0x01,0x15,0x02,0x02,0x01,0x15,0x02,0x06,0x15,0x15,0x15,0x15,0x13,0x13,0x02,0x01,0x15,0x02,0x03,0x01,0x15,0x02,0x04,0x09, 214 + 0x09,0x09,0x09,0x02,0x01,0x15,0x03,0x03,0x0a,0x13,0x09,0x15,0x15,0x15,0x15,0x15,0x13,0x09,0x13,0x03,0x05,0x06,0x15,0x15,0x15,0x15,0x15,0x13,0x05,0x05,0x06,0x15, 215 + 0x15,0x15,0x15,0x15,0x13,0x05,0x05,0x06,0x15,0x15,0x15,0x15,0x13,0x13,0x05,0x05,0x06,0x15,0x15,0x15,0x15,0x13,0x13,0x05,0x06,0x04,0x15,0x15,0x13,0x13,0x06,0x06, 216 + 0x01,0x09,0x02,0x01,0x09,0x06,0x06,0x01,0x09,0x02,0x01,0x09,0x06,0x10 206 217 }; 207 - unsigned char tileset_tile_27_data[18] = 218 + unsigned char tileset_tile_27_data[124] = 208 219 { 209 - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 220 + 0x10,0x10,0x10,0x10,0x10,0x05,0x06,0x15,0x15,0x15,0x15,0x15,0x13,0x05,0x05,0x06,0x15,0x03,0x15,0x15,0x03,0x13,0x05,0x05,0x06,0x15,0x03,0x15,0x15,0x03,0x13,0x05, 221 + 0x01,0x01,0x15,0x03,0x06,0x15,0x15,0x15,0x15,0x13,0x13,0x03,0x01,0x15,0x01,0x02,0x01,0x15,0x03,0x04,0x09,0x09,0x09,0x09,0x03,0x01,0x15,0x02,0x03,0x0a,0x13,0x09, 222 + 0x15,0x15,0x15,0x15,0x15,0x13,0x09,0x13,0x03,0x05,0x06,0x15,0x15,0x15,0x15,0x15,0x13,0x05,0x05,0x06,0x15,0x15,0x15,0x15,0x15,0x13,0x05,0x05,0x06,0x15,0x15,0x15, 223 + 0x15,0x13,0x13,0x05,0x05,0x06,0x15,0x15,0x15,0x15,0x13,0x13,0x05,0x06,0x04,0x15,0x15,0x13,0x13,0x06,0x06,0x01,0x09,0x02,0x01,0x09,0x06,0x10 210 224 }; 211 225 unsigned char *tileset_tiles_data[28] = 212 226 {
+4 -4
src/gfx/tileset.h
··· 54 54 #define tileset_tile_23 ((gfx_rletsprite_t*)tileset_tile_23_data) 55 55 extern unsigned char tileset_tile_23_data[186]; 56 56 #define tileset_tile_24 ((gfx_rletsprite_t*)tileset_tile_24_data) 57 - extern unsigned char tileset_tile_24_data[18]; 57 + extern unsigned char tileset_tile_24_data[136]; 58 58 #define tileset_tile_25 ((gfx_rletsprite_t*)tileset_tile_25_data) 59 - extern unsigned char tileset_tile_25_data[18]; 59 + extern unsigned char tileset_tile_25_data[124]; 60 60 #define tileset_tile_26 ((gfx_rletsprite_t*)tileset_tile_26_data) 61 - extern unsigned char tileset_tile_26_data[18]; 61 + extern unsigned char tileset_tile_26_data[142]; 62 62 #define tileset_tile_27 ((gfx_rletsprite_t*)tileset_tile_27_data) 63 - extern unsigned char tileset_tile_27_data[18]; 63 + extern unsigned char tileset_tile_27_data[124]; 64 64 #define tileset_num_tiles 28 65 65 #define tileset_tiles ((gfx_rletsprite_t**)tileset_tiles_data) 66 66 extern unsigned char *tileset_tiles_data[28];
+93 -93
src/gfx/walls.c
··· 1 1 unsigned char walls_tile_0_data[85] = 2 2 { 3 - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x04,0x01,0x01,0x01,0x01,0x0c,0x00,0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x0a,0x00,0x06,0x06,0x06,0x06,0x06, 4 - 0x06,0x01,0x0a,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01, 5 - 0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09 3 + 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x04,0x09,0x09,0x09,0x09,0x0c,0x00,0x06,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x0a,0x00,0x06,0x0a,0x0a,0x0a,0x0a, 4 + 0x0a,0x09,0x0a,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09, 5 + 0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09 6 6 }; 7 7 unsigned char walls_tile_1_data[146] = 8 8 { 9 - 0x10,0x10,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01, 10 - 0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06, 11 - 0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06, 12 - 0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06, 13 - 0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06 9 + 0x10,0x10,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09, 10 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a, 11 + 0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a, 12 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 13 + 0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a 14 14 }; 15 15 unsigned char walls_tile_2_data[234] = 16 16 { 17 - 0x10,0x10,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09, 18 - 0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x08,0x00,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x08, 19 - 0x00,0x09,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x07,0x00,0x0b,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x05,0x00,0x10,0x06,0x06,0x06,0x06, 20 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x01,0x01,0x01,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10, 21 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 22 - 0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 23 - 0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06, 24 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06 17 + 0x10,0x10,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09, 18 + 0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x08,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x08,0x00,0x08,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x08, 19 + 0x00,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x00,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x05,0x00,0x10,0x0a,0x0a,0x0a,0x0a, 20 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x09,0x09,0x09,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10, 21 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 22 + 0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 23 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 24 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a 25 25 }; 26 26 unsigned char walls_tile_3_data[154] = 27 27 { 28 - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x10,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x10,0x06,0x06, 29 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 30 - 0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 31 - 0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 32 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06 28 + 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x10,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x00,0x10,0x0a,0x0a, 29 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 30 + 0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 31 + 0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 32 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a 33 33 }; 34 34 unsigned char walls_tile_4_data[197] = 35 35 { 36 - 0x10,0x10,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09, 37 - 0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x08,0x00,0x08,0x01,0x01,0x01,0x01,0x01,0x06,0x06,0x01,0x08, 38 - 0x00,0x09,0x0c,0x11,0x0c,0x11,0x11,0x01,0x01,0x06,0x01,0x07,0x00,0x0b,0x06,0x06,0x06,0x0c,0x0c,0x0c,0x11,0x01,0x06,0x01,0x01,0x05,0x00,0x10,0x06,0x0c,0x0c,0x11, 39 - 0x06,0x06,0x0c,0x11,0x01,0x06,0x06,0x01,0x01,0x01,0x01,0x01,0x00,0x10,0x0c,0x06,0x06,0x0c,0x0c,0x0c,0x0c,0x11,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10, 40 - 0x06,0x0c,0x0c,0x06,0x06,0x06,0x0c,0x0c,0x11,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x0b,0x06,0x06,0x11,0x0c,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x07,0x09,0x06, 41 - 0x0c,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x08,0x08,0x11,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x08,0x08,0x06,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06, 42 - 0x06,0x06,0x06,0x06,0x06 36 + 0x10,0x10,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09, 37 + 0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x08,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x08,0x00,0x08,0x09,0x09,0x09,0x09,0x09,0x0a,0x0a,0x09,0x08, 38 + 0x00,0x09,0x0c,0x11,0x0c,0x11,0x11,0x09,0x09,0x0a,0x09,0x07,0x00,0x0b,0x0a,0x0a,0x0a,0x0c,0x0c,0x0c,0x11,0x09,0x0a,0x09,0x09,0x05,0x00,0x10,0x0a,0x0c,0x0c,0x11, 39 + 0x0a,0x0a,0x0c,0x11,0x09,0x0a,0x0a,0x09,0x09,0x09,0x09,0x09,0x00,0x10,0x0c,0x0a,0x0a,0x0c,0x0c,0x0c,0x0c,0x11,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10, 40 + 0x0a,0x0c,0x0c,0x0a,0x0a,0x0a,0x0c,0x0c,0x11,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x05,0x0b,0x0a,0x0a,0x11,0x0c,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x07,0x09,0x0a, 41 + 0x0c,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x08,0x11,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x08,0x0a,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a, 42 + 0x0a,0x0a,0x0a,0x0a,0x0a 43 43 }; 44 44 unsigned char walls_tile_5_data[226] = 45 45 { 46 - 0x10,0x10,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01, 47 - 0x06,0x06,0x06,0x06,0x06,0x06,0x08,0x08,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x08,0x08,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x07,0x09,0x01,0x06,0x06,0x06, 48 - 0x06,0x06,0x06,0x06,0x06,0x05,0x0b,0x01,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x01,0x01,0x01,0x01,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 49 - 0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 50 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06, 51 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10, 52 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 53 - 0x06,0x06 46 + 0x10,0x10,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09, 47 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x08,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x08,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x07,0x09,0x09,0x0a,0x0a,0x0a, 48 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x05,0x0b,0x09,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x09,0x09,0x09,0x09,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 49 + 0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 50 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a, 51 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10, 52 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 53 + 0x0a,0x0a 54 54 }; 55 55 unsigned char walls_tile_6_data[290] = 56 56 { 57 - 0x10,0x10,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 58 - 0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06, 59 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06, 60 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 61 - 0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 62 - 0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 63 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06, 64 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10, 65 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 66 - 0x06,0x06 57 + 0x10,0x10,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 58 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 59 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a, 60 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 61 + 0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 62 + 0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 63 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a, 64 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10, 65 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 66 + 0x0a,0x0a 67 67 }; 68 68 unsigned char walls_tile_7_data[258] = 69 69 { 70 - 0x10,0x10,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 71 - 0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06, 72 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06, 73 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x01,0x01,0x01,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x01,0x0c,0x0c,0x0c,0x11,0x11, 74 - 0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x0c,0x0c,0x11,0x11,0x06,0x0c,0x0c,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x11,0x11,0x06,0x06, 75 - 0x0c,0x0c,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x11,0x0c,0x0c,0x0c,0x06,0x11,0x11,0x0c,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x0c, 76 - 0x0c,0x06,0x0c,0x06,0x06,0x06,0x0c,0x06,0x00,0x0b,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x11,0x0c,0x06,0x06,0x05,0x00,0x09,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x11, 77 - 0x06,0x07,0x00,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x06,0x08,0x00,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x06,0x08,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06, 78 - 0x01,0x09 70 + 0x10,0x10,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 71 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 72 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a, 73 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x09,0x09,0x09,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x0c,0x0c,0x0c,0x11,0x11, 74 + 0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x0c,0x0c,0x11,0x11,0x0a,0x0c,0x0c,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x11,0x11,0x0a,0x0a, 75 + 0x0c,0x0c,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x11,0x0c,0x0c,0x0c,0x0a,0x11,0x11,0x0c,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x0c, 76 + 0x0c,0x0a,0x0c,0x0a,0x0a,0x0a,0x0c,0x0a,0x00,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x11,0x0c,0x0a,0x0a,0x05,0x00,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x11, 77 + 0x0a,0x07,0x00,0x08,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x0a,0x08,0x00,0x08,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x0a,0x08,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 78 + 0x09,0x09 79 79 }; 80 80 unsigned char walls_tile_8_data[101] = 81 81 { 82 - 0x10,0x10,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x01,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x11, 83 - 0x01,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x11,0x01,0x01,0x01,0x06,0x06,0x06,0x09,0x07,0x0c,0x11,0x0c,0x01,0x01,0x01,0x01,0x09,0x07,0x11,0x0c,0x11,0x0c,0x0c,0x0c, 84 - 0x11,0x09,0x07,0x06,0x0c,0x06,0x11,0x11,0x11,0x06,0x0a,0x06,0x06,0x0c,0x11,0x06,0x06,0x0c,0x0a,0x06,0x0c,0x06,0x06,0x0c,0x0c,0x06,0x0c,0x04,0x06,0x06,0x06,0x0c, 82 + 0x10,0x10,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x11, 83 + 0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x11,0x09,0x09,0x09,0x0a,0x0a,0x0a,0x09,0x07,0x0c,0x11,0x0c,0x09,0x09,0x09,0x09,0x09,0x07,0x11,0x0c,0x11,0x0c,0x0c,0x0c, 84 + 0x11,0x09,0x07,0x0a,0x0c,0x0a,0x11,0x11,0x11,0x0a,0x0a,0x06,0x0a,0x0c,0x11,0x0a,0x0a,0x0c,0x0a,0x06,0x0c,0x0a,0x0a,0x0c,0x0c,0x0a,0x0c,0x04,0x0a,0x0a,0x0a,0x0c, 85 85 0x10,0x10,0x10,0x10,0x10 86 86 }; 87 87 unsigned char walls_tile_9_data[205] = 88 88 { 89 - 0x10,0x10,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 90 - 0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06, 91 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x01,0x01, 92 - 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x10,0x11,0x06,0x11,0x11,0x11,0x0c,0x0c,0x11,0x11,0x11,0x0c,0x0c,0x0c,0x11,0x11,0x11, 93 - 0x00,0x10,0x06,0x0c,0x0c,0x06,0x0c,0x0c,0x06,0x06,0x0c,0x0c,0x11,0x11,0x06,0x0c,0x0c,0x0c,0x00,0x10,0x0c,0x11,0x0c,0x0c,0x06,0x06,0x0c,0x0c,0x06,0x06,0x0c,0x0c, 94 - 0x0c,0x0c,0x06,0x06,0x00,0x10,0x06,0x06,0x11,0x11,0x0c,0x0c,0x06,0x06,0x11,0x11,0x11,0x06,0x06,0x06,0x0c,0x0c,0x00,0x10,0x06,0x06,0x06,0x0c,0x0c,0x06,0x06,0x06, 95 - 0x06,0x0c,0x0c,0x0c,0x0c,0x0c,0x06,0x06,0x10,0x10,0x10,0x10,0x10 89 + 0x10,0x10,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 90 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 91 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x09,0x09, 92 + 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x00,0x10,0x11,0x0a,0x11,0x11,0x11,0x0c,0x0c,0x11,0x11,0x11,0x0c,0x0c,0x0c,0x11,0x11,0x11, 93 + 0x00,0x10,0x0a,0x0c,0x0c,0x0a,0x0c,0x0c,0x0a,0x0a,0x0c,0x0c,0x11,0x11,0x0a,0x0c,0x0c,0x0c,0x00,0x10,0x0c,0x11,0x0c,0x0c,0x0a,0x0a,0x0c,0x0c,0x0a,0x0a,0x0c,0x0c, 94 + 0x0c,0x0c,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x11,0x11,0x0c,0x0c,0x0a,0x0a,0x11,0x11,0x11,0x0a,0x0a,0x0a,0x0c,0x0c,0x00,0x10,0x0a,0x0a,0x0a,0x0c,0x0c,0x0a,0x0a,0x0a, 95 + 0x0a,0x0c,0x0c,0x0c,0x0c,0x0c,0x0a,0x0a,0x10,0x10,0x10,0x10,0x10 96 96 }; 97 97 unsigned char walls_tile_10_data[253] = 98 98 { 99 - 0x10,0x10,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 100 - 0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06, 101 - 0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x01,0x01, 102 - 0x01,0x01,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x0c,0x11,0x0c,0x11,0x11,0x01,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06, 103 - 0x00,0x10,0x06,0x06,0x06,0x0c,0x0c,0x0c,0x11,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x0c,0x0c,0x11,0x06,0x06,0x0c,0x11,0x01,0x06,0x06,0x06, 104 - 0x06,0x06,0x06,0x06,0x00,0x10,0x0c,0x06,0x06,0x0c,0x0c,0x0c,0x0c,0x11,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x10,0x06,0x0c,0x0c,0x06,0x06,0x06,0x0c,0x0c, 105 - 0x11,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x05,0x0b,0x06,0x06,0x11,0x0c,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x07,0x09,0x06,0x0c,0x01,0x06,0x06,0x06,0x06,0x06,0x06, 106 - 0x08,0x08,0x11,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x08,0x08,0x06,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06 99 + 0x10,0x10,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 100 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 101 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x09,0x09, 102 + 0x09,0x09,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0c,0x11,0x0c,0x11,0x11,0x09,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 103 + 0x00,0x10,0x0a,0x0a,0x0a,0x0c,0x0c,0x0c,0x11,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0c,0x0c,0x11,0x0a,0x0a,0x0c,0x11,0x09,0x0a,0x0a,0x0a, 104 + 0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0c,0x0a,0x0a,0x0c,0x0c,0x0c,0x0c,0x11,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x00,0x10,0x0a,0x0c,0x0c,0x0a,0x0a,0x0a,0x0c,0x0c, 105 + 0x11,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x05,0x0b,0x0a,0x0a,0x11,0x0c,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x07,0x09,0x0a,0x0c,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 106 + 0x08,0x08,0x11,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x08,0x0a,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a 107 107 }; 108 108 unsigned char walls_tile_11_data[162] = 109 109 { 110 - 0x10,0x10,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09, 111 - 0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07, 112 - 0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06, 113 - 0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06, 114 - 0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06, 115 - 0x01,0x09 110 + 0x10,0x10,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09, 111 + 0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07, 112 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a, 113 + 0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a, 114 + 0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 115 + 0x09,0x09 116 116 }; 117 117 unsigned char walls_tile_12_data[18] = 118 118 { ··· 120 120 }; 121 121 unsigned char walls_tile_13_data[77] = 122 122 { 123 - 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0c,0x04,0x01,0x01,0x01,0x01,0x0a,0x06,0x01,0x01,0x06,0x06,0x06,0x06,0x0a,0x06,0x01,0x06,0x06,0x06,0x06,0x06, 124 - 0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06, 125 - 0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06 123 + 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x0c,0x04,0x09,0x09,0x09,0x09,0x0a,0x06,0x09,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x06,0x09,0x0a,0x0a,0x0a,0x0a,0x0a, 124 + 0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a, 125 + 0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a 126 126 }; 127 127 unsigned char walls_tile_14_data[194] = 128 128 { 129 - 0x10,0x10,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x09,0x07,0x01, 130 - 0x06,0x06,0x06,0x06,0x06,0x06,0x08,0x08,0x01,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x08,0x08,0x01,0x06,0x06,0x01,0x01,0x01,0x01,0x01,0x07,0x09,0x01,0x06,0x01,0x01, 131 - 0x0c,0x0c,0x0c,0x11,0x11,0x05,0x0b,0x01,0x01,0x06,0x01,0x0c,0x0c,0x11,0x11,0x06,0x0c,0x0c,0x00,0x10,0x01,0x01,0x01,0x01,0x01,0x06,0x06,0x01,0x11,0x11,0x06,0x06, 132 - 0x0c,0x0c,0x06,0x06,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x11,0x0c,0x0c,0x0c,0x06,0x11,0x11,0x0c,0x00,0x10,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x0c, 133 - 0x0c,0x06,0x0c,0x06,0x06,0x06,0x0c,0x06,0x00,0x0b,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x11,0x0c,0x06,0x06,0x05,0x00,0x09,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x11, 134 - 0x06,0x07,0x00,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x06,0x08,0x00,0x08,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x06,0x08,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06, 135 - 0x01,0x09 129 + 0x10,0x10,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x07,0x09, 130 + 0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x08,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x08,0x08,0x09,0x0a,0x0a,0x09,0x09,0x09,0x09,0x09,0x07,0x09,0x09,0x0a,0x09,0x09, 131 + 0x0c,0x0c,0x0c,0x11,0x11,0x05,0x0b,0x09,0x09,0x0a,0x09,0x0c,0x0c,0x11,0x11,0x0a,0x0c,0x0c,0x00,0x10,0x09,0x09,0x09,0x09,0x09,0x0a,0x0a,0x09,0x11,0x11,0x0a,0x0a, 132 + 0x0c,0x0c,0x0a,0x0a,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x11,0x0c,0x0c,0x0c,0x0a,0x11,0x11,0x0c,0x00,0x10,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x0c, 133 + 0x0c,0x0a,0x0c,0x0a,0x0a,0x0a,0x0c,0x0a,0x00,0x0b,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x11,0x0c,0x0a,0x0a,0x05,0x00,0x09,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x11, 134 + 0x0a,0x07,0x00,0x08,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x0a,0x08,0x00,0x08,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x0a,0x08,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a, 135 + 0x09,0x09 136 136 }; 137 137 unsigned char walls_tile_15_data[112] = 138 138 { 139 - 0x10,0x10,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x01,0x09, 140 - 0x00,0x07,0x06,0x06,0x06,0x06,0x06,0x01,0x0c,0x09,0x00,0x07,0x06,0x06,0x06,0x06,0x01,0x01,0x11,0x09,0x00,0x07,0x01,0x01,0x01,0x01,0x11,0x11,0x0c,0x09,0x00,0x07, 141 - 0x0c,0x0c,0x0c,0x11,0x11,0x0c,0x06,0x09,0x00,0x07,0x11,0x11,0x0c,0x0c,0x06,0x0c,0x06,0x09,0x00,0x06,0x06,0x06,0x11,0x06,0x0c,0x06,0x0a,0x00,0x06,0x0c,0x0c,0x06, 142 - 0x11,0x06,0x06,0x0a,0x00,0x04,0x06,0x06,0x0c,0x0c,0x0c,0x10,0x10,0x10,0x10,0x10 139 + 0x10,0x10,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x09, 140 + 0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x0a,0x09,0x0c,0x09,0x00,0x07,0x0a,0x0a,0x0a,0x0a,0x09,0x09,0x11,0x09,0x00,0x07,0x09,0x09,0x09,0x09,0x11,0x11,0x0c,0x09,0x00,0x07, 141 + 0x0c,0x0c,0x0c,0x11,0x11,0x0c,0x0a,0x09,0x00,0x07,0x11,0x11,0x0c,0x0c,0x0a,0x0c,0x0a,0x09,0x00,0x06,0x0a,0x0a,0x11,0x0a,0x0c,0x0a,0x0a,0x00,0x06,0x0c,0x0c,0x0a, 142 + 0x11,0x0a,0x0a,0x0a,0x00,0x04,0x0a,0x0a,0x0c,0x0c,0x0c,0x10,0x10,0x10,0x10,0x10 143 143 }; 144 144 unsigned char *walls_tiles_data[16] = 145 145 {
+30 -30
src/main.c
··· 1 - #include <stdlib.h> 2 - #include <graphx.h> 3 - #include <keypadc.h> 4 - #include "gfx/gfx.h" 5 - #include "drawing.h" 6 - #include "game.h" 7 - 8 - int main(void) { 9 - gfx_Begin(); 10 - gfx_SetPalette(default_palette, sizeof_default_palette, 0); 11 - gfx_SetDrawBuffer(); 12 - gfx_FillScreen(1); 13 - 14 - kb_EnableOnLatch(); 15 - kb_ClearOnLatch(); 16 - 17 - setView(VIEW_TITLE); 18 - 19 - while (!toExit) 20 - { 21 - if (kb_On) break; 22 - 23 - doInput(); 24 - drawView(); 25 - } 26 - 27 - kb_ClearOnLatch(); 28 - 29 - gfx_End(); 30 - return 0; 1 + #include <stdlib.h> 2 + #include <graphx.h> 3 + #include <keypadc.h> 4 + #include "gfx/gfx.h" 5 + #include "drawing.h" 6 + #include "game.h" 7 + 8 + int main(void) { 9 + gfx_Begin(); 10 + gfx_SetPalette(default_palette, sizeof_default_palette, 0); 11 + gfx_SetDrawBuffer(); 12 + gfx_FillScreen(1); 13 + 14 + kb_EnableOnLatch(); 15 + kb_ClearOnLatch(); 16 + 17 + setView(VIEW_TITLE); 18 + 19 + while (!toExit) 20 + { 21 + if (kb_On) break; 22 + 23 + doInput(); 24 + drawView(); 25 + } 26 + 27 + kb_ClearOnLatch(); 28 + 29 + gfx_End(); 30 + return 0; 31 31 }
+27 -27
src/map.c
··· 1 - #include <stdlib.h> 2 - #include <graphx.h> 3 - #include "map.h" 4 - 5 - cell_t map[MAP_HEIGHT][MAP_WIDTH]; 6 - 7 - cell_t getCell(uint8_t row, uint8_t col) { 8 - if (row >= MAP_HEIGHT || col >= MAP_WIDTH) { 9 - return (cell_t){ENTITY_WALL, 0}; 10 - } 11 - else return map[row][col]; 12 - } 13 - 14 - uint8_t wallsInRow(uint8_t row) { 15 - uint8_t numWalls = 0; 16 - for (uint8_t col = 0; col < MAP_WIDTH; col++) { 17 - if (map[row][col].contents == ENTITY_WALL) numWalls++; 18 - } 19 - return numWalls; 20 - } 21 - 22 - uint8_t wallsInCol(uint8_t col) { 23 - uint8_t numWalls = 0; 24 - for (uint8_t row = 0; row < MAP_HEIGHT; row++) { 25 - if (map[row][col].contents == ENTITY_WALL) numWalls++; 26 - } 27 - return numWalls; 1 + #include <stdlib.h> 2 + #include <graphx.h> 3 + #include "map.h" 4 + 5 + cell_t map[MAP_HEIGHT][MAP_WIDTH]; 6 + 7 + cell_t getCell(uint8_t row, uint8_t col) { 8 + if (row >= MAP_HEIGHT || col >= MAP_WIDTH) { 9 + return (cell_t){ENTITY_WALL, 0}; 10 + } 11 + else return map[row][col]; 12 + } 13 + 14 + uint8_t wallsInRow(uint8_t row) { 15 + uint8_t numWalls = 0; 16 + for (uint8_t col = 0; col < MAP_WIDTH; col++) { 17 + if (map[row][col].contents == ENTITY_WALL) numWalls++; 18 + } 19 + return numWalls; 20 + } 21 + 22 + uint8_t wallsInCol(uint8_t col) { 23 + uint8_t numWalls = 0; 24 + for (uint8_t row = 0; row < MAP_HEIGHT; row++) { 25 + if (map[row][col].contents == ENTITY_WALL) numWalls++; 26 + } 27 + return numWalls; 28 28 }
+26 -26
src/map.h
··· 1 - #ifndef MAP_H 2 - #define MAP_H 3 - 4 - #define MAP_WIDTH 8 5 - #define MAP_HEIGHT 8 6 - 7 - typedef enum { 8 - ENTITY_NONE, 9 - ENTITY_WALL, 10 - ENTITY_FLAG, 11 - ENTITY_CHEST, 12 - ENTITY_MONSTER 13 - } entity_t; 14 - 15 - typedef struct { 16 - entity_t contents : 3; 17 - uint8_t variant : 5; 18 - } cell_t; 19 - 20 - extern cell_t map[MAP_HEIGHT][MAP_WIDTH]; 21 - 22 - cell_t getCell(uint8_t row, uint8_t col); 23 - 24 - uint8_t wallsInCol(uint8_t col); 25 - uint8_t wallsInRow(uint8_t row); 26 - 1 + #ifndef MAP_H 2 + #define MAP_H 3 + 4 + #define MAP_WIDTH 8 5 + #define MAP_HEIGHT 8 6 + 7 + typedef enum { 8 + ENTITY_NONE, 9 + ENTITY_WALL, 10 + ENTITY_FLAG, 11 + ENTITY_CHEST, 12 + ENTITY_MONSTER 13 + } entity_t; 14 + 15 + typedef struct { 16 + entity_t contents : 3; 17 + uint8_t variant : 5; 18 + } cell_t; 19 + 20 + extern cell_t map[MAP_HEIGHT][MAP_WIDTH]; 21 + 22 + cell_t getCell(uint8_t row, uint8_t col); 23 + 24 + uint8_t wallsInCol(uint8_t col); 25 + uint8_t wallsInRow(uint8_t row); 26 + 27 27 #endif