Repository: EXL/NXEngine
Branch: master
Commit: 16bf776febef
Files: 401
Total size: 2.1 MB
Directory structure:
gitextract_eo2jxfjt/
├── .gitignore
├── DroidSM_Font_License.txt
├── ICON_AUTHOR
├── LICENSE
├── Makefile.dingux
├── Makefile.ezx
├── Makefile.haiku
├── Makefile.linux
├── Makefile.mingw32
├── Makefile.motomagx
├── NXEngine.pro
├── ObjManager.cpp
├── ObjManager.fdh
├── ObjManager.h
├── README.md
├── TextBox/
│ ├── ItemImage.cpp
│ ├── ItemImage.fdh
│ ├── ItemImage.h
│ ├── SaveSelect.cpp
│ ├── SaveSelect.fdh
│ ├── SaveSelect.h
│ ├── StageSelect.cpp
│ ├── StageSelect.fdh
│ ├── StageSelect.h
│ ├── TextBox.cpp
│ ├── TextBox.fdh
│ ├── TextBox.h
│ ├── YesNoPrompt.cpp
│ ├── YesNoPrompt.fdh
│ └── YesNoPrompt.h
├── ai/
│ ├── IrregularBBox.cpp
│ ├── IrregularBBox.fdh
│ ├── IrregularBBox.h
│ ├── ai.cpp
│ ├── ai.fdh
│ ├── ai.h
│ ├── almond/
│ │ ├── almond.cpp
│ │ ├── almond.fdh
│ │ └── almond.h
│ ├── balrog_common.cpp
│ ├── balrog_common.fdh
│ ├── balrog_common.h
│ ├── boss/
│ │ ├── balfrog.cpp
│ │ ├── balfrog.fdh
│ │ ├── balfrog.h
│ │ ├── ballos.cpp
│ │ ├── ballos.fdh
│ │ ├── ballos.h
│ │ ├── core.cpp
│ │ ├── core.fdh
│ │ ├── core.h
│ │ ├── heavypress.cpp
│ │ ├── heavypress.fdh
│ │ ├── heavypress.h
│ │ ├── ironhead.cpp
│ │ ├── ironhead.fdh
│ │ ├── ironhead.h
│ │ ├── omega.cpp
│ │ ├── omega.fdh
│ │ ├── omega.h
│ │ ├── sisters.cpp
│ │ ├── sisters.fdh
│ │ ├── sisters.h
│ │ ├── undead_core.cpp
│ │ ├── undead_core.fdh
│ │ ├── undead_core.h
│ │ ├── x.cpp
│ │ ├── x.fdh
│ │ └── x.h
│ ├── egg/
│ │ ├── egg.cpp
│ │ ├── egg.fdh
│ │ ├── egg2.cpp
│ │ ├── egg2.fdh
│ │ ├── igor.cpp
│ │ └── igor.fdh
│ ├── final_battle/
│ │ ├── balcony.cpp
│ │ ├── balcony.fdh
│ │ ├── doctor.cpp
│ │ ├── doctor.fdh
│ │ ├── doctor.h
│ │ ├── doctor_common.cpp
│ │ ├── doctor_common.fdh
│ │ ├── doctor_frenzied.cpp
│ │ ├── doctor_frenzied.fdh
│ │ ├── final_misc.cpp
│ │ ├── final_misc.fdh
│ │ ├── misery.fdh
│ │ ├── misery_battle.cpp
│ │ ├── sidekicks.cpp
│ │ └── sidekicks.fdh
│ ├── first_cave/
│ │ ├── first_cave.cpp
│ │ └── first_cave.fdh
│ ├── hell/
│ │ ├── ballos_misc.cpp
│ │ ├── ballos_misc.fdh
│ │ ├── ballos_priest.cpp
│ │ ├── ballos_priest.fdh
│ │ ├── hell.cpp
│ │ └── hell.fdh
│ ├── last_cave/
│ │ ├── last_cave.cpp
│ │ └── last_cave.fdh
│ ├── maze/
│ │ ├── balrog_boss_missiles.cpp
│ │ ├── balrog_boss_missiles.fdh
│ │ ├── critter_purple.cpp
│ │ ├── critter_purple.fdh
│ │ ├── gaudi.cpp
│ │ ├── gaudi.fdh
│ │ ├── labyrinth_m.cpp
│ │ ├── labyrinth_m.fdh
│ │ ├── maze.cpp
│ │ ├── maze.fdh
│ │ ├── pooh_black.cpp
│ │ └── pooh_black.fdh
│ ├── npc/
│ │ ├── balrog.cpp
│ │ ├── balrog.fdh
│ │ ├── curly.cpp
│ │ ├── curly.fdh
│ │ ├── curly_ai.cpp
│ │ ├── curly_ai.fdh
│ │ ├── misery.fdh
│ │ ├── misery_ai.cpp
│ │ ├── npcguest.cpp
│ │ ├── npcguest.fdh
│ │ ├── npcplayer.cpp
│ │ ├── npcplayer.fdh
│ │ ├── npcregu.cpp
│ │ └── npcregu.fdh
│ ├── oside/
│ │ ├── oside.cpp
│ │ └── oside.fdh
│ ├── plantation/
│ │ ├── plantation.cpp
│ │ └── plantation.fdh
│ ├── sand/
│ │ ├── curly_boss.cpp
│ │ ├── curly_boss.fdh
│ │ ├── puppy.cpp
│ │ ├── puppy.fdh
│ │ ├── sand.cpp
│ │ ├── sand.fdh
│ │ ├── toroko_frenzied.cpp
│ │ └── toroko_frenzied.fdh
│ ├── stdai.h
│ ├── sym/
│ │ ├── smoke.cpp
│ │ ├── smoke.fdh
│ │ ├── sym.cpp
│ │ └── sym.fdh
│ ├── village/
│ │ ├── balrog_boss_running.cpp
│ │ ├── balrog_boss_running.fdh
│ │ ├── ma_pignon.cpp
│ │ ├── ma_pignon.fdh
│ │ ├── village.cpp
│ │ └── village.fdh
│ ├── weapons/
│ │ ├── blade.cpp
│ │ ├── blade.fdh
│ │ ├── bubbler.cpp
│ │ ├── bubbler.fdh
│ │ ├── fireball.cpp
│ │ ├── fireball.fdh
│ │ ├── missile.cpp
│ │ ├── missile.fdh
│ │ ├── nemesis.cpp
│ │ ├── nemesis.fdh
│ │ ├── polar_mgun.cpp
│ │ ├── polar_mgun.fdh
│ │ ├── snake.cpp
│ │ ├── snake.fdh
│ │ ├── spur.cpp
│ │ ├── spur.fdh
│ │ ├── weapons.cpp
│ │ ├── weapons.fdh
│ │ ├── weapons.h
│ │ ├── whimstar.cpp
│ │ ├── whimstar.fdh
│ │ └── whimstar.h
│ └── weed/
│ ├── balrog_boss_flying.cpp
│ ├── balrog_boss_flying.fdh
│ ├── frenzied_mimiga.cpp
│ ├── frenzied_mimiga.fdh
│ ├── weed.cpp
│ └── weed.fdh
├── autogen/
│ ├── AssignSprites.cpp
│ ├── AssignSprites.fdh
│ ├── asdefs.h
│ ├── objnames.cpp
│ ├── objnames.fdh
│ ├── sprites.h
│ └── stagedata.fdh
├── caret.cpp
├── caret.fdh
├── caret.h
├── common/
│ ├── BList.cpp
│ ├── BList.fdh
│ ├── BList.h
│ ├── DBuffer.cpp
│ ├── DBuffer.fdh
│ ├── DBuffer.h
│ ├── DString.cpp
│ ├── DString.fdh
│ ├── DString.h
│ ├── FileBuffer.cpp
│ ├── FileBuffer.fdh
│ ├── FileBuffer.h
│ ├── InitList.cpp
│ ├── InitList.fdh
│ ├── InitList.h
│ ├── StringList.cpp
│ ├── StringList.fdh
│ ├── StringList.h
│ ├── SupportDefs.h
│ ├── basics.h
│ ├── bufio.cpp
│ ├── bufio.fdh
│ ├── bufio.h
│ ├── llist.h
│ ├── misc.fdh
│ ├── misc_comm.cpp
│ ├── stat.cpp
│ └── stat.fdh
├── config.h
├── console.cpp
├── console.fdh
├── console.h
├── data/
│ ├── bkFog480fix.pbm
│ └── bkMoon480fix.pbm
├── debug.cpp
├── debug.fdh
├── debug.h
├── dirnames.h
├── endgame/
│ ├── CredReader.cpp
│ ├── CredReader.fdh
│ ├── CredReader.h
│ ├── credits.cpp
│ ├── credits.fdh
│ ├── credits.h
│ ├── island.cpp
│ ├── island.fdh
│ ├── island.h
│ ├── misc.fdh
│ └── misc_end.cpp
├── extract/
│ ├── crc.cpp
│ ├── crc.fdh
│ ├── extract.cpp
│ ├── extract.fdh
│ ├── extractfiles.cpp
│ ├── extractfiles.fdh
│ ├── extractpxt.cpp
│ ├── extractpxt.fdh
│ ├── extractstages.cpp
│ └── extractstages.fdh
├── floattext.cpp
├── floattext.fdh
├── floattext.h
├── game.cpp
├── game.fdh
├── game.h
├── graphics/
│ ├── fbdev.cpp
│ ├── fbdev.fdh
│ ├── font.cpp
│ ├── font.fdh
│ ├── font.h
│ ├── graphics.cpp
│ ├── graphics.fdh
│ ├── graphics.h
│ ├── nxsurface.cpp
│ ├── nxsurface.fdh
│ ├── nxsurface.h
│ ├── palette.cpp
│ ├── palette.fdh
│ ├── palette.h
│ ├── safemode.cpp
│ ├── safemode.fdh
│ ├── safemode.h
│ ├── sprites.cpp
│ ├── sprites.fdh
│ ├── sprites.h
│ ├── tileset.cpp
│ ├── tileset.fdh
│ └── tileset.h
├── imgsrc/
│ ├── bkFog-src.psd
│ └── bkMoon-src.psd
├── input.cpp
├── input.fdh
├── input.h
├── intro/
│ ├── intro.cpp
│ ├── intro.fdh
│ ├── intro.h
│ ├── title.cpp
│ ├── title.fdh
│ └── title.h
├── inventory.cpp
├── inventory.fdh
├── inventory.h
├── l10n_strings.h
├── main.cpp
├── main.fdh
├── map.cpp
├── map.fdh
├── map.h
├── map_system.cpp
├── map_system.fdh
├── map_system.h
├── maprecord.h
├── niku.cpp
├── niku.fdh
├── nx.h
├── nx.rc
├── nx_icon.h
├── object.cpp
├── object.fdh
├── object.h
├── p_arms.cpp
├── p_arms.fdh
├── p_arms.h
├── pause/
│ ├── dialog.cpp
│ ├── dialog.fdh
│ ├── dialog.h
│ ├── message.cpp
│ ├── message.fdh
│ ├── message.h
│ ├── objects.cpp
│ ├── objects.fdh
│ ├── options.cpp
│ ├── options.fdh
│ ├── options.h
│ ├── pause.cpp
│ ├── pause.fdh
│ └── pause.h
├── platform/
│ ├── EZX/
│ │ ├── EZX_SDL_PollEvent.cpp
│ │ ├── EZX_SDL_PollEvent.h
│ │ ├── NXEngine.desktop
│ │ └── run.sh
│ ├── Haiku/
│ │ ├── Balrog_V3_opt
│ │ ├── Balrog_V3_opt.hvif
│ │ ├── NXEngine.sh
│ │ └── nxengine.rdef.in
│ └── Linux/
│ ├── vbesync.c
│ └── vbesync.fdh
├── platform.cpp
├── platform.fdh
├── platform.h
├── player.cpp
├── player.fdh
├── player.h
├── playerstats.cpp
├── playerstats.fdh
├── profile.cpp
├── profile.fdh
├── profile.h
├── replay.cpp
├── replay.fdh
├── replay.h
├── screeneffect.cpp
├── screeneffect.fdh
├── screeneffect.h
├── settings.cpp
├── settings.fdh
├── settings.h
├── siflib/
│ ├── sectSprites.cpp
│ ├── sectSprites.fdh
│ ├── sectSprites.h
│ ├── sectStringArray.cpp
│ ├── sectStringArray.fdh
│ ├── sectStringArray.h
│ ├── sif.cpp
│ ├── sif.fdh
│ ├── sif.h
│ ├── sifloader.cpp
│ ├── sifloader.fdh
│ └── sifloader.h
├── slope.cpp
├── slope.fdh
├── slope.h
├── sound/
│ ├── org.cpp
│ ├── org.fdh
│ ├── org.h
│ ├── pxt.cpp
│ ├── pxt.fdh
│ ├── pxt.h
│ ├── sound.cpp
│ ├── sound.fdh
│ ├── sound.h
│ ├── sslib.cpp
│ ├── sslib.fdh
│ └── sslib.h
├── sprites.sif
├── stageboss.cpp
├── stageboss.fdh
├── stageboss.h
├── stagedata.cpp
├── stagedata.fdh
├── stagedata.h
├── statusbar.cpp
├── statusbar.fdh
├── statusbar.h
├── tools/
│ └── extractmapinfo.c
├── trig.cpp
├── trig.fdh
├── trig.h
├── tsc.cpp
├── tsc.fdh
├── tsc.h
├── tsc_cmdtbl.h
├── vararray.h
└── xm/
└── README_XM_MUSIC_DATA
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# User files
*.pro.user
.directory
# Executables
*.exe
================================================
FILE: DroidSM_Font_License.txt
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: ICON_AUTHOR
================================================
Author of "nx.ico" and "nx_icon_48.png" images is ~Doctor-Cool: http://doctor-cool.deviantart.com/
Gallery:
http://doctor-cool.deviantart.com/art/Cave-Story-Icons-Compilation-283589292
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Copyright (C)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Copyright (C)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
.
================================================
FILE: Makefile.dingux
================================================
#############################################################################
# Makefile for building: NXEngine (OpenDingux/Dingux devices)
# More build information can be found here: https://github.com/EXL/NXEngine.git
# Generated by qmake (2.01a) (Qt 4.8.5) on: Fri Nov 8 11:41:28 2013
# Fixed by EXL on: 11/9/2013
#############################################################################
####### Compiler, tools and options
# Please uncomment "-D_L10N_CP1251" for Russian Localization
CC = mipsel-linux-gcc
CXX = mipsel-linux-g++
DEFINES = -D_320X240 -D_DINGUX -D_SDL_MIXER # -D_L10N_CP1251
CFLAGS = -pipe -mips32 -O2 -mabi=32 -msoft-float -ffast-math -G0 $(DEFINES)
CXXFLAGS = -pipe -mips32 -O2 -O2 -mabi=32 -msoft-float -ffast-math -G0 $(DEFINES)
INCPATH = -I/opt/mipsel-linux-uclibc/usr/include -I/opt/mipsel-linux-uclibc/usr/include/SDL -I.
LINK = mipsel-linux-g++
LFLAGS = -Wl,-O1 -Wl,-rpath,/opt/mipsel-linux-uclibc/usr/lib
LIBS = -lSDLmain -lSDL -lSDL_ttf -lSDL_mixer
STRIP = mipsel-linux-strip
DEL_FILE = rm -f
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = caret.cpp \
console.cpp \
debug.cpp \
floattext.cpp \
game.cpp \
input.cpp \
inventory.cpp \
main.cpp \
map.cpp \
map_system.cpp \
niku.cpp \
object.cpp \
ObjManager.cpp \
p_arms.cpp \
platform.cpp \
player.cpp \
playerstats.cpp \
profile.cpp \
replay.cpp \
screeneffect.cpp \
settings.cpp \
slope.cpp \
stageboss.cpp \
stagedata.cpp \
statusbar.cpp \
trig.cpp \
tsc.cpp \
ai/ai.cpp \
ai/balrog_common.cpp \
ai/IrregularBBox.cpp \
autogen/AssignSprites.cpp \
autogen/objnames.cpp \
common/BList.cpp \
common/bufio.cpp \
common/DBuffer.cpp \
common/DString.cpp \
common/FileBuffer.cpp \
common/InitList.cpp \
common/misc_comm.cpp \
common/stat.cpp \
common/StringList.cpp \
endgame/credits.cpp \
endgame/CredReader.cpp \
endgame/island.cpp \
endgame/misc_end.cpp \
extract/crc.cpp \
extract/extract.cpp \
extract/extractfiles.cpp \
extract/extractpxt.cpp \
extract/extractstages.cpp \
graphics/font.cpp \
graphics/graphics.cpp \
graphics/nxsurface.cpp \
graphics/palette.cpp \
graphics/safemode.cpp \
graphics/sprites.cpp \
graphics/tileset.cpp \
intro/intro.cpp \
intro/title.cpp \
pause/dialog.cpp \
pause/message.cpp \
pause/objects.cpp \
pause/options.cpp \
pause/pause.cpp \
siflib/sectSprites.cpp \
siflib/sectStringArray.cpp \
siflib/sif.cpp \
siflib/sifloader.cpp \
sound/org.cpp \
sound/pxt.cpp \
sound/sound.cpp \
sound/sslib.cpp \
TextBox/ItemImage.cpp \
TextBox/SaveSelect.cpp \
TextBox/StageSelect.cpp \
TextBox/TextBox.cpp \
TextBox/YesNoPrompt.cpp \
ai/almond/almond.cpp \
ai/boss/balfrog.cpp \
ai/boss/ballos.cpp \
ai/boss/core.cpp \
ai/boss/heavypress.cpp \
ai/boss/ironhead.cpp \
ai/boss/omega.cpp \
ai/boss/sisters.cpp \
ai/boss/undead_core.cpp \
ai/boss/x.cpp \
ai/egg/egg.cpp \
ai/egg/egg2.cpp \
ai/egg/igor.cpp \
ai/final_battle/balcony.cpp \
ai/final_battle/doctor.cpp \
ai/final_battle/doctor_common.cpp \
ai/final_battle/doctor_frenzied.cpp \
ai/final_battle/final_misc.cpp \
ai/final_battle/misery_battle.cpp \
ai/final_battle/sidekicks.cpp \
ai/first_cave/first_cave.cpp \
ai/hell/ballos_misc.cpp \
ai/hell/ballos_priest.cpp \
ai/hell/hell.cpp \
ai/last_cave/last_cave.cpp \
ai/maze/balrog_boss_missiles.cpp \
ai/maze/critter_purple.cpp \
ai/maze/gaudi.cpp \
ai/maze/labyrinth_m.cpp \
ai/maze/maze.cpp \
ai/maze/pooh_black.cpp \
ai/npc/balrog.cpp \
ai/npc/curly.cpp \
ai/npc/curly_ai.cpp \
ai/npc/misery_ai.cpp \
ai/npc/npcguest.cpp \
ai/npc/npcplayer.cpp \
ai/npc/npcregu.cpp \
ai/oside/oside.cpp \
ai/plantation/plantation.cpp \
ai/sand/curly_boss.cpp \
ai/sand/puppy.cpp \
ai/sand/sand.cpp \
ai/sand/toroko_frenzied.cpp \
ai/sym/smoke.cpp \
ai/sym/sym.cpp \
ai/village/balrog_boss_running.cpp \
ai/village/ma_pignon.cpp \
ai/village/village.cpp \
ai/weapons/blade.cpp \
ai/weapons/bubbler.cpp \
ai/weapons/fireball.cpp \
ai/weapons/missile.cpp \
ai/weapons/nemesis.cpp \
ai/weapons/polar_mgun.cpp \
ai/weapons/snake.cpp \
ai/weapons/spur.cpp \
ai/weapons/weapons.cpp \
ai/weapons/whimstar.cpp \
ai/weed/balrog_boss_flying.cpp \
ai/weed/frenzied_mimiga.cpp \
ai/weed/weed.cpp \
platform/Linux/vbesync.c
OBJECTS = caret.o \
console.o \
debug.o \
floattext.o \
game.o \
input.o \
inventory.o \
main.o \
map.o \
map_system.o \
niku.o \
object.o \
ObjManager.o \
p_arms.o \
platform.o \
player.o \
playerstats.o \
profile.o \
replay.o \
screeneffect.o \
settings.o \
slope.o \
stageboss.o \
stagedata.o \
statusbar.o \
trig.o \
tsc.o \
ai.o \
balrog_common.o \
IrregularBBox.o \
AssignSprites.o \
objnames.o \
BList.o \
bufio.o \
DBuffer.o \
DString.o \
FileBuffer.o \
InitList.o \
misc_comm.o \
stat.o \
StringList.o \
credits.o \
CredReader.o \
island.o \
misc_end.o \
crc.o \
extract.o \
extractfiles.o \
extractpxt.o \
extractstages.o \
font.o \
graphics.o \
nxsurface.o \
palette.o \
safemode.o \
sprites.o \
tileset.o \
intro.o \
title.o \
dialog.o \
message.o \
objects.o \
options.o \
pause.o \
sectSprites.o \
sectStringArray.o \
sif.o \
sifloader.o \
org.o \
pxt.o \
sound.o \
sslib.o \
ItemImage.o \
SaveSelect.o \
StageSelect.o \
TextBox.o \
YesNoPrompt.o \
almond.o \
balfrog.o \
ballos.o \
core.o \
heavypress.o \
ironhead.o \
omega.o \
sisters.o \
undead_core.o \
x.o \
egg.o \
egg2.o \
igor.o \
balcony.o \
doctor.o \
doctor_common.o \
doctor_frenzied.o \
final_misc.o \
misery_battle.o \
sidekicks.o \
first_cave.o \
ballos_misc.o \
ballos_priest.o \
hell.o \
last_cave.o \
balrog_boss_missiles.o \
critter_purple.o \
gaudi.o \
labyrinth_m.o \
maze.o \
pooh_black.o \
balrog.o \
curly.o \
curly_ai.o \
misery_ai.o \
npcguest.o \
npcplayer.o \
npcregu.o \
oside.o \
plantation.o \
curly_boss.o \
puppy.o \
sand.o \
toroko_frenzied.o \
smoke.o \
sym.o \
balrog_boss_running.o \
ma_pignon.o \
village.o \
blade.o \
bubbler.o \
fireball.o \
missile.o \
nemesis.o \
polar_mgun.o \
snake.o \
spur.o \
weapons.o \
whimstar.o \
balrog_boss_flying.o \
frenzied_mimiga.o \
weed.o \
vbesync.o
TARGET = nx.dge
first: all
####### Implicit rules
.SUFFIXES: .o .c .cpp .cc .cxx .C
.cpp.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cc.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cxx.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.C.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.c.o:
$(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
####### Build rules
all: $(TARGET)
$(TARGET): $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
$(STRIP) $(TARGET)
clean:
-$(DEL_FILE) $(OBJECTS)
-$(DEL_FILE) *~ core *.core
####### Sub-libraries
distclean: clean
-$(DEL_FILE) $(TARGET)
####### Compile
caret.o: caret.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
caret.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o caret.o caret.cpp
console.o: console.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
console.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o console.o console.cpp
debug.o: debug.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
debug.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug.o debug.cpp
floattext.o: floattext.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
floattext.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o floattext.o floattext.cpp
game.o: game.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/island.h \
endgame/credits.h \
endgame/CredReader.h \
intro/intro.h \
intro/title.h \
pause/pause.h \
pause/options.h \
inventory.h \
map_system.h \
profile.h \
game.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o game.o game.cpp
input.o: input.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
input.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o input.o input.cpp
inventory.o: inventory.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
inventory.h \
inventory.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o inventory.o inventory.cpp
main.o: main.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/safemode.h \
main.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
map.o: map.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
map.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o map.o map.cpp
map_system.o: map_system.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
map_system.h \
map_system.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o map_system.o map_system.cpp
niku.o: niku.cpp niku.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o niku.o niku.cpp
object.o: object.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
object.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o object.o object.cpp
ObjManager.o: ObjManager.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
ObjManager.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ObjManager.o ObjManager.cpp
p_arms.o: p_arms.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
p_arms.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o p_arms.o p_arms.cpp
platform.o: platform.cpp config.h \
platform.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o platform.o platform.cpp
player.o: player.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
player.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o player.o player.cpp
playerstats.o: playerstats.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
playerstats.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o playerstats.o playerstats.cpp
profile.o: profile.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
profile.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o profile.o profile.cpp
replay.o: replay.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
replay.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o replay.o replay.cpp
screeneffect.o: screeneffect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
screeneffect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o screeneffect.o screeneffect.cpp
settings.o: settings.cpp settings.h \
input.h \
replay.h \
common/FileBuffer.h \
common/DBuffer.h \
common/basics.h \
settings.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o settings.o settings.cpp
slope.o: slope.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
slope.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o slope.o slope.cpp
stageboss.o: stageboss.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
stageboss.fdh \
ai/boss/omega.h \
ai/boss/balfrog.h \
ai/IrregularBBox.h \
ai/boss/x.h \
ai/boss/core.h \
ai/boss/ironhead.h \
ai/boss/sisters.h \
ai/boss/undead_core.h \
ai/boss/heavypress.h \
ai/boss/ballos.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stageboss.o stageboss.cpp
stagedata.o: stagedata.cpp stagedata.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stagedata.o stagedata.cpp
statusbar.o: statusbar.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
statusbar.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o statusbar.o statusbar.cpp
trig.o: trig.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
trig.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o trig.o trig.cpp
tsc.o: tsc.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
vararray.h \
tsc.fdh \
tsc_cmdtbl.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tsc.o tsc.cpp
ai.o: ai/ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/ai.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ai.o ai/ai.cpp
balrog_common.o: ai/balrog_common.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_common.o ai/balrog_common.cpp
IrregularBBox.o: ai/IrregularBBox.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/IrregularBBox.h \
ai/IrregularBBox.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o IrregularBBox.o ai/IrregularBBox.cpp
AssignSprites.o: autogen/AssignSprites.cpp autogen/asdefs.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o AssignSprites.o autogen/AssignSprites.cpp
objnames.o: autogen/objnames.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o objnames.o autogen/objnames.cpp
BList.o: common/BList.cpp common/BList.h \
common/SupportDefs.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o BList.o common/BList.cpp
bufio.o: common/bufio.cpp common/DBuffer.h \
common/basics.h \
common/bufio.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o bufio.o common/bufio.cpp
DBuffer.o: common/DBuffer.cpp common/DBuffer.h \
common/basics.h \
common/DBuffer.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DBuffer.o common/DBuffer.cpp
DString.o: common/DString.cpp common/DString.h \
common/basics.h \
common/DBuffer.h \
common/DString.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DString.o common/DString.cpp
FileBuffer.o: common/FileBuffer.cpp common/FileBuffer.h \
common/DBuffer.h \
common/basics.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o FileBuffer.o common/FileBuffer.cpp
InitList.o: common/InitList.cpp common/InitList.h \
common/InitList.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o InitList.o common/InitList.cpp
misc_comm.o: common/misc_comm.cpp common/basics.h \
common/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misc_comm.o common/misc_comm.cpp
stat.o: common/stat.cpp common/basics.h \
common/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stat.o common/stat.cpp
StringList.o: common/StringList.cpp common/StringList.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o StringList.o common/StringList.cpp
credits.o: endgame/credits.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/credits.h \
endgame/CredReader.h \
endgame/credits.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o credits.o endgame/credits.cpp
CredReader.o: endgame/CredReader.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/CredReader.h \
endgame/CredReader.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o CredReader.o endgame/CredReader.cpp
island.o: endgame/island.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/island.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o island.o endgame/island.cpp
misc_end.o: endgame/misc_end.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misc_end.o endgame/misc_end.cpp
crc.o: extract/crc.cpp extract/crc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o crc.o extract/crc.cpp
extract.o: extract/extract.cpp graphics/safemode.h \
extract/extract.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extract.o extract/extract.cpp
extractfiles.o: extract/extractfiles.cpp common/basics.h \
graphics/safemode.h \
extract/extractfiles.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractfiles.o extract/extractfiles.cpp
extractpxt.o: extract/extractpxt.cpp graphics/safemode.h \
common/basics.h \
extract/extractpxt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractpxt.o extract/extractpxt.cpp
extractstages.o: extract/extractstages.cpp graphics/safemode.h \
common/StringList.h \
common/BList.h \
common/SupportDefs.h \
common/basics.h \
stagedata.h \
maprecord.h \
extract/extractstages.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractstages.o extract/extractstages.cpp
font.o: graphics/font.cpp config.h \
nx.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/font.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o font.o graphics/font.cpp
graphics.o: graphics/graphics.cpp config.h \
graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
dirnames.h \
graphics/graphics.fdh \
l10n_strings.h \
nx_icon.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o graphics.o graphics/graphics.cpp
nxsurface.o: graphics/nxsurface.cpp settings.h \
input.h \
config.h \
graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/nxsurface.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o nxsurface.o graphics/nxsurface.cpp
palette.o: graphics/palette.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/palette.h \
graphics/palette.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o palette.o graphics/palette.cpp
safemode.o: graphics/safemode.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/safemode.h \
graphics/safemode.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o safemode.o graphics/safemode.cpp
sprites.o: graphics/sprites.cpp graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
siflib/sif.h \
common/misc.fdh \
siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectSprites.h \
siflib/sectStringArray.h \
autogen/sprites.h \
common/StringList.h \
dirnames.h \
settings.h \
input.h \
graphics/sprites.h \
graphics/sprites.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sprites.o graphics/sprites.cpp
tileset.o: graphics/tileset.cpp graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/tileset.h \
graphics/tileset.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tileset.o graphics/tileset.cpp
intro.o: intro/intro.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/stdai.h \
intro/intro.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o intro.o intro/intro.cpp
title.o: intro/title.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
intro/title.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o title.o intro/title.cpp
dialog.o: pause/dialog.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/dialog.h \
pause/options.h \
pause/dialog.fdh \
l10n_strings.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o dialog.o pause/dialog.cpp
message.o: pause/message.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/message.h \
pause/options.h \
pause/message.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o message.o pause/message.cpp
objects.o: pause/objects.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
pause/options.h \
pause/objects.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o objects.o pause/objects.cpp
options.o: pause/options.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/options.h \
pause/dialog.h \
pause/message.h \
l10n_strings.h \
pause/options.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o options.o pause/options.cpp
pause.o: pause/pause.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/pause.fdh \
l10n_strings.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pause.o pause/pause.cpp
sectSprites.o: siflib/sectSprites.cpp common/DBuffer.h \
common/basics.h \
common/bufio.h \
common/bufio.fdh \
siflib/sectSprites.h \
siflib/sif.h \
common/misc.fdh \
siflib/sectSprites.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sectSprites.o siflib/sectSprites.cpp
sectStringArray.o: siflib/sectStringArray.cpp common/DBuffer.h \
common/basics.h \
common/DString.h \
common/bufio.h \
common/bufio.fdh \
common/StringList.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectStringArray.h \
siflib/sectStringArray.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sectStringArray.o siflib/sectStringArray.cpp
sif.o: siflib/sif.cpp siflib/sif.h \
common/misc.fdh \
siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectSprites.h \
siflib/sectStringArray.h \
siflib/sif.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sif.o siflib/sif.cpp
sifloader.o: siflib/sifloader.cpp siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sifloader.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sifloader.o siflib/sifloader.cpp
org.o: sound/org.cpp common/basics.h \
sound/org.h \
sound/pxt.h \
sound/sslib.h \
sound/org.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o org.o sound/org.cpp
pxt.o: sound/pxt.cpp sound/pxt.h \
common/basics.h \
sound/sslib.h \
sound/pxt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pxt.o sound/pxt.cpp
sound.o: sound/sound.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
sound/pxt.h \
sound/sound.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sound.o sound/sound.cpp
sslib.o: sound/sslib.cpp common/basics.h \
sound/sslib.h \
sound/sslib.fdh \
sound/sound.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sslib.o sound/sslib.cpp
ItemImage.o: TextBox/ItemImage.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/ItemImage.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ItemImage.o TextBox/ItemImage.cpp
SaveSelect.o: TextBox/SaveSelect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
inventory.h \
TextBox/SaveSelect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o SaveSelect.o TextBox/SaveSelect.cpp
StageSelect.o: TextBox/StageSelect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/StageSelect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o StageSelect.o TextBox/StageSelect.cpp
TextBox.o: TextBox/TextBox.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/TextBox.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o TextBox.o TextBox/TextBox.cpp
YesNoPrompt.o: TextBox/YesNoPrompt.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/YesNoPrompt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o YesNoPrompt.o TextBox/YesNoPrompt.cpp
almond.o: ai/almond/almond.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/almond/almond.h \
ai/almond/almond.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o almond.o ai/almond/almond.cpp
balfrog.o: ai/boss/balfrog.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/balfrog.h \
ai/IrregularBBox.h \
ai/boss/balfrog.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balfrog.o ai/boss/balfrog.cpp
ballos.o: ai/boss/ballos.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/ballos.h \
ai/boss/ballos.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos.o ai/boss/ballos.cpp
core.o: ai/boss/core.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/almond/almond.h \
ai/boss/core.h \
ai/boss/core.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o core.o ai/boss/core.cpp
heavypress.o: ai/boss/heavypress.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/heavypress.h \
ai/boss/heavypress.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o heavypress.o ai/boss/heavypress.cpp
ironhead.o: ai/boss/ironhead.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/ironhead.h \
ai/boss/ironhead.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ironhead.o ai/boss/ironhead.cpp
omega.o: ai/boss/omega.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/omega.h \
ai/boss/omega.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o omega.o ai/boss/omega.cpp
sisters.o: ai/boss/sisters.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/sisters.h \
ai/boss/sisters.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sisters.o ai/boss/sisters.cpp
undead_core.o: ai/boss/undead_core.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/undead_core.h \
ai/boss/undead_core.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o undead_core.o ai/boss/undead_core.cpp
x.o: ai/boss/x.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/x.h \
ai/boss/x.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o x.o ai/boss/x.cpp
egg.o: ai/egg/egg.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/egg/egg.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o egg.o ai/egg/egg.cpp
egg2.o: ai/egg/egg2.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/egg/egg.fdh \
ai/egg/egg2.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o egg2.o ai/egg/egg2.cpp
igor.o: ai/egg/igor.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/egg/igor.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o igor.o ai/egg/igor.cpp
balcony.o: ai/final_battle/balcony.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/balcony.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balcony.o ai/final_battle/balcony.cpp
doctor.o: ai/final_battle/doctor.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/final_battle/doctor.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor.o ai/final_battle/doctor.cpp
doctor_common.o: ai/final_battle/doctor_common.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor_common.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor_common.o ai/final_battle/doctor_common.cpp
doctor_frenzied.o: ai/final_battle/doctor_frenzied.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/final_battle/doctor_frenzied.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor_frenzied.o ai/final_battle/doctor_frenzied.cpp
final_misc.o: ai/final_battle/final_misc.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/final_misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o final_misc.o ai/final_battle/final_misc.cpp
misery_battle.o: ai/final_battle/misery_battle.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/misery.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misery_battle.o ai/final_battle/misery_battle.cpp
sidekicks.o: ai/final_battle/sidekicks.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/sidekicks.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sidekicks.o ai/final_battle/sidekicks.cpp
first_cave.o: ai/first_cave/first_cave.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/first_cave/first_cave.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o first_cave.o ai/first_cave/first_cave.cpp
ballos_misc.o: ai/hell/ballos_misc.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/ballos_misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos_misc.o ai/hell/ballos_misc.cpp
ballos_priest.o: ai/hell/ballos_priest.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/ballos_priest.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos_priest.o ai/hell/ballos_priest.cpp
hell.o: ai/hell/hell.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/hell.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o hell.o ai/hell/hell.cpp
last_cave.o: ai/last_cave/last_cave.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/plantation/plantation.fdh \
ai/sym/sym.fdh \
ai/last_cave/last_cave.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o last_cave.o ai/last_cave/last_cave.cpp
balrog_boss_missiles.o: ai/maze/balrog_boss_missiles.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.h \
ai/maze/balrog_boss_missiles.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_missiles.o ai/maze/balrog_boss_missiles.cpp
critter_purple.o: ai/maze/critter_purple.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/critter_purple.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o critter_purple.o ai/maze/critter_purple.cpp
gaudi.o: ai/maze/gaudi.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/gaudi.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o gaudi.o ai/maze/gaudi.cpp
labyrinth_m.o: ai/maze/labyrinth_m.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/labyrinth_m.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o labyrinth_m.o ai/maze/labyrinth_m.cpp
maze.o: ai/maze/maze.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/maze.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o maze.o ai/maze/maze.cpp
pooh_black.o: ai/maze/pooh_black.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/pooh_black.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pooh_black.o ai/maze/pooh_black.cpp
balrog.o: ai/npc/balrog.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/balrog.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog.o ai/npc/balrog.cpp
curly.o: ai/npc/curly.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/curly.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly.o ai/npc/curly.cpp
curly_ai.o: ai/npc/curly_ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/curly_ai.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly_ai.o ai/npc/curly_ai.cpp
misery_ai.o: ai/npc/misery_ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/misery.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misery_ai.o ai/npc/misery_ai.cpp
npcguest.o: ai/npc/npcguest.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/npcguest.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcguest.o ai/npc/npcguest.cpp
npcplayer.o: ai/npc/npcplayer.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/npcplayer.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcplayer.o ai/npc/npcplayer.cpp
npcregu.o: ai/npc/npcregu.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/npc/npcregu.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcregu.o ai/npc/npcregu.cpp
oside.o: ai/oside/oside.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/sand.fdh \
ai/oside/oside.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o oside.o ai/oside/oside.cpp
plantation.o: ai/plantation/plantation.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/puppy.fdh \
ai/plantation/plantation.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o plantation.o ai/plantation/plantation.cpp
curly_boss.o: ai/sand/curly_boss.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/curly_boss.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly_boss.o ai/sand/curly_boss.cpp
puppy.o: ai/sand/puppy.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/puppy.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o puppy.o ai/sand/puppy.cpp
sand.o: ai/sand/sand.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/egg/egg.fdh \
ai/sand/sand.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sand.o ai/sand/sand.cpp
toroko_frenzied.o: ai/sand/toroko_frenzied.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/toroko_frenzied.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o toroko_frenzied.o ai/sand/toroko_frenzied.cpp
smoke.o: ai/sym/smoke.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sym/smoke.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o smoke.o ai/sym/smoke.cpp
sym.o: ai/sym/sym.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sym/sym.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sym.o ai/sym/sym.cpp
balrog_boss_running.o: ai/village/balrog_boss_running.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.h \
ai/village/balrog_boss_running.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_running.o ai/village/balrog_boss_running.cpp
ma_pignon.o: ai/village/ma_pignon.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/village/ma_pignon.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ma_pignon.o ai/village/ma_pignon.cpp
village.o: ai/village/village.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/village/village.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o village.o ai/village/village.cpp
blade.o: ai/weapons/blade.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/blade.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o blade.o ai/weapons/blade.cpp
bubbler.o: ai/weapons/bubbler.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/bubbler.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o bubbler.o ai/weapons/bubbler.cpp
fireball.o: ai/weapons/fireball.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/fireball.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o fireball.o ai/weapons/fireball.cpp
missile.o: ai/weapons/missile.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/missile.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o missile.o ai/weapons/missile.cpp
nemesis.o: ai/weapons/nemesis.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/nemesis.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o nemesis.o ai/weapons/nemesis.cpp
polar_mgun.o: ai/weapons/polar_mgun.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/polar_mgun.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o polar_mgun.o ai/weapons/polar_mgun.cpp
snake.o: ai/weapons/snake.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/snake.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o snake.o ai/weapons/snake.cpp
spur.o: ai/weapons/spur.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/spur.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o spur.o ai/weapons/spur.cpp
weapons.o: ai/weapons/weapons.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/weapons.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o weapons.o ai/weapons/weapons.cpp
whimstar.o: ai/weapons/whimstar.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/whimstar.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o whimstar.o ai/weapons/whimstar.cpp
balrog_boss_flying.o: ai/weed/balrog_boss_flying.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/balrog_boss_flying.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_flying.o ai/weed/balrog_boss_flying.cpp
frenzied_mimiga.o: ai/weed/frenzied_mimiga.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/frenzied_mimiga.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o frenzied_mimiga.o ai/weed/frenzied_mimiga.cpp
weed.o: ai/weed/weed.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o weed.o ai/weed/weed.cpp
vbesync.o: platform/Linux/vbesync.c
$(CC) -c $(CFLAGS) $(INCPATH) -o vbesync.o platform/Linux/vbesync.c
####### Install
install: FORCE
uninstall: FORCE
FORCE:
================================================
FILE: Makefile.ezx
================================================
#############################################################################
# Makefile for building: NXEngine (Motorola MotoEZX phones)
# More build information can be found here: https://github.com/EXL/NXEngine.git
# Generated by qmake (2.01a) (Qt 4.8.5) on: Fri Nov 8 11:41:28 2013
# Fixed by EXL on: 11/9/2013
#############################################################################
####### Compiler, tools and options
# Please uncomment "-D_L10N_CP1251" for Russian Localization
CC = arm-linux-gnu-gcc
CXX = arm-linux-gnu-g++
DEFINES = -D_320X240 -D_MOTOEZX -D_SDL_MIXER # -D_L10N_CP1251
CFLAGS = `sdl-config --cflags` -pipe -O2 -mcpu=iwmmxt -mtune=iwmmxt -march=iwmmxt -marm $(DEFINES)
CXXFLAGS = `sdl-config --cflags` -pipe -O2 -mcpu=iwmmxt -mtune=iwmmxt -march=iwmmxt -marm $(DEFINES)
INCPATH = -I/opt/toolchains/motoezx/include -I/opt/toolchains/motoezx/include/SDL -I.
LINK = arm-linux-gnu-g++
LFLAGS = -Wl,-O1 -Wl,-rpath,/opt/toolchains/motoezx/lib
LIBS = `sdl-config --libs` -lSDL_mixer -lSDL_ttf -lstdc++ -lm -lfreetype
STRIP = arm-linux-gnu-strip
DEL_FILE = rm -f
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = caret.cpp \
console.cpp \
debug.cpp \
floattext.cpp \
game.cpp \
input.cpp \
inventory.cpp \
main.cpp \
map.cpp \
map_system.cpp \
niku.cpp \
object.cpp \
ObjManager.cpp \
p_arms.cpp \
platform.cpp \
player.cpp \
playerstats.cpp \
profile.cpp \
replay.cpp \
screeneffect.cpp \
settings.cpp \
slope.cpp \
stageboss.cpp \
stagedata.cpp \
statusbar.cpp \
trig.cpp \
tsc.cpp \
ai/ai.cpp \
ai/balrog_common.cpp \
ai/IrregularBBox.cpp \
autogen/AssignSprites.cpp \
autogen/objnames.cpp \
common/BList.cpp \
common/bufio.cpp \
common/DBuffer.cpp \
common/DString.cpp \
common/FileBuffer.cpp \
common/InitList.cpp \
common/misc_comm.cpp \
common/stat.cpp \
common/StringList.cpp \
endgame/credits.cpp \
endgame/CredReader.cpp \
endgame/island.cpp \
endgame/misc_end.cpp \
extract/crc.cpp \
extract/extract.cpp \
extract/extractfiles.cpp \
extract/extractpxt.cpp \
extract/extractstages.cpp \
graphics/font.cpp \
graphics/graphics.cpp \
graphics/nxsurface.cpp \
graphics/palette.cpp \
graphics/safemode.cpp \
graphics/sprites.cpp \
graphics/tileset.cpp \
intro/intro.cpp \
intro/title.cpp \
pause/dialog.cpp \
pause/message.cpp \
pause/objects.cpp \
pause/options.cpp \
pause/pause.cpp \
siflib/sectSprites.cpp \
siflib/sectStringArray.cpp \
siflib/sif.cpp \
siflib/sifloader.cpp \
sound/org.cpp \
sound/pxt.cpp \
sound/sound.cpp \
sound/sslib.cpp \
TextBox/ItemImage.cpp \
TextBox/SaveSelect.cpp \
TextBox/StageSelect.cpp \
TextBox/TextBox.cpp \
TextBox/YesNoPrompt.cpp \
ai/almond/almond.cpp \
ai/boss/balfrog.cpp \
ai/boss/ballos.cpp \
ai/boss/core.cpp \
ai/boss/heavypress.cpp \
ai/boss/ironhead.cpp \
ai/boss/omega.cpp \
ai/boss/sisters.cpp \
ai/boss/undead_core.cpp \
ai/boss/x.cpp \
ai/egg/egg.cpp \
ai/egg/egg2.cpp \
ai/egg/igor.cpp \
ai/final_battle/balcony.cpp \
ai/final_battle/doctor.cpp \
ai/final_battle/doctor_common.cpp \
ai/final_battle/doctor_frenzied.cpp \
ai/final_battle/final_misc.cpp \
ai/final_battle/misery_battle.cpp \
ai/final_battle/sidekicks.cpp \
ai/first_cave/first_cave.cpp \
ai/hell/ballos_misc.cpp \
ai/hell/ballos_priest.cpp \
ai/hell/hell.cpp \
ai/last_cave/last_cave.cpp \
ai/maze/balrog_boss_missiles.cpp \
ai/maze/critter_purple.cpp \
ai/maze/gaudi.cpp \
ai/maze/labyrinth_m.cpp \
ai/maze/maze.cpp \
ai/maze/pooh_black.cpp \
ai/npc/balrog.cpp \
ai/npc/curly.cpp \
ai/npc/curly_ai.cpp \
ai/npc/misery_ai.cpp \
ai/npc/npcguest.cpp \
ai/npc/npcplayer.cpp \
ai/npc/npcregu.cpp \
ai/oside/oside.cpp \
ai/plantation/plantation.cpp \
ai/sand/curly_boss.cpp \
ai/sand/puppy.cpp \
ai/sand/sand.cpp \
ai/sand/toroko_frenzied.cpp \
ai/sym/smoke.cpp \
ai/sym/sym.cpp \
ai/village/balrog_boss_running.cpp \
ai/village/ma_pignon.cpp \
ai/village/village.cpp \
ai/weapons/blade.cpp \
ai/weapons/bubbler.cpp \
ai/weapons/fireball.cpp \
ai/weapons/missile.cpp \
ai/weapons/nemesis.cpp \
ai/weapons/polar_mgun.cpp \
ai/weapons/snake.cpp \
ai/weapons/spur.cpp \
ai/weapons/weapons.cpp \
ai/weapons/whimstar.cpp \
ai/weed/balrog_boss_flying.cpp \
ai/weed/frenzied_mimiga.cpp \
ai/weed/weed.cpp \
platform/Linux/vbesync.c \
platform/EZX/EZX_SDL_PollEvent.cpp
OBJECTS = caret.o \
console.o \
debug.o \
floattext.o \
game.o \
input.o \
inventory.o \
main.o \
map.o \
map_system.o \
niku.o \
object.o \
ObjManager.o \
p_arms.o \
platform.o \
player.o \
playerstats.o \
profile.o \
replay.o \
screeneffect.o \
settings.o \
slope.o \
stageboss.o \
stagedata.o \
statusbar.o \
trig.o \
tsc.o \
ai.o \
balrog_common.o \
IrregularBBox.o \
AssignSprites.o \
objnames.o \
BList.o \
bufio.o \
DBuffer.o \
DString.o \
FileBuffer.o \
InitList.o \
misc_comm.o \
stat.o \
StringList.o \
credits.o \
CredReader.o \
island.o \
misc_end.o \
crc.o \
extract.o \
extractfiles.o \
extractpxt.o \
extractstages.o \
font.o \
graphics.o \
nxsurface.o \
palette.o \
safemode.o \
sprites.o \
tileset.o \
intro.o \
title.o \
dialog.o \
message.o \
objects.o \
options.o \
pause.o \
sectSprites.o \
sectStringArray.o \
sif.o \
sifloader.o \
org.o \
pxt.o \
sound.o \
sslib.o \
ItemImage.o \
SaveSelect.o \
StageSelect.o \
TextBox.o \
YesNoPrompt.o \
almond.o \
balfrog.o \
ballos.o \
core.o \
heavypress.o \
ironhead.o \
omega.o \
sisters.o \
undead_core.o \
x.o \
egg.o \
egg2.o \
igor.o \
balcony.o \
doctor.o \
doctor_common.o \
doctor_frenzied.o \
final_misc.o \
misery_battle.o \
sidekicks.o \
first_cave.o \
ballos_misc.o \
ballos_priest.o \
hell.o \
last_cave.o \
balrog_boss_missiles.o \
critter_purple.o \
gaudi.o \
labyrinth_m.o \
maze.o \
pooh_black.o \
balrog.o \
curly.o \
curly_ai.o \
misery_ai.o \
npcguest.o \
npcplayer.o \
npcregu.o \
oside.o \
plantation.o \
curly_boss.o \
puppy.o \
sand.o \
toroko_frenzied.o \
smoke.o \
sym.o \
balrog_boss_running.o \
ma_pignon.o \
village.o \
blade.o \
bubbler.o \
fireball.o \
missile.o \
nemesis.o \
polar_mgun.o \
snake.o \
spur.o \
weapons.o \
whimstar.o \
balrog_boss_flying.o \
frenzied_mimiga.o \
weed.o \
vbesync.o \
EZX_SDL_PollEvent.o
TARGET = nx.ezx
first: all
####### Implicit rules
.SUFFIXES: .o .c .cpp .cc .cxx .C
.cpp.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cc.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cxx.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.C.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.c.o:
$(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
####### Build rules
all: $(TARGET)
$(TARGET): $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
$(STRIP) $(TARGET)
clean:
-$(DEL_FILE) $(OBJECTS)
-$(DEL_FILE) *~ core *.core
####### Sub-libraries
distclean: clean
-$(DEL_FILE) $(TARGET)
####### Compile
caret.o: caret.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
caret.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o caret.o caret.cpp
console.o: console.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
console.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o console.o console.cpp
debug.o: debug.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
debug.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug.o debug.cpp
floattext.o: floattext.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
floattext.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o floattext.o floattext.cpp
game.o: game.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/island.h \
endgame/credits.h \
endgame/CredReader.h \
intro/intro.h \
intro/title.h \
pause/pause.h \
pause/options.h \
inventory.h \
map_system.h \
profile.h \
game.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o game.o game.cpp
input.o: input.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
input.fdh \
platform/EZX/EZX_SDL_PollEvent.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o input.o input.cpp
inventory.o: inventory.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
inventory.h \
inventory.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o inventory.o inventory.cpp
main.o: main.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/safemode.h \
main.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
map.o: map.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
map.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o map.o map.cpp
map_system.o: map_system.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
map_system.h \
map_system.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o map_system.o map_system.cpp
niku.o: niku.cpp niku.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o niku.o niku.cpp
object.o: object.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
object.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o object.o object.cpp
ObjManager.o: ObjManager.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
ObjManager.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ObjManager.o ObjManager.cpp
p_arms.o: p_arms.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
p_arms.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o p_arms.o p_arms.cpp
platform.o: platform.cpp config.h \
platform.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o platform.o platform.cpp
player.o: player.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
player.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o player.o player.cpp
playerstats.o: playerstats.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
playerstats.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o playerstats.o playerstats.cpp
profile.o: profile.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
profile.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o profile.o profile.cpp
replay.o: replay.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
replay.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o replay.o replay.cpp
screeneffect.o: screeneffect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
screeneffect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o screeneffect.o screeneffect.cpp
settings.o: settings.cpp settings.h \
input.h \
replay.h \
common/FileBuffer.h \
common/DBuffer.h \
common/basics.h \
settings.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o settings.o settings.cpp
slope.o: slope.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
slope.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o slope.o slope.cpp
stageboss.o: stageboss.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
stageboss.fdh \
ai/boss/omega.h \
ai/boss/balfrog.h \
ai/IrregularBBox.h \
ai/boss/x.h \
ai/boss/core.h \
ai/boss/ironhead.h \
ai/boss/sisters.h \
ai/boss/undead_core.h \
ai/boss/heavypress.h \
ai/boss/ballos.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stageboss.o stageboss.cpp
stagedata.o: stagedata.cpp stagedata.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stagedata.o stagedata.cpp
statusbar.o: statusbar.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
statusbar.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o statusbar.o statusbar.cpp
trig.o: trig.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
trig.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o trig.o trig.cpp
tsc.o: tsc.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
vararray.h \
tsc.fdh \
tsc_cmdtbl.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tsc.o tsc.cpp
ai.o: ai/ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/ai.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ai.o ai/ai.cpp
balrog_common.o: ai/balrog_common.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_common.o ai/balrog_common.cpp
IrregularBBox.o: ai/IrregularBBox.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/IrregularBBox.h \
ai/IrregularBBox.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o IrregularBBox.o ai/IrregularBBox.cpp
AssignSprites.o: autogen/AssignSprites.cpp autogen/asdefs.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o AssignSprites.o autogen/AssignSprites.cpp
objnames.o: autogen/objnames.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o objnames.o autogen/objnames.cpp
BList.o: common/BList.cpp common/BList.h \
common/SupportDefs.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o BList.o common/BList.cpp
bufio.o: common/bufio.cpp common/DBuffer.h \
common/basics.h \
common/bufio.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o bufio.o common/bufio.cpp
DBuffer.o: common/DBuffer.cpp common/DBuffer.h \
common/basics.h \
common/DBuffer.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DBuffer.o common/DBuffer.cpp
DString.o: common/DString.cpp common/DString.h \
common/basics.h \
common/DBuffer.h \
common/DString.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DString.o common/DString.cpp
FileBuffer.o: common/FileBuffer.cpp common/FileBuffer.h \
common/DBuffer.h \
common/basics.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o FileBuffer.o common/FileBuffer.cpp
InitList.o: common/InitList.cpp common/InitList.h \
common/InitList.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o InitList.o common/InitList.cpp
misc_comm.o: common/misc_comm.cpp common/basics.h \
common/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misc_comm.o common/misc_comm.cpp
stat.o: common/stat.cpp common/basics.h \
common/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stat.o common/stat.cpp
StringList.o: common/StringList.cpp common/StringList.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o StringList.o common/StringList.cpp
credits.o: endgame/credits.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/credits.h \
endgame/CredReader.h \
endgame/credits.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o credits.o endgame/credits.cpp
CredReader.o: endgame/CredReader.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/CredReader.h \
endgame/CredReader.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o CredReader.o endgame/CredReader.cpp
island.o: endgame/island.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/island.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o island.o endgame/island.cpp
misc_end.o: endgame/misc_end.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misc_end.o endgame/misc_end.cpp
crc.o: extract/crc.cpp extract/crc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o crc.o extract/crc.cpp
extract.o: extract/extract.cpp graphics/safemode.h \
extract/extract.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extract.o extract/extract.cpp
extractfiles.o: extract/extractfiles.cpp common/basics.h \
graphics/safemode.h \
extract/extractfiles.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractfiles.o extract/extractfiles.cpp
extractpxt.o: extract/extractpxt.cpp graphics/safemode.h \
common/basics.h \
extract/extractpxt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractpxt.o extract/extractpxt.cpp
extractstages.o: extract/extractstages.cpp graphics/safemode.h \
common/StringList.h \
common/BList.h \
common/SupportDefs.h \
common/basics.h \
stagedata.h \
maprecord.h \
extract/extractstages.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractstages.o extract/extractstages.cpp
font.o: graphics/font.cpp config.h \
nx.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/font.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o font.o graphics/font.cpp
graphics.o: graphics/graphics.cpp config.h \
graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
dirnames.h \
graphics/graphics.fdh \
l10n_strings.h \
nx_icon.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o graphics.o graphics/graphics.cpp
nxsurface.o: graphics/nxsurface.cpp settings.h \
input.h \
config.h \
graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/nxsurface.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o nxsurface.o graphics/nxsurface.cpp
palette.o: graphics/palette.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/palette.h \
graphics/palette.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o palette.o graphics/palette.cpp
safemode.o: graphics/safemode.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/safemode.h \
graphics/safemode.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o safemode.o graphics/safemode.cpp
sprites.o: graphics/sprites.cpp graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
siflib/sif.h \
common/misc.fdh \
siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectSprites.h \
siflib/sectStringArray.h \
autogen/sprites.h \
common/StringList.h \
dirnames.h \
settings.h \
input.h \
graphics/sprites.h \
graphics/sprites.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sprites.o graphics/sprites.cpp
tileset.o: graphics/tileset.cpp graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/tileset.h \
graphics/tileset.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tileset.o graphics/tileset.cpp
intro.o: intro/intro.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/stdai.h \
intro/intro.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o intro.o intro/intro.cpp
title.o: intro/title.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
intro/title.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o title.o intro/title.cpp
dialog.o: pause/dialog.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/dialog.h \
pause/options.h \
pause/dialog.fdh \
l10n_strings.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o dialog.o pause/dialog.cpp
message.o: pause/message.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/message.h \
pause/options.h \
pause/message.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o message.o pause/message.cpp
objects.o: pause/objects.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
pause/options.h \
pause/objects.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o objects.o pause/objects.cpp
options.o: pause/options.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/options.h \
pause/dialog.h \
pause/message.h \
l10n_strings.h \
pause/options.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o options.o pause/options.cpp
pause.o: pause/pause.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/pause.fdh \
l10n_strings.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pause.o pause/pause.cpp
sectSprites.o: siflib/sectSprites.cpp common/DBuffer.h \
common/basics.h \
common/bufio.h \
common/bufio.fdh \
siflib/sectSprites.h \
siflib/sif.h \
common/misc.fdh \
siflib/sectSprites.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sectSprites.o siflib/sectSprites.cpp
sectStringArray.o: siflib/sectStringArray.cpp common/DBuffer.h \
common/basics.h \
common/DString.h \
common/bufio.h \
common/bufio.fdh \
common/StringList.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectStringArray.h \
siflib/sectStringArray.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sectStringArray.o siflib/sectStringArray.cpp
sif.o: siflib/sif.cpp siflib/sif.h \
common/misc.fdh \
siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectSprites.h \
siflib/sectStringArray.h \
siflib/sif.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sif.o siflib/sif.cpp
sifloader.o: siflib/sifloader.cpp siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sifloader.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sifloader.o siflib/sifloader.cpp
org.o: sound/org.cpp common/basics.h \
sound/org.h \
sound/pxt.h \
sound/sslib.h \
sound/org.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o org.o sound/org.cpp
pxt.o: sound/pxt.cpp sound/pxt.h \
common/basics.h \
sound/sslib.h \
sound/pxt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pxt.o sound/pxt.cpp
sound.o: sound/sound.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
sound/pxt.h \
sound/sound.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sound.o sound/sound.cpp
sslib.o: sound/sslib.cpp common/basics.h \
sound/sslib.h \
sound/sslib.fdh \
sound/sound.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sslib.o sound/sslib.cpp
ItemImage.o: TextBox/ItemImage.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/ItemImage.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ItemImage.o TextBox/ItemImage.cpp
SaveSelect.o: TextBox/SaveSelect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
inventory.h \
TextBox/SaveSelect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o SaveSelect.o TextBox/SaveSelect.cpp
StageSelect.o: TextBox/StageSelect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/StageSelect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o StageSelect.o TextBox/StageSelect.cpp
TextBox.o: TextBox/TextBox.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/TextBox.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o TextBox.o TextBox/TextBox.cpp
YesNoPrompt.o: TextBox/YesNoPrompt.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/YesNoPrompt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o YesNoPrompt.o TextBox/YesNoPrompt.cpp
almond.o: ai/almond/almond.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/almond/almond.h \
ai/almond/almond.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o almond.o ai/almond/almond.cpp
balfrog.o: ai/boss/balfrog.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/balfrog.h \
ai/IrregularBBox.h \
ai/boss/balfrog.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balfrog.o ai/boss/balfrog.cpp
ballos.o: ai/boss/ballos.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/ballos.h \
ai/boss/ballos.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos.o ai/boss/ballos.cpp
core.o: ai/boss/core.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/almond/almond.h \
ai/boss/core.h \
ai/boss/core.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o core.o ai/boss/core.cpp
heavypress.o: ai/boss/heavypress.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/heavypress.h \
ai/boss/heavypress.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o heavypress.o ai/boss/heavypress.cpp
ironhead.o: ai/boss/ironhead.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/ironhead.h \
ai/boss/ironhead.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ironhead.o ai/boss/ironhead.cpp
omega.o: ai/boss/omega.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/omega.h \
ai/boss/omega.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o omega.o ai/boss/omega.cpp
sisters.o: ai/boss/sisters.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/sisters.h \
ai/boss/sisters.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sisters.o ai/boss/sisters.cpp
undead_core.o: ai/boss/undead_core.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/undead_core.h \
ai/boss/undead_core.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o undead_core.o ai/boss/undead_core.cpp
x.o: ai/boss/x.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/x.h \
ai/boss/x.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o x.o ai/boss/x.cpp
egg.o: ai/egg/egg.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/egg/egg.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o egg.o ai/egg/egg.cpp
egg2.o: ai/egg/egg2.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/egg/egg.fdh \
ai/egg/egg2.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o egg2.o ai/egg/egg2.cpp
igor.o: ai/egg/igor.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/egg/igor.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o igor.o ai/egg/igor.cpp
balcony.o: ai/final_battle/balcony.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/balcony.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balcony.o ai/final_battle/balcony.cpp
doctor.o: ai/final_battle/doctor.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/final_battle/doctor.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor.o ai/final_battle/doctor.cpp
doctor_common.o: ai/final_battle/doctor_common.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor_common.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor_common.o ai/final_battle/doctor_common.cpp
doctor_frenzied.o: ai/final_battle/doctor_frenzied.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/final_battle/doctor_frenzied.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor_frenzied.o ai/final_battle/doctor_frenzied.cpp
final_misc.o: ai/final_battle/final_misc.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/final_misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o final_misc.o ai/final_battle/final_misc.cpp
misery_battle.o: ai/final_battle/misery_battle.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/misery.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misery_battle.o ai/final_battle/misery_battle.cpp
sidekicks.o: ai/final_battle/sidekicks.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/sidekicks.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sidekicks.o ai/final_battle/sidekicks.cpp
first_cave.o: ai/first_cave/first_cave.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/first_cave/first_cave.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o first_cave.o ai/first_cave/first_cave.cpp
ballos_misc.o: ai/hell/ballos_misc.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/ballos_misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos_misc.o ai/hell/ballos_misc.cpp
ballos_priest.o: ai/hell/ballos_priest.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/ballos_priest.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos_priest.o ai/hell/ballos_priest.cpp
hell.o: ai/hell/hell.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/hell.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o hell.o ai/hell/hell.cpp
last_cave.o: ai/last_cave/last_cave.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/plantation/plantation.fdh \
ai/sym/sym.fdh \
ai/last_cave/last_cave.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o last_cave.o ai/last_cave/last_cave.cpp
balrog_boss_missiles.o: ai/maze/balrog_boss_missiles.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.h \
ai/maze/balrog_boss_missiles.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_missiles.o ai/maze/balrog_boss_missiles.cpp
critter_purple.o: ai/maze/critter_purple.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/critter_purple.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o critter_purple.o ai/maze/critter_purple.cpp
gaudi.o: ai/maze/gaudi.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/gaudi.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o gaudi.o ai/maze/gaudi.cpp
labyrinth_m.o: ai/maze/labyrinth_m.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/labyrinth_m.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o labyrinth_m.o ai/maze/labyrinth_m.cpp
maze.o: ai/maze/maze.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/maze.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o maze.o ai/maze/maze.cpp
pooh_black.o: ai/maze/pooh_black.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/pooh_black.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pooh_black.o ai/maze/pooh_black.cpp
balrog.o: ai/npc/balrog.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/balrog.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog.o ai/npc/balrog.cpp
curly.o: ai/npc/curly.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/curly.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly.o ai/npc/curly.cpp
curly_ai.o: ai/npc/curly_ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/curly_ai.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly_ai.o ai/npc/curly_ai.cpp
misery_ai.o: ai/npc/misery_ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/misery.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misery_ai.o ai/npc/misery_ai.cpp
npcguest.o: ai/npc/npcguest.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/npcguest.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcguest.o ai/npc/npcguest.cpp
npcplayer.o: ai/npc/npcplayer.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/npcplayer.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcplayer.o ai/npc/npcplayer.cpp
npcregu.o: ai/npc/npcregu.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/npc/npcregu.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcregu.o ai/npc/npcregu.cpp
oside.o: ai/oside/oside.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/sand.fdh \
ai/oside/oside.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o oside.o ai/oside/oside.cpp
plantation.o: ai/plantation/plantation.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/puppy.fdh \
ai/plantation/plantation.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o plantation.o ai/plantation/plantation.cpp
curly_boss.o: ai/sand/curly_boss.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/curly_boss.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly_boss.o ai/sand/curly_boss.cpp
puppy.o: ai/sand/puppy.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/puppy.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o puppy.o ai/sand/puppy.cpp
sand.o: ai/sand/sand.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/egg/egg.fdh \
ai/sand/sand.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sand.o ai/sand/sand.cpp
toroko_frenzied.o: ai/sand/toroko_frenzied.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/toroko_frenzied.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o toroko_frenzied.o ai/sand/toroko_frenzied.cpp
smoke.o: ai/sym/smoke.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sym/smoke.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o smoke.o ai/sym/smoke.cpp
sym.o: ai/sym/sym.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sym/sym.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sym.o ai/sym/sym.cpp
balrog_boss_running.o: ai/village/balrog_boss_running.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.h \
ai/village/balrog_boss_running.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_running.o ai/village/balrog_boss_running.cpp
ma_pignon.o: ai/village/ma_pignon.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/village/ma_pignon.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ma_pignon.o ai/village/ma_pignon.cpp
village.o: ai/village/village.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/village/village.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o village.o ai/village/village.cpp
blade.o: ai/weapons/blade.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/blade.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o blade.o ai/weapons/blade.cpp
bubbler.o: ai/weapons/bubbler.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/bubbler.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o bubbler.o ai/weapons/bubbler.cpp
fireball.o: ai/weapons/fireball.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/fireball.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o fireball.o ai/weapons/fireball.cpp
missile.o: ai/weapons/missile.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/missile.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o missile.o ai/weapons/missile.cpp
nemesis.o: ai/weapons/nemesis.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/nemesis.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o nemesis.o ai/weapons/nemesis.cpp
polar_mgun.o: ai/weapons/polar_mgun.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/polar_mgun.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o polar_mgun.o ai/weapons/polar_mgun.cpp
snake.o: ai/weapons/snake.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/snake.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o snake.o ai/weapons/snake.cpp
spur.o: ai/weapons/spur.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/spur.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o spur.o ai/weapons/spur.cpp
weapons.o: ai/weapons/weapons.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/weapons.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o weapons.o ai/weapons/weapons.cpp
whimstar.o: ai/weapons/whimstar.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/whimstar.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o whimstar.o ai/weapons/whimstar.cpp
balrog_boss_flying.o: ai/weed/balrog_boss_flying.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/balrog_boss_flying.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_flying.o ai/weed/balrog_boss_flying.cpp
frenzied_mimiga.o: ai/weed/frenzied_mimiga.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/frenzied_mimiga.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o frenzied_mimiga.o ai/weed/frenzied_mimiga.cpp
weed.o: ai/weed/weed.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o weed.o ai/weed/weed.cpp
vbesync.o: platform/Linux/vbesync.c
$(CC) -c $(CFLAGS) $(INCPATH) -o vbesync.o platform/Linux/vbesync.c
EZX_SDL_PollEvent.o: platform/EZX/EZX_SDL_PollEvent.cpp platform/EZX/EZX_SDL_PollEvent.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o EZX_SDL_PollEvent.o platform/EZX/EZX_SDL_PollEvent.cpp
####### Install
install: FORCE
uninstall: FORCE
FORCE:
================================================
FILE: Makefile.haiku
================================================
#############################################################################
# Makefile for building: NXEngine (32/64-bits Haiku OS)
# More build information can be found here: https://github.com/EXL/NXEngine.git
# Generated by qmake (2.01a) (Qt 4.8.5) on: Fri Nov 8 11:41:28 2013
# Fixed by EXL on: 10/1/2018
#############################################################################
####### Compiler, tools and options
# Use "setarch x86" command on Haiku OS 32 bit
# Use make DEFINES="-D_L10N_CP1251" -f Makefile.haiku for Russian Localization
CC = gcc
CXX = g++
CFLAGS = -pipe -O2 -D__GNUC_RH_RELEASE__ $(DEFINES)
CXXFLAGS = -pipe -O2 -D__GNUC_RH_RELEASE__ $(DEFINES)
INCPATH = $(shell sdl-config --cflags) -I.
LINK = g++
LFLAGS = -Wl,-O1
LIBS_SHARED = $(shell sdl-config --libs) -lSDL_ttf -lfreetype
STRIP = strip -s
DEL_FILE = rm -f
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = caret.cpp \
console.cpp \
debug.cpp \
floattext.cpp \
game.cpp \
input.cpp \
inventory.cpp \
main.cpp \
map.cpp \
map_system.cpp \
niku.cpp \
object.cpp \
ObjManager.cpp \
p_arms.cpp \
platform.cpp \
player.cpp \
playerstats.cpp \
profile.cpp \
replay.cpp \
screeneffect.cpp \
settings.cpp \
slope.cpp \
stageboss.cpp \
stagedata.cpp \
statusbar.cpp \
trig.cpp \
tsc.cpp \
ai/ai.cpp \
ai/balrog_common.cpp \
ai/IrregularBBox.cpp \
autogen/AssignSprites.cpp \
autogen/objnames.cpp \
common/BList.cpp \
common/bufio.cpp \
common/DBuffer.cpp \
common/DString.cpp \
common/FileBuffer.cpp \
common/InitList.cpp \
common/misc_comm.cpp \
common/stat.cpp \
common/StringList.cpp \
endgame/credits.cpp \
endgame/CredReader.cpp \
endgame/island.cpp \
endgame/misc_end.cpp \
extract/crc.cpp \
extract/extract.cpp \
extract/extractfiles.cpp \
extract/extractpxt.cpp \
extract/extractstages.cpp \
graphics/font.cpp \
graphics/graphics.cpp \
graphics/nxsurface.cpp \
graphics/palette.cpp \
graphics/safemode.cpp \
graphics/sprites.cpp \
graphics/tileset.cpp \
intro/intro.cpp \
intro/title.cpp \
pause/dialog.cpp \
pause/message.cpp \
pause/objects.cpp \
pause/options.cpp \
pause/pause.cpp \
siflib/sectSprites.cpp \
siflib/sectStringArray.cpp \
siflib/sif.cpp \
siflib/sifloader.cpp \
sound/org.cpp \
sound/pxt.cpp \
sound/sound.cpp \
sound/sslib.cpp \
TextBox/ItemImage.cpp \
TextBox/SaveSelect.cpp \
TextBox/StageSelect.cpp \
TextBox/TextBox.cpp \
TextBox/YesNoPrompt.cpp \
ai/almond/almond.cpp \
ai/boss/balfrog.cpp \
ai/boss/ballos.cpp \
ai/boss/core.cpp \
ai/boss/heavypress.cpp \
ai/boss/ironhead.cpp \
ai/boss/omega.cpp \
ai/boss/sisters.cpp \
ai/boss/undead_core.cpp \
ai/boss/x.cpp \
ai/egg/egg.cpp \
ai/egg/egg2.cpp \
ai/egg/igor.cpp \
ai/final_battle/balcony.cpp \
ai/final_battle/doctor.cpp \
ai/final_battle/doctor_common.cpp \
ai/final_battle/doctor_frenzied.cpp \
ai/final_battle/final_misc.cpp \
ai/final_battle/misery_battle.cpp \
ai/final_battle/sidekicks.cpp \
ai/first_cave/first_cave.cpp \
ai/hell/ballos_misc.cpp \
ai/hell/ballos_priest.cpp \
ai/hell/hell.cpp \
ai/last_cave/last_cave.cpp \
ai/maze/balrog_boss_missiles.cpp \
ai/maze/critter_purple.cpp \
ai/maze/gaudi.cpp \
ai/maze/labyrinth_m.cpp \
ai/maze/maze.cpp \
ai/maze/pooh_black.cpp \
ai/npc/balrog.cpp \
ai/npc/curly.cpp \
ai/npc/curly_ai.cpp \
ai/npc/misery_ai.cpp \
ai/npc/npcguest.cpp \
ai/npc/npcplayer.cpp \
ai/npc/npcregu.cpp \
ai/oside/oside.cpp \
ai/plantation/plantation.cpp \
ai/sand/curly_boss.cpp \
ai/sand/puppy.cpp \
ai/sand/sand.cpp \
ai/sand/toroko_frenzied.cpp \
ai/sym/smoke.cpp \
ai/sym/sym.cpp \
ai/village/balrog_boss_running.cpp \
ai/village/ma_pignon.cpp \
ai/village/village.cpp \
ai/weapons/blade.cpp \
ai/weapons/bubbler.cpp \
ai/weapons/fireball.cpp \
ai/weapons/missile.cpp \
ai/weapons/nemesis.cpp \
ai/weapons/polar_mgun.cpp \
ai/weapons/snake.cpp \
ai/weapons/spur.cpp \
ai/weapons/weapons.cpp \
ai/weapons/whimstar.cpp \
ai/weed/balrog_boss_flying.cpp \
ai/weed/frenzied_mimiga.cpp \
ai/weed/weed.cpp \
platform/Linux/vbesync.c
OBJECTS = caret.o \
console.o \
debug.o \
floattext.o \
game.o \
input.o \
inventory.o \
main.o \
map.o \
map_system.o \
niku.o \
object.o \
ObjManager.o \
p_arms.o \
platform.o \
player.o \
playerstats.o \
profile.o \
replay.o \
screeneffect.o \
settings.o \
slope.o \
stageboss.o \
stagedata.o \
statusbar.o \
trig.o \
tsc.o \
ai.o \
balrog_common.o \
IrregularBBox.o \
AssignSprites.o \
objnames.o \
BList.o \
bufio.o \
DBuffer.o \
DString.o \
FileBuffer.o \
InitList.o \
misc_comm.o \
stat.o \
StringList.o \
credits.o \
CredReader.o \
island.o \
misc_end.o \
crc.o \
extract.o \
extractfiles.o \
extractpxt.o \
extractstages.o \
font.o \
graphics.o \
nxsurface.o \
palette.o \
safemode.o \
sprites.o \
tileset.o \
intro.o \
title.o \
dialog.o \
message.o \
objects.o \
options.o \
pause.o \
sectSprites.o \
sectStringArray.o \
sif.o \
sifloader.o \
org.o \
pxt.o \
sound.o \
sslib.o \
ItemImage.o \
SaveSelect.o \
StageSelect.o \
TextBox.o \
YesNoPrompt.o \
almond.o \
balfrog.o \
ballos.o \
core.o \
heavypress.o \
ironhead.o \
omega.o \
sisters.o \
undead_core.o \
x.o \
egg.o \
egg2.o \
igor.o \
balcony.o \
doctor.o \
doctor_common.o \
doctor_frenzied.o \
final_misc.o \
misery_battle.o \
sidekicks.o \
first_cave.o \
ballos_misc.o \
ballos_priest.o \
hell.o \
last_cave.o \
balrog_boss_missiles.o \
critter_purple.o \
gaudi.o \
labyrinth_m.o \
maze.o \
pooh_black.o \
balrog.o \
curly.o \
curly_ai.o \
misery_ai.o \
npcguest.o \
npcplayer.o \
npcregu.o \
oside.o \
plantation.o \
curly_boss.o \
puppy.o \
sand.o \
toroko_frenzied.o \
smoke.o \
sym.o \
balrog_boss_running.o \
ma_pignon.o \
village.o \
blade.o \
bubbler.o \
fireball.o \
missile.o \
nemesis.o \
polar_mgun.o \
snake.o \
spur.o \
weapons.o \
whimstar.o \
balrog_boss_flying.o \
frenzied_mimiga.o \
weed.o \
vbesync.o
TARGET = nx
first: all
####### Implicit rules
.SUFFIXES: .o .c .cpp .cc .cxx .C
.cpp.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cc.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cxx.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.C.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.c.o:
$(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
####### Build rules
all: $(TARGET)
$(TARGET): $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS_SHARED)
$(STRIP) $(TARGET)
clean:
-$(DEL_FILE) $(OBJECTS)
-$(DEL_FILE) *~ core *.core
####### Sub-libraries
distclean: clean
-$(DEL_FILE) $(TARGET)
####### Compile
caret.o: caret.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
caret.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o caret.o caret.cpp
console.o: console.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
console.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o console.o console.cpp
debug.o: debug.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
debug.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug.o debug.cpp
floattext.o: floattext.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
floattext.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o floattext.o floattext.cpp
game.o: game.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/island.h \
endgame/credits.h \
endgame/CredReader.h \
intro/intro.h \
intro/title.h \
pause/pause.h \
pause/options.h \
inventory.h \
map_system.h \
profile.h \
game.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o game.o game.cpp
input.o: input.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
input.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o input.o input.cpp
inventory.o: inventory.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
inventory.h \
inventory.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o inventory.o inventory.cpp
main.o: main.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/safemode.h \
main.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
map.o: map.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
map.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o map.o map.cpp
map_system.o: map_system.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
map_system.h \
map_system.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o map_system.o map_system.cpp
niku.o: niku.cpp niku.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o niku.o niku.cpp
object.o: object.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
object.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o object.o object.cpp
ObjManager.o: ObjManager.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
ObjManager.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ObjManager.o ObjManager.cpp
p_arms.o: p_arms.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
p_arms.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o p_arms.o p_arms.cpp
platform.o: platform.cpp config.h \
platform.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o platform.o platform.cpp
player.o: player.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
player.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o player.o player.cpp
playerstats.o: playerstats.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
playerstats.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o playerstats.o playerstats.cpp
profile.o: profile.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
profile.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o profile.o profile.cpp
replay.o: replay.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
replay.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o replay.o replay.cpp
screeneffect.o: screeneffect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
screeneffect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o screeneffect.o screeneffect.cpp
settings.o: settings.cpp settings.h \
input.h \
replay.h \
common/FileBuffer.h \
common/DBuffer.h \
common/basics.h \
settings.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o settings.o settings.cpp
slope.o: slope.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
slope.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o slope.o slope.cpp
stageboss.o: stageboss.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
stageboss.fdh \
ai/boss/omega.h \
ai/boss/balfrog.h \
ai/IrregularBBox.h \
ai/boss/x.h \
ai/boss/core.h \
ai/boss/ironhead.h \
ai/boss/sisters.h \
ai/boss/undead_core.h \
ai/boss/heavypress.h \
ai/boss/ballos.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stageboss.o stageboss.cpp
stagedata.o: stagedata.cpp stagedata.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stagedata.o stagedata.cpp
statusbar.o: statusbar.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
statusbar.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o statusbar.o statusbar.cpp
trig.o: trig.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
trig.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o trig.o trig.cpp
tsc.o: tsc.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
vararray.h \
tsc.fdh \
tsc_cmdtbl.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tsc.o tsc.cpp
ai.o: ai/ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/ai.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ai.o ai/ai.cpp
balrog_common.o: ai/balrog_common.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_common.o ai/balrog_common.cpp
IrregularBBox.o: ai/IrregularBBox.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/IrregularBBox.h \
ai/IrregularBBox.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o IrregularBBox.o ai/IrregularBBox.cpp
AssignSprites.o: autogen/AssignSprites.cpp autogen/asdefs.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o AssignSprites.o autogen/AssignSprites.cpp
objnames.o: autogen/objnames.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o objnames.o autogen/objnames.cpp
BList.o: common/BList.cpp common/BList.h \
common/SupportDefs.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o BList.o common/BList.cpp
bufio.o: common/bufio.cpp common/DBuffer.h \
common/basics.h \
common/bufio.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o bufio.o common/bufio.cpp
DBuffer.o: common/DBuffer.cpp common/DBuffer.h \
common/basics.h \
common/DBuffer.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DBuffer.o common/DBuffer.cpp
DString.o: common/DString.cpp common/DString.h \
common/basics.h \
common/DBuffer.h \
common/DString.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DString.o common/DString.cpp
FileBuffer.o: common/FileBuffer.cpp common/FileBuffer.h \
common/DBuffer.h \
common/basics.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o FileBuffer.o common/FileBuffer.cpp
InitList.o: common/InitList.cpp common/InitList.h \
common/InitList.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o InitList.o common/InitList.cpp
misc_comm.o: common/misc_comm.cpp common/basics.h \
common/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misc_comm.o common/misc_comm.cpp
stat.o: common/stat.cpp common/basics.h \
common/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stat.o common/stat.cpp
StringList.o: common/StringList.cpp common/StringList.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o StringList.o common/StringList.cpp
credits.o: endgame/credits.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/credits.h \
endgame/CredReader.h \
endgame/credits.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o credits.o endgame/credits.cpp
CredReader.o: endgame/CredReader.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/CredReader.h \
endgame/CredReader.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o CredReader.o endgame/CredReader.cpp
island.o: endgame/island.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/island.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o island.o endgame/island.cpp
misc_end.o: endgame/misc_end.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misc_end.o endgame/misc_end.cpp
crc.o: extract/crc.cpp extract/crc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o crc.o extract/crc.cpp
extract.o: extract/extract.cpp graphics/safemode.h \
extract/extract.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extract.o extract/extract.cpp
extractfiles.o: extract/extractfiles.cpp common/basics.h \
graphics/safemode.h \
extract/extractfiles.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractfiles.o extract/extractfiles.cpp
extractpxt.o: extract/extractpxt.cpp graphics/safemode.h \
common/basics.h \
extract/extractpxt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractpxt.o extract/extractpxt.cpp
extractstages.o: extract/extractstages.cpp graphics/safemode.h \
common/StringList.h \
common/BList.h \
common/SupportDefs.h \
common/basics.h \
stagedata.h \
maprecord.h \
extract/extractstages.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractstages.o extract/extractstages.cpp
font.o: graphics/font.cpp config.h \
nx.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/font.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o font.o graphics/font.cpp
graphics.o: graphics/graphics.cpp config.h \
graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
dirnames.h \
graphics/graphics.fdh \
l10n_strings.h \
nx_icon.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o graphics.o graphics/graphics.cpp
nxsurface.o: graphics/nxsurface.cpp settings.h \
input.h \
config.h \
graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/nxsurface.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o nxsurface.o graphics/nxsurface.cpp
palette.o: graphics/palette.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/palette.h \
graphics/palette.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o palette.o graphics/palette.cpp
safemode.o: graphics/safemode.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/safemode.h \
graphics/safemode.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o safemode.o graphics/safemode.cpp
sprites.o: graphics/sprites.cpp graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
siflib/sif.h \
common/misc.fdh \
siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectSprites.h \
siflib/sectStringArray.h \
autogen/sprites.h \
common/StringList.h \
dirnames.h \
settings.h \
input.h \
graphics/sprites.h \
graphics/sprites.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sprites.o graphics/sprites.cpp
tileset.o: graphics/tileset.cpp graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/tileset.h \
graphics/tileset.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tileset.o graphics/tileset.cpp
intro.o: intro/intro.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/stdai.h \
intro/intro.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o intro.o intro/intro.cpp
title.o: intro/title.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
intro/title.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o title.o intro/title.cpp
dialog.o: pause/dialog.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/dialog.h \
pause/options.h \
pause/dialog.fdh \
l10n_strings.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o dialog.o pause/dialog.cpp
message.o: pause/message.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/message.h \
pause/options.h \
pause/message.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o message.o pause/message.cpp
objects.o: pause/objects.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
pause/options.h \
pause/objects.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o objects.o pause/objects.cpp
options.o: pause/options.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/options.h \
pause/dialog.h \
pause/message.h \
l10n_strings.h \
pause/options.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o options.o pause/options.cpp
pause.o: pause/pause.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/pause.fdh \
l10n_strings.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pause.o pause/pause.cpp
sectSprites.o: siflib/sectSprites.cpp common/DBuffer.h \
common/basics.h \
common/bufio.h \
common/bufio.fdh \
siflib/sectSprites.h \
siflib/sif.h \
common/misc.fdh \
siflib/sectSprites.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sectSprites.o siflib/sectSprites.cpp
sectStringArray.o: siflib/sectStringArray.cpp common/DBuffer.h \
common/basics.h \
common/DString.h \
common/bufio.h \
common/bufio.fdh \
common/StringList.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectStringArray.h \
siflib/sectStringArray.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sectStringArray.o siflib/sectStringArray.cpp
sif.o: siflib/sif.cpp siflib/sif.h \
common/misc.fdh \
siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectSprites.h \
siflib/sectStringArray.h \
siflib/sif.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sif.o siflib/sif.cpp
sifloader.o: siflib/sifloader.cpp siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sifloader.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sifloader.o siflib/sifloader.cpp
org.o: sound/org.cpp common/basics.h \
sound/org.h \
sound/pxt.h \
sound/sslib.h \
sound/org.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o org.o sound/org.cpp
pxt.o: sound/pxt.cpp sound/pxt.h \
common/basics.h \
sound/sslib.h \
sound/pxt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pxt.o sound/pxt.cpp
sound.o: sound/sound.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
sound/pxt.h \
sound/sound.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sound.o sound/sound.cpp
sslib.o: sound/sslib.cpp common/basics.h \
sound/sslib.h \
sound/sslib.fdh \
sound/sound.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sslib.o sound/sslib.cpp
ItemImage.o: TextBox/ItemImage.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/ItemImage.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ItemImage.o TextBox/ItemImage.cpp
SaveSelect.o: TextBox/SaveSelect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
inventory.h \
TextBox/SaveSelect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o SaveSelect.o TextBox/SaveSelect.cpp
StageSelect.o: TextBox/StageSelect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/StageSelect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o StageSelect.o TextBox/StageSelect.cpp
TextBox.o: TextBox/TextBox.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/TextBox.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o TextBox.o TextBox/TextBox.cpp
YesNoPrompt.o: TextBox/YesNoPrompt.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/YesNoPrompt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o YesNoPrompt.o TextBox/YesNoPrompt.cpp
almond.o: ai/almond/almond.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/almond/almond.h \
ai/almond/almond.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o almond.o ai/almond/almond.cpp
balfrog.o: ai/boss/balfrog.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/balfrog.h \
ai/IrregularBBox.h \
ai/boss/balfrog.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balfrog.o ai/boss/balfrog.cpp
ballos.o: ai/boss/ballos.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/ballos.h \
ai/boss/ballos.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos.o ai/boss/ballos.cpp
core.o: ai/boss/core.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/almond/almond.h \
ai/boss/core.h \
ai/boss/core.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o core.o ai/boss/core.cpp
heavypress.o: ai/boss/heavypress.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/heavypress.h \
ai/boss/heavypress.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o heavypress.o ai/boss/heavypress.cpp
ironhead.o: ai/boss/ironhead.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/ironhead.h \
ai/boss/ironhead.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ironhead.o ai/boss/ironhead.cpp
omega.o: ai/boss/omega.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/omega.h \
ai/boss/omega.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o omega.o ai/boss/omega.cpp
sisters.o: ai/boss/sisters.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/sisters.h \
ai/boss/sisters.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sisters.o ai/boss/sisters.cpp
undead_core.o: ai/boss/undead_core.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/undead_core.h \
ai/boss/undead_core.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o undead_core.o ai/boss/undead_core.cpp
x.o: ai/boss/x.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/x.h \
ai/boss/x.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o x.o ai/boss/x.cpp
egg.o: ai/egg/egg.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/egg/egg.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o egg.o ai/egg/egg.cpp
egg2.o: ai/egg/egg2.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/egg/egg.fdh \
ai/egg/egg2.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o egg2.o ai/egg/egg2.cpp
igor.o: ai/egg/igor.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/egg/igor.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o igor.o ai/egg/igor.cpp
balcony.o: ai/final_battle/balcony.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/balcony.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balcony.o ai/final_battle/balcony.cpp
doctor.o: ai/final_battle/doctor.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/final_battle/doctor.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor.o ai/final_battle/doctor.cpp
doctor_common.o: ai/final_battle/doctor_common.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor_common.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor_common.o ai/final_battle/doctor_common.cpp
doctor_frenzied.o: ai/final_battle/doctor_frenzied.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/final_battle/doctor_frenzied.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor_frenzied.o ai/final_battle/doctor_frenzied.cpp
final_misc.o: ai/final_battle/final_misc.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/final_misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o final_misc.o ai/final_battle/final_misc.cpp
misery_battle.o: ai/final_battle/misery_battle.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/misery.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misery_battle.o ai/final_battle/misery_battle.cpp
sidekicks.o: ai/final_battle/sidekicks.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/sidekicks.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sidekicks.o ai/final_battle/sidekicks.cpp
first_cave.o: ai/first_cave/first_cave.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/first_cave/first_cave.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o first_cave.o ai/first_cave/first_cave.cpp
ballos_misc.o: ai/hell/ballos_misc.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/ballos_misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos_misc.o ai/hell/ballos_misc.cpp
ballos_priest.o: ai/hell/ballos_priest.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/ballos_priest.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos_priest.o ai/hell/ballos_priest.cpp
hell.o: ai/hell/hell.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/hell.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o hell.o ai/hell/hell.cpp
last_cave.o: ai/last_cave/last_cave.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/plantation/plantation.fdh \
ai/sym/sym.fdh \
ai/last_cave/last_cave.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o last_cave.o ai/last_cave/last_cave.cpp
balrog_boss_missiles.o: ai/maze/balrog_boss_missiles.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.h \
ai/maze/balrog_boss_missiles.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_missiles.o ai/maze/balrog_boss_missiles.cpp
critter_purple.o: ai/maze/critter_purple.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/critter_purple.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o critter_purple.o ai/maze/critter_purple.cpp
gaudi.o: ai/maze/gaudi.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/gaudi.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o gaudi.o ai/maze/gaudi.cpp
labyrinth_m.o: ai/maze/labyrinth_m.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/labyrinth_m.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o labyrinth_m.o ai/maze/labyrinth_m.cpp
maze.o: ai/maze/maze.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/maze.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o maze.o ai/maze/maze.cpp
pooh_black.o: ai/maze/pooh_black.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/pooh_black.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pooh_black.o ai/maze/pooh_black.cpp
balrog.o: ai/npc/balrog.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/balrog.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog.o ai/npc/balrog.cpp
curly.o: ai/npc/curly.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/curly.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly.o ai/npc/curly.cpp
curly_ai.o: ai/npc/curly_ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/curly_ai.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly_ai.o ai/npc/curly_ai.cpp
misery_ai.o: ai/npc/misery_ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/misery.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misery_ai.o ai/npc/misery_ai.cpp
npcguest.o: ai/npc/npcguest.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/npcguest.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcguest.o ai/npc/npcguest.cpp
npcplayer.o: ai/npc/npcplayer.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/npcplayer.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcplayer.o ai/npc/npcplayer.cpp
npcregu.o: ai/npc/npcregu.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/npc/npcregu.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcregu.o ai/npc/npcregu.cpp
oside.o: ai/oside/oside.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/sand.fdh \
ai/oside/oside.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o oside.o ai/oside/oside.cpp
plantation.o: ai/plantation/plantation.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/puppy.fdh \
ai/plantation/plantation.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o plantation.o ai/plantation/plantation.cpp
curly_boss.o: ai/sand/curly_boss.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/curly_boss.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly_boss.o ai/sand/curly_boss.cpp
puppy.o: ai/sand/puppy.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/puppy.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o puppy.o ai/sand/puppy.cpp
sand.o: ai/sand/sand.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/egg/egg.fdh \
ai/sand/sand.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sand.o ai/sand/sand.cpp
toroko_frenzied.o: ai/sand/toroko_frenzied.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/toroko_frenzied.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o toroko_frenzied.o ai/sand/toroko_frenzied.cpp
smoke.o: ai/sym/smoke.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sym/smoke.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o smoke.o ai/sym/smoke.cpp
sym.o: ai/sym/sym.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sym/sym.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sym.o ai/sym/sym.cpp
balrog_boss_running.o: ai/village/balrog_boss_running.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.h \
ai/village/balrog_boss_running.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_running.o ai/village/balrog_boss_running.cpp
ma_pignon.o: ai/village/ma_pignon.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/village/ma_pignon.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ma_pignon.o ai/village/ma_pignon.cpp
village.o: ai/village/village.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/village/village.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o village.o ai/village/village.cpp
blade.o: ai/weapons/blade.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/blade.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o blade.o ai/weapons/blade.cpp
bubbler.o: ai/weapons/bubbler.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/bubbler.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o bubbler.o ai/weapons/bubbler.cpp
fireball.o: ai/weapons/fireball.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/fireball.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o fireball.o ai/weapons/fireball.cpp
missile.o: ai/weapons/missile.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/missile.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o missile.o ai/weapons/missile.cpp
nemesis.o: ai/weapons/nemesis.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/nemesis.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o nemesis.o ai/weapons/nemesis.cpp
polar_mgun.o: ai/weapons/polar_mgun.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/polar_mgun.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o polar_mgun.o ai/weapons/polar_mgun.cpp
snake.o: ai/weapons/snake.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/snake.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o snake.o ai/weapons/snake.cpp
spur.o: ai/weapons/spur.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/spur.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o spur.o ai/weapons/spur.cpp
weapons.o: ai/weapons/weapons.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/weapons.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o weapons.o ai/weapons/weapons.cpp
whimstar.o: ai/weapons/whimstar.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/whimstar.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o whimstar.o ai/weapons/whimstar.cpp
balrog_boss_flying.o: ai/weed/balrog_boss_flying.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/balrog_boss_flying.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_flying.o ai/weed/balrog_boss_flying.cpp
frenzied_mimiga.o: ai/weed/frenzied_mimiga.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/frenzied_mimiga.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o frenzied_mimiga.o ai/weed/frenzied_mimiga.cpp
weed.o: ai/weed/weed.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o weed.o ai/weed/weed.cpp
vbesync.o: platform/Linux/vbesync.c
$(CC) -c $(CFLAGS) $(INCPATH) -o vbesync.o platform/Linux/vbesync.c
####### Install
install: FORCE
uninstall: FORCE
FORCE:
================================================
FILE: Makefile.linux
================================================
#############################################################################
# Makefile for building: NXEngine (32/64-bits GNU/Linux distros)
# More build information can be found here: https://github.com/EXL/NXEngine.git
# Generated by qmake (2.01a) (Qt 4.8.5) on: Fri Nov 8 11:41:28 2013
# Fixed by EXL on: 11/9/2013
#############################################################################
####### Compiler, tools and options
# Please write "static" for static linking "nx" binary with SDL librares
# Please uncomment "-D_L10N_CP1251" for Russian Localization
BUILD = shared
CC = gcc
CXX = g++
DEFINES = # -D_L10N_CP1251
CFLAGS = -pipe -O2 $(DEFINES)
CXXFLAGS = -pipe -O2 $(DEFINES)
INCPATH = -I/usr/include -I/usr/include/SDL -I/usr/local/include -I/usr/local/include/SDL -I.
LINK = g++
LFLAGS = -Wl,-O1 -Wl,-rpath,/usr/lib
LIBS_SHARED = -lSDL -lSDL_ttf
LIBS_STATIC = /usr/local/lib/libSDLmain.a /usr/local/lib/libSDL.a /usr/local/lib/libSDL_ttf.a -ldl -lpthread -lfreetype
STRIP = strip
DEL_FILE = rm -f
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = caret.cpp \
console.cpp \
debug.cpp \
floattext.cpp \
game.cpp \
input.cpp \
inventory.cpp \
main.cpp \
map.cpp \
map_system.cpp \
niku.cpp \
object.cpp \
ObjManager.cpp \
p_arms.cpp \
platform.cpp \
player.cpp \
playerstats.cpp \
profile.cpp \
replay.cpp \
screeneffect.cpp \
settings.cpp \
slope.cpp \
stageboss.cpp \
stagedata.cpp \
statusbar.cpp \
trig.cpp \
tsc.cpp \
ai/ai.cpp \
ai/balrog_common.cpp \
ai/IrregularBBox.cpp \
autogen/AssignSprites.cpp \
autogen/objnames.cpp \
common/BList.cpp \
common/bufio.cpp \
common/DBuffer.cpp \
common/DString.cpp \
common/FileBuffer.cpp \
common/InitList.cpp \
common/misc_comm.cpp \
common/stat.cpp \
common/StringList.cpp \
endgame/credits.cpp \
endgame/CredReader.cpp \
endgame/island.cpp \
endgame/misc_end.cpp \
extract/crc.cpp \
extract/extract.cpp \
extract/extractfiles.cpp \
extract/extractpxt.cpp \
extract/extractstages.cpp \
graphics/font.cpp \
graphics/graphics.cpp \
graphics/nxsurface.cpp \
graphics/palette.cpp \
graphics/safemode.cpp \
graphics/sprites.cpp \
graphics/tileset.cpp \
intro/intro.cpp \
intro/title.cpp \
pause/dialog.cpp \
pause/message.cpp \
pause/objects.cpp \
pause/options.cpp \
pause/pause.cpp \
siflib/sectSprites.cpp \
siflib/sectStringArray.cpp \
siflib/sif.cpp \
siflib/sifloader.cpp \
sound/org.cpp \
sound/pxt.cpp \
sound/sound.cpp \
sound/sslib.cpp \
TextBox/ItemImage.cpp \
TextBox/SaveSelect.cpp \
TextBox/StageSelect.cpp \
TextBox/TextBox.cpp \
TextBox/YesNoPrompt.cpp \
ai/almond/almond.cpp \
ai/boss/balfrog.cpp \
ai/boss/ballos.cpp \
ai/boss/core.cpp \
ai/boss/heavypress.cpp \
ai/boss/ironhead.cpp \
ai/boss/omega.cpp \
ai/boss/sisters.cpp \
ai/boss/undead_core.cpp \
ai/boss/x.cpp \
ai/egg/egg.cpp \
ai/egg/egg2.cpp \
ai/egg/igor.cpp \
ai/final_battle/balcony.cpp \
ai/final_battle/doctor.cpp \
ai/final_battle/doctor_common.cpp \
ai/final_battle/doctor_frenzied.cpp \
ai/final_battle/final_misc.cpp \
ai/final_battle/misery_battle.cpp \
ai/final_battle/sidekicks.cpp \
ai/first_cave/first_cave.cpp \
ai/hell/ballos_misc.cpp \
ai/hell/ballos_priest.cpp \
ai/hell/hell.cpp \
ai/last_cave/last_cave.cpp \
ai/maze/balrog_boss_missiles.cpp \
ai/maze/critter_purple.cpp \
ai/maze/gaudi.cpp \
ai/maze/labyrinth_m.cpp \
ai/maze/maze.cpp \
ai/maze/pooh_black.cpp \
ai/npc/balrog.cpp \
ai/npc/curly.cpp \
ai/npc/curly_ai.cpp \
ai/npc/misery_ai.cpp \
ai/npc/npcguest.cpp \
ai/npc/npcplayer.cpp \
ai/npc/npcregu.cpp \
ai/oside/oside.cpp \
ai/plantation/plantation.cpp \
ai/sand/curly_boss.cpp \
ai/sand/puppy.cpp \
ai/sand/sand.cpp \
ai/sand/toroko_frenzied.cpp \
ai/sym/smoke.cpp \
ai/sym/sym.cpp \
ai/village/balrog_boss_running.cpp \
ai/village/ma_pignon.cpp \
ai/village/village.cpp \
ai/weapons/blade.cpp \
ai/weapons/bubbler.cpp \
ai/weapons/fireball.cpp \
ai/weapons/missile.cpp \
ai/weapons/nemesis.cpp \
ai/weapons/polar_mgun.cpp \
ai/weapons/snake.cpp \
ai/weapons/spur.cpp \
ai/weapons/weapons.cpp \
ai/weapons/whimstar.cpp \
ai/weed/balrog_boss_flying.cpp \
ai/weed/frenzied_mimiga.cpp \
ai/weed/weed.cpp \
platform/Linux/vbesync.c
OBJECTS = caret.o \
console.o \
debug.o \
floattext.o \
game.o \
input.o \
inventory.o \
main.o \
map.o \
map_system.o \
niku.o \
object.o \
ObjManager.o \
p_arms.o \
platform.o \
player.o \
playerstats.o \
profile.o \
replay.o \
screeneffect.o \
settings.o \
slope.o \
stageboss.o \
stagedata.o \
statusbar.o \
trig.o \
tsc.o \
ai.o \
balrog_common.o \
IrregularBBox.o \
AssignSprites.o \
objnames.o \
BList.o \
bufio.o \
DBuffer.o \
DString.o \
FileBuffer.o \
InitList.o \
misc_comm.o \
stat.o \
StringList.o \
credits.o \
CredReader.o \
island.o \
misc_end.o \
crc.o \
extract.o \
extractfiles.o \
extractpxt.o \
extractstages.o \
font.o \
graphics.o \
nxsurface.o \
palette.o \
safemode.o \
sprites.o \
tileset.o \
intro.o \
title.o \
dialog.o \
message.o \
objects.o \
options.o \
pause.o \
sectSprites.o \
sectStringArray.o \
sif.o \
sifloader.o \
org.o \
pxt.o \
sound.o \
sslib.o \
ItemImage.o \
SaveSelect.o \
StageSelect.o \
TextBox.o \
YesNoPrompt.o \
almond.o \
balfrog.o \
ballos.o \
core.o \
heavypress.o \
ironhead.o \
omega.o \
sisters.o \
undead_core.o \
x.o \
egg.o \
egg2.o \
igor.o \
balcony.o \
doctor.o \
doctor_common.o \
doctor_frenzied.o \
final_misc.o \
misery_battle.o \
sidekicks.o \
first_cave.o \
ballos_misc.o \
ballos_priest.o \
hell.o \
last_cave.o \
balrog_boss_missiles.o \
critter_purple.o \
gaudi.o \
labyrinth_m.o \
maze.o \
pooh_black.o \
balrog.o \
curly.o \
curly_ai.o \
misery_ai.o \
npcguest.o \
npcplayer.o \
npcregu.o \
oside.o \
plantation.o \
curly_boss.o \
puppy.o \
sand.o \
toroko_frenzied.o \
smoke.o \
sym.o \
balrog_boss_running.o \
ma_pignon.o \
village.o \
blade.o \
bubbler.o \
fireball.o \
missile.o \
nemesis.o \
polar_mgun.o \
snake.o \
spur.o \
weapons.o \
whimstar.o \
balrog_boss_flying.o \
frenzied_mimiga.o \
weed.o \
vbesync.o
TARGET = nx
first: all
####### Implicit rules
.SUFFIXES: .o .c .cpp .cc .cxx .C
.cpp.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cc.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cxx.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.C.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.c.o:
$(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
####### Build rules
all: $(TARGET)
$(TARGET): $(OBJECTS)
ifeq ($(BUILD),shared)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS_SHARED)
endif
ifeq ($(BUILD),static)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS_STATIC)
endif
$(STRIP) $(TARGET)
clean:
-$(DEL_FILE) $(OBJECTS)
-$(DEL_FILE) *~ core *.core
####### Sub-libraries
distclean: clean
-$(DEL_FILE) $(TARGET)
####### Compile
caret.o: caret.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
caret.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o caret.o caret.cpp
console.o: console.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
console.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o console.o console.cpp
debug.o: debug.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
debug.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug.o debug.cpp
floattext.o: floattext.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
floattext.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o floattext.o floattext.cpp
game.o: game.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/island.h \
endgame/credits.h \
endgame/CredReader.h \
intro/intro.h \
intro/title.h \
pause/pause.h \
pause/options.h \
inventory.h \
map_system.h \
profile.h \
game.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o game.o game.cpp
input.o: input.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
input.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o input.o input.cpp
inventory.o: inventory.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
inventory.h \
inventory.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o inventory.o inventory.cpp
main.o: main.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/safemode.h \
main.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
map.o: map.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
map.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o map.o map.cpp
map_system.o: map_system.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
map_system.h \
map_system.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o map_system.o map_system.cpp
niku.o: niku.cpp niku.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o niku.o niku.cpp
object.o: object.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
object.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o object.o object.cpp
ObjManager.o: ObjManager.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
ObjManager.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ObjManager.o ObjManager.cpp
p_arms.o: p_arms.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
p_arms.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o p_arms.o p_arms.cpp
platform.o: platform.cpp config.h \
platform.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o platform.o platform.cpp
player.o: player.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
player.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o player.o player.cpp
playerstats.o: playerstats.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
playerstats.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o playerstats.o playerstats.cpp
profile.o: profile.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
profile.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o profile.o profile.cpp
replay.o: replay.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
replay.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o replay.o replay.cpp
screeneffect.o: screeneffect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
screeneffect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o screeneffect.o screeneffect.cpp
settings.o: settings.cpp settings.h \
input.h \
replay.h \
common/FileBuffer.h \
common/DBuffer.h \
common/basics.h \
settings.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o settings.o settings.cpp
slope.o: slope.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
slope.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o slope.o slope.cpp
stageboss.o: stageboss.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
stageboss.fdh \
ai/boss/omega.h \
ai/boss/balfrog.h \
ai/IrregularBBox.h \
ai/boss/x.h \
ai/boss/core.h \
ai/boss/ironhead.h \
ai/boss/sisters.h \
ai/boss/undead_core.h \
ai/boss/heavypress.h \
ai/boss/ballos.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stageboss.o stageboss.cpp
stagedata.o: stagedata.cpp stagedata.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stagedata.o stagedata.cpp
statusbar.o: statusbar.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
statusbar.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o statusbar.o statusbar.cpp
trig.o: trig.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
trig.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o trig.o trig.cpp
tsc.o: tsc.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
vararray.h \
tsc.fdh \
tsc_cmdtbl.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tsc.o tsc.cpp
ai.o: ai/ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/ai.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ai.o ai/ai.cpp
balrog_common.o: ai/balrog_common.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_common.o ai/balrog_common.cpp
IrregularBBox.o: ai/IrregularBBox.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/IrregularBBox.h \
ai/IrregularBBox.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o IrregularBBox.o ai/IrregularBBox.cpp
AssignSprites.o: autogen/AssignSprites.cpp autogen/asdefs.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o AssignSprites.o autogen/AssignSprites.cpp
objnames.o: autogen/objnames.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o objnames.o autogen/objnames.cpp
BList.o: common/BList.cpp common/BList.h \
common/SupportDefs.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o BList.o common/BList.cpp
bufio.o: common/bufio.cpp common/DBuffer.h \
common/basics.h \
common/bufio.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o bufio.o common/bufio.cpp
DBuffer.o: common/DBuffer.cpp common/DBuffer.h \
common/basics.h \
common/DBuffer.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DBuffer.o common/DBuffer.cpp
DString.o: common/DString.cpp common/DString.h \
common/basics.h \
common/DBuffer.h \
common/DString.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DString.o common/DString.cpp
FileBuffer.o: common/FileBuffer.cpp common/FileBuffer.h \
common/DBuffer.h \
common/basics.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o FileBuffer.o common/FileBuffer.cpp
InitList.o: common/InitList.cpp common/InitList.h \
common/InitList.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o InitList.o common/InitList.cpp
misc_comm.o: common/misc_comm.cpp common/basics.h \
common/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misc_comm.o common/misc_comm.cpp
stat.o: common/stat.cpp common/basics.h \
common/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stat.o common/stat.cpp
StringList.o: common/StringList.cpp common/StringList.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o StringList.o common/StringList.cpp
credits.o: endgame/credits.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/credits.h \
endgame/CredReader.h \
endgame/credits.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o credits.o endgame/credits.cpp
CredReader.o: endgame/CredReader.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/CredReader.h \
endgame/CredReader.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o CredReader.o endgame/CredReader.cpp
island.o: endgame/island.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/island.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o island.o endgame/island.cpp
misc_end.o: endgame/misc_end.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misc_end.o endgame/misc_end.cpp
crc.o: extract/crc.cpp extract/crc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o crc.o extract/crc.cpp
extract.o: extract/extract.cpp graphics/safemode.h \
extract/extract.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extract.o extract/extract.cpp
extractfiles.o: extract/extractfiles.cpp common/basics.h \
graphics/safemode.h \
extract/extractfiles.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractfiles.o extract/extractfiles.cpp
extractpxt.o: extract/extractpxt.cpp graphics/safemode.h \
common/basics.h \
extract/extractpxt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractpxt.o extract/extractpxt.cpp
extractstages.o: extract/extractstages.cpp graphics/safemode.h \
common/StringList.h \
common/BList.h \
common/SupportDefs.h \
common/basics.h \
stagedata.h \
maprecord.h \
extract/extractstages.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractstages.o extract/extractstages.cpp
font.o: graphics/font.cpp config.h \
nx.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/font.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o font.o graphics/font.cpp
graphics.o: graphics/graphics.cpp config.h \
graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
dirnames.h \
graphics/graphics.fdh \
l10n_strings.h \
nx_icon.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o graphics.o graphics/graphics.cpp
nxsurface.o: graphics/nxsurface.cpp settings.h \
input.h \
config.h \
graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/nxsurface.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o nxsurface.o graphics/nxsurface.cpp
palette.o: graphics/palette.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/palette.h \
graphics/palette.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o palette.o graphics/palette.cpp
safemode.o: graphics/safemode.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/safemode.h \
graphics/safemode.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o safemode.o graphics/safemode.cpp
sprites.o: graphics/sprites.cpp graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
siflib/sif.h \
common/misc.fdh \
siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectSprites.h \
siflib/sectStringArray.h \
autogen/sprites.h \
common/StringList.h \
dirnames.h \
settings.h \
input.h \
graphics/sprites.h \
graphics/sprites.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sprites.o graphics/sprites.cpp
tileset.o: graphics/tileset.cpp graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/tileset.h \
graphics/tileset.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tileset.o graphics/tileset.cpp
intro.o: intro/intro.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/stdai.h \
intro/intro.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o intro.o intro/intro.cpp
title.o: intro/title.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
intro/title.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o title.o intro/title.cpp
dialog.o: pause/dialog.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/dialog.h \
pause/options.h \
pause/dialog.fdh \
l10n_strings.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o dialog.o pause/dialog.cpp
message.o: pause/message.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/message.h \
pause/options.h \
pause/message.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o message.o pause/message.cpp
objects.o: pause/objects.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
pause/options.h \
pause/objects.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o objects.o pause/objects.cpp
options.o: pause/options.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/options.h \
pause/dialog.h \
pause/message.h \
l10n_strings.h \
pause/options.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o options.o pause/options.cpp
pause.o: pause/pause.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/pause.fdh \
l10n_strings.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pause.o pause/pause.cpp
sectSprites.o: siflib/sectSprites.cpp common/DBuffer.h \
common/basics.h \
common/bufio.h \
common/bufio.fdh \
siflib/sectSprites.h \
siflib/sif.h \
common/misc.fdh \
siflib/sectSprites.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sectSprites.o siflib/sectSprites.cpp
sectStringArray.o: siflib/sectStringArray.cpp common/DBuffer.h \
common/basics.h \
common/DString.h \
common/bufio.h \
common/bufio.fdh \
common/StringList.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectStringArray.h \
siflib/sectStringArray.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sectStringArray.o siflib/sectStringArray.cpp
sif.o: siflib/sif.cpp siflib/sif.h \
common/misc.fdh \
siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectSprites.h \
siflib/sectStringArray.h \
siflib/sif.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sif.o siflib/sif.cpp
sifloader.o: siflib/sifloader.cpp siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sifloader.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sifloader.o siflib/sifloader.cpp
org.o: sound/org.cpp common/basics.h \
sound/org.h \
sound/pxt.h \
sound/sslib.h \
sound/org.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o org.o sound/org.cpp
pxt.o: sound/pxt.cpp sound/pxt.h \
common/basics.h \
sound/sslib.h \
sound/pxt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pxt.o sound/pxt.cpp
sound.o: sound/sound.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
sound/pxt.h \
sound/sound.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sound.o sound/sound.cpp
sslib.o: sound/sslib.cpp common/basics.h \
sound/sslib.h \
sound/sslib.fdh \
sound/sound.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sslib.o sound/sslib.cpp
ItemImage.o: TextBox/ItemImage.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/ItemImage.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ItemImage.o TextBox/ItemImage.cpp
SaveSelect.o: TextBox/SaveSelect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
inventory.h \
TextBox/SaveSelect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o SaveSelect.o TextBox/SaveSelect.cpp
StageSelect.o: TextBox/StageSelect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/StageSelect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o StageSelect.o TextBox/StageSelect.cpp
TextBox.o: TextBox/TextBox.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/TextBox.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o TextBox.o TextBox/TextBox.cpp
YesNoPrompt.o: TextBox/YesNoPrompt.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/YesNoPrompt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o YesNoPrompt.o TextBox/YesNoPrompt.cpp
almond.o: ai/almond/almond.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/almond/almond.h \
ai/almond/almond.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o almond.o ai/almond/almond.cpp
balfrog.o: ai/boss/balfrog.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/balfrog.h \
ai/IrregularBBox.h \
ai/boss/balfrog.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balfrog.o ai/boss/balfrog.cpp
ballos.o: ai/boss/ballos.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/ballos.h \
ai/boss/ballos.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos.o ai/boss/ballos.cpp
core.o: ai/boss/core.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/almond/almond.h \
ai/boss/core.h \
ai/boss/core.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o core.o ai/boss/core.cpp
heavypress.o: ai/boss/heavypress.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/heavypress.h \
ai/boss/heavypress.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o heavypress.o ai/boss/heavypress.cpp
ironhead.o: ai/boss/ironhead.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/ironhead.h \
ai/boss/ironhead.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ironhead.o ai/boss/ironhead.cpp
omega.o: ai/boss/omega.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/omega.h \
ai/boss/omega.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o omega.o ai/boss/omega.cpp
sisters.o: ai/boss/sisters.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/sisters.h \
ai/boss/sisters.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sisters.o ai/boss/sisters.cpp
undead_core.o: ai/boss/undead_core.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/undead_core.h \
ai/boss/undead_core.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o undead_core.o ai/boss/undead_core.cpp
x.o: ai/boss/x.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/x.h \
ai/boss/x.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o x.o ai/boss/x.cpp
egg.o: ai/egg/egg.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/egg/egg.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o egg.o ai/egg/egg.cpp
egg2.o: ai/egg/egg2.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/egg/egg.fdh \
ai/egg/egg2.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o egg2.o ai/egg/egg2.cpp
igor.o: ai/egg/igor.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/egg/igor.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o igor.o ai/egg/igor.cpp
balcony.o: ai/final_battle/balcony.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/balcony.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balcony.o ai/final_battle/balcony.cpp
doctor.o: ai/final_battle/doctor.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/final_battle/doctor.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor.o ai/final_battle/doctor.cpp
doctor_common.o: ai/final_battle/doctor_common.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor_common.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor_common.o ai/final_battle/doctor_common.cpp
doctor_frenzied.o: ai/final_battle/doctor_frenzied.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/final_battle/doctor_frenzied.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor_frenzied.o ai/final_battle/doctor_frenzied.cpp
final_misc.o: ai/final_battle/final_misc.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/final_misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o final_misc.o ai/final_battle/final_misc.cpp
misery_battle.o: ai/final_battle/misery_battle.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/misery.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misery_battle.o ai/final_battle/misery_battle.cpp
sidekicks.o: ai/final_battle/sidekicks.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/sidekicks.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sidekicks.o ai/final_battle/sidekicks.cpp
first_cave.o: ai/first_cave/first_cave.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/first_cave/first_cave.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o first_cave.o ai/first_cave/first_cave.cpp
ballos_misc.o: ai/hell/ballos_misc.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/ballos_misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos_misc.o ai/hell/ballos_misc.cpp
ballos_priest.o: ai/hell/ballos_priest.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/ballos_priest.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos_priest.o ai/hell/ballos_priest.cpp
hell.o: ai/hell/hell.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/hell.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o hell.o ai/hell/hell.cpp
last_cave.o: ai/last_cave/last_cave.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/plantation/plantation.fdh \
ai/sym/sym.fdh \
ai/last_cave/last_cave.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o last_cave.o ai/last_cave/last_cave.cpp
balrog_boss_missiles.o: ai/maze/balrog_boss_missiles.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.h \
ai/maze/balrog_boss_missiles.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_missiles.o ai/maze/balrog_boss_missiles.cpp
critter_purple.o: ai/maze/critter_purple.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/critter_purple.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o critter_purple.o ai/maze/critter_purple.cpp
gaudi.o: ai/maze/gaudi.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/gaudi.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o gaudi.o ai/maze/gaudi.cpp
labyrinth_m.o: ai/maze/labyrinth_m.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/labyrinth_m.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o labyrinth_m.o ai/maze/labyrinth_m.cpp
maze.o: ai/maze/maze.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/maze.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o maze.o ai/maze/maze.cpp
pooh_black.o: ai/maze/pooh_black.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/pooh_black.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pooh_black.o ai/maze/pooh_black.cpp
balrog.o: ai/npc/balrog.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/balrog.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog.o ai/npc/balrog.cpp
curly.o: ai/npc/curly.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/curly.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly.o ai/npc/curly.cpp
curly_ai.o: ai/npc/curly_ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/curly_ai.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly_ai.o ai/npc/curly_ai.cpp
misery_ai.o: ai/npc/misery_ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/misery.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misery_ai.o ai/npc/misery_ai.cpp
npcguest.o: ai/npc/npcguest.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/npcguest.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcguest.o ai/npc/npcguest.cpp
npcplayer.o: ai/npc/npcplayer.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/npcplayer.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcplayer.o ai/npc/npcplayer.cpp
npcregu.o: ai/npc/npcregu.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/npc/npcregu.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcregu.o ai/npc/npcregu.cpp
oside.o: ai/oside/oside.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/sand.fdh \
ai/oside/oside.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o oside.o ai/oside/oside.cpp
plantation.o: ai/plantation/plantation.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/puppy.fdh \
ai/plantation/plantation.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o plantation.o ai/plantation/plantation.cpp
curly_boss.o: ai/sand/curly_boss.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/curly_boss.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly_boss.o ai/sand/curly_boss.cpp
puppy.o: ai/sand/puppy.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/puppy.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o puppy.o ai/sand/puppy.cpp
sand.o: ai/sand/sand.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/egg/egg.fdh \
ai/sand/sand.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sand.o ai/sand/sand.cpp
toroko_frenzied.o: ai/sand/toroko_frenzied.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/toroko_frenzied.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o toroko_frenzied.o ai/sand/toroko_frenzied.cpp
smoke.o: ai/sym/smoke.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sym/smoke.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o smoke.o ai/sym/smoke.cpp
sym.o: ai/sym/sym.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sym/sym.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sym.o ai/sym/sym.cpp
balrog_boss_running.o: ai/village/balrog_boss_running.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.h \
ai/village/balrog_boss_running.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_running.o ai/village/balrog_boss_running.cpp
ma_pignon.o: ai/village/ma_pignon.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/village/ma_pignon.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ma_pignon.o ai/village/ma_pignon.cpp
village.o: ai/village/village.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/village/village.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o village.o ai/village/village.cpp
blade.o: ai/weapons/blade.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/blade.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o blade.o ai/weapons/blade.cpp
bubbler.o: ai/weapons/bubbler.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/bubbler.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o bubbler.o ai/weapons/bubbler.cpp
fireball.o: ai/weapons/fireball.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/fireball.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o fireball.o ai/weapons/fireball.cpp
missile.o: ai/weapons/missile.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/missile.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o missile.o ai/weapons/missile.cpp
nemesis.o: ai/weapons/nemesis.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/nemesis.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o nemesis.o ai/weapons/nemesis.cpp
polar_mgun.o: ai/weapons/polar_mgun.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/polar_mgun.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o polar_mgun.o ai/weapons/polar_mgun.cpp
snake.o: ai/weapons/snake.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/snake.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o snake.o ai/weapons/snake.cpp
spur.o: ai/weapons/spur.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/spur.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o spur.o ai/weapons/spur.cpp
weapons.o: ai/weapons/weapons.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/weapons.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o weapons.o ai/weapons/weapons.cpp
whimstar.o: ai/weapons/whimstar.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/whimstar.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o whimstar.o ai/weapons/whimstar.cpp
balrog_boss_flying.o: ai/weed/balrog_boss_flying.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/balrog_boss_flying.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_flying.o ai/weed/balrog_boss_flying.cpp
frenzied_mimiga.o: ai/weed/frenzied_mimiga.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/frenzied_mimiga.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o frenzied_mimiga.o ai/weed/frenzied_mimiga.cpp
weed.o: ai/weed/weed.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o weed.o ai/weed/weed.cpp
vbesync.o: platform/Linux/vbesync.c
$(CC) -c $(CFLAGS) $(INCPATH) -o vbesync.o platform/Linux/vbesync.c
####### Install
install: FORCE
uninstall: FORCE
FORCE:
================================================
FILE: Makefile.mingw32
================================================
#############################################################################
# Makefile for building: NXEngine (MinGW/MSYS x86 Windows)
# More build information can be found here: https://github.com/EXL/NXEngine.git
# Generated by qmake (2.01a) (Qt 4.8.5) on: Fri Nov 8 11:41:28 2013
# Fixed by EXL on: 11/9/2013
#############################################################################
####### Compiler, tools and options
# Please uncomment "-D_L10N_CP1251" for Russian Localization
CC = gcc
CXX = g++
DEFINES = # -D_L10N_CP1251
CFLAGS = -pipe -O2 -w $(DEFINES)
CXXFLAGS = -pipe -O2 -w -frtti -fexceptions -mthreads $(DEFINES)
INCPATH = -I/mingw/include -I/mingw/include/SDL -I.
LINK = g++
LFLAGS = -static -static-libgcc -static-libstdc++ -Wl,-s -mthreads -Wl,-subsystem,windows
LIBS = nx_res.o -lmingw32 -lSDL_ttf -lfreetype -lpng -lz -lSDLmain -lSDL -lgdi32 -lwinmm
STRIP = mipsel-linux-strip
RES_FILE = nx_res.o
DEL_FILE = rm -f
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = caret.cpp \
console.cpp \
debug.cpp \
floattext.cpp \
game.cpp \
input.cpp \
inventory.cpp \
main.cpp \
map.cpp \
map_system.cpp \
niku.cpp \
object.cpp \
ObjManager.cpp \
p_arms.cpp \
platform.cpp \
player.cpp \
playerstats.cpp \
profile.cpp \
replay.cpp \
screeneffect.cpp \
settings.cpp \
slope.cpp \
stageboss.cpp \
stagedata.cpp \
statusbar.cpp \
trig.cpp \
tsc.cpp \
ai/ai.cpp \
ai/balrog_common.cpp \
ai/IrregularBBox.cpp \
autogen/AssignSprites.cpp \
autogen/objnames.cpp \
common/BList.cpp \
common/bufio.cpp \
common/DBuffer.cpp \
common/DString.cpp \
common/FileBuffer.cpp \
common/InitList.cpp \
common/misc_comm.cpp \
common/stat.cpp \
common/StringList.cpp \
endgame/credits.cpp \
endgame/CredReader.cpp \
endgame/island.cpp \
endgame/misc_end.cpp \
extract/crc.cpp \
extract/extract.cpp \
extract/extractfiles.cpp \
extract/extractpxt.cpp \
extract/extractstages.cpp \
graphics/font.cpp \
graphics/graphics.cpp \
graphics/nxsurface.cpp \
graphics/palette.cpp \
graphics/safemode.cpp \
graphics/sprites.cpp \
graphics/tileset.cpp \
intro/intro.cpp \
intro/title.cpp \
pause/dialog.cpp \
pause/message.cpp \
pause/objects.cpp \
pause/options.cpp \
pause/pause.cpp \
siflib/sectSprites.cpp \
siflib/sectStringArray.cpp \
siflib/sif.cpp \
siflib/sifloader.cpp \
sound/org.cpp \
sound/pxt.cpp \
sound/sound.cpp \
sound/sslib.cpp \
TextBox/ItemImage.cpp \
TextBox/SaveSelect.cpp \
TextBox/StageSelect.cpp \
TextBox/TextBox.cpp \
TextBox/YesNoPrompt.cpp \
ai/almond/almond.cpp \
ai/boss/balfrog.cpp \
ai/boss/ballos.cpp \
ai/boss/core.cpp \
ai/boss/heavypress.cpp \
ai/boss/ironhead.cpp \
ai/boss/omega.cpp \
ai/boss/sisters.cpp \
ai/boss/undead_core.cpp \
ai/boss/x.cpp \
ai/egg/egg.cpp \
ai/egg/egg2.cpp \
ai/egg/igor.cpp \
ai/final_battle/balcony.cpp \
ai/final_battle/doctor.cpp \
ai/final_battle/doctor_common.cpp \
ai/final_battle/doctor_frenzied.cpp \
ai/final_battle/final_misc.cpp \
ai/final_battle/misery_battle.cpp \
ai/final_battle/sidekicks.cpp \
ai/first_cave/first_cave.cpp \
ai/hell/ballos_misc.cpp \
ai/hell/ballos_priest.cpp \
ai/hell/hell.cpp \
ai/last_cave/last_cave.cpp \
ai/maze/balrog_boss_missiles.cpp \
ai/maze/critter_purple.cpp \
ai/maze/gaudi.cpp \
ai/maze/labyrinth_m.cpp \
ai/maze/maze.cpp \
ai/maze/pooh_black.cpp \
ai/npc/balrog.cpp \
ai/npc/curly.cpp \
ai/npc/curly_ai.cpp \
ai/npc/misery_ai.cpp \
ai/npc/npcguest.cpp \
ai/npc/npcplayer.cpp \
ai/npc/npcregu.cpp \
ai/oside/oside.cpp \
ai/plantation/plantation.cpp \
ai/sand/curly_boss.cpp \
ai/sand/puppy.cpp \
ai/sand/sand.cpp \
ai/sand/toroko_frenzied.cpp \
ai/sym/smoke.cpp \
ai/sym/sym.cpp \
ai/village/balrog_boss_running.cpp \
ai/village/ma_pignon.cpp \
ai/village/village.cpp \
ai/weapons/blade.cpp \
ai/weapons/bubbler.cpp \
ai/weapons/fireball.cpp \
ai/weapons/missile.cpp \
ai/weapons/nemesis.cpp \
ai/weapons/polar_mgun.cpp \
ai/weapons/snake.cpp \
ai/weapons/spur.cpp \
ai/weapons/weapons.cpp \
ai/weapons/whimstar.cpp \
ai/weed/balrog_boss_flying.cpp \
ai/weed/frenzied_mimiga.cpp \
ai/weed/weed.cpp \
platform/Linux/vbesync.c
OBJECTS = caret.o \
console.o \
debug.o \
floattext.o \
game.o \
input.o \
inventory.o \
main.o \
map.o \
map_system.o \
niku.o \
object.o \
ObjManager.o \
p_arms.o \
platform.o \
player.o \
playerstats.o \
profile.o \
replay.o \
screeneffect.o \
settings.o \
slope.o \
stageboss.o \
stagedata.o \
statusbar.o \
trig.o \
tsc.o \
ai.o \
balrog_common.o \
IrregularBBox.o \
AssignSprites.o \
objnames.o \
BList.o \
bufio.o \
DBuffer.o \
DString.o \
FileBuffer.o \
InitList.o \
misc_comm.o \
stat.o \
StringList.o \
credits.o \
CredReader.o \
island.o \
misc_end.o \
crc.o \
extract.o \
extractfiles.o \
extractpxt.o \
extractstages.o \
font.o \
graphics.o \
nxsurface.o \
palette.o \
safemode.o \
sprites.o \
tileset.o \
intro.o \
title.o \
dialog.o \
message.o \
objects.o \
options.o \
pause.o \
sectSprites.o \
sectStringArray.o \
sif.o \
sifloader.o \
org.o \
pxt.o \
sound.o \
sslib.o \
ItemImage.o \
SaveSelect.o \
StageSelect.o \
TextBox.o \
YesNoPrompt.o \
almond.o \
balfrog.o \
ballos.o \
core.o \
heavypress.o \
ironhead.o \
omega.o \
sisters.o \
undead_core.o \
x.o \
egg.o \
egg2.o \
igor.o \
balcony.o \
doctor.o \
doctor_common.o \
doctor_frenzied.o \
final_misc.o \
misery_battle.o \
sidekicks.o \
first_cave.o \
ballos_misc.o \
ballos_priest.o \
hell.o \
last_cave.o \
balrog_boss_missiles.o \
critter_purple.o \
gaudi.o \
labyrinth_m.o \
maze.o \
pooh_black.o \
balrog.o \
curly.o \
curly_ai.o \
misery_ai.o \
npcguest.o \
npcplayer.o \
npcregu.o \
oside.o \
plantation.o \
curly_boss.o \
puppy.o \
sand.o \
toroko_frenzied.o \
smoke.o \
sym.o \
balrog_boss_running.o \
ma_pignon.o \
village.o \
blade.o \
bubbler.o \
fireball.o \
missile.o \
nemesis.o \
polar_mgun.o \
snake.o \
spur.o \
weapons.o \
whimstar.o \
balrog_boss_flying.o \
frenzied_mimiga.o \
weed.o \
vbesync.o
TARGET = nx.exe
first: all
####### Implicit rules
.SUFFIXES: .o .c .cpp .cc .cxx .C
.cpp.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cc.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cxx.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.C.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.c.o:
$(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
####### Build rules
all: $(TARGET)
$(TARGET): $(OBJECTS) nx_res.o
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
nx_res.o: nx.rc
windres -i nx.rc -o nx_res.o --include-dir=. $(DEFINES)
clean:
-$(DEL_FILE) $(OBJECTS) nx_res.o
-$(DEL_FILE) *~ core *.core
####### Sub-libraries
distclean: clean
-$(DEL_FILE) $(TARGET)
####### Compile
caret.o: caret.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
caret.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o caret.o caret.cpp
console.o: console.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
console.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o console.o console.cpp
debug.o: debug.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
debug.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug.o debug.cpp
floattext.o: floattext.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
floattext.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o floattext.o floattext.cpp
game.o: game.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/island.h \
endgame/credits.h \
endgame/CredReader.h \
intro/intro.h \
intro/title.h \
pause/pause.h \
pause/options.h \
inventory.h \
map_system.h \
profile.h \
game.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o game.o game.cpp
input.o: input.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
input.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o input.o input.cpp
inventory.o: inventory.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
inventory.h \
inventory.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o inventory.o inventory.cpp
main.o: main.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/safemode.h \
main.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
map.o: map.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
map.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o map.o map.cpp
map_system.o: map_system.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
map_system.h \
map_system.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o map_system.o map_system.cpp
niku.o: niku.cpp niku.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o niku.o niku.cpp
object.o: object.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
object.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o object.o object.cpp
ObjManager.o: ObjManager.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
ObjManager.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ObjManager.o ObjManager.cpp
p_arms.o: p_arms.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
p_arms.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o p_arms.o p_arms.cpp
platform.o: platform.cpp config.h \
platform.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o platform.o platform.cpp
player.o: player.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
player.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o player.o player.cpp
playerstats.o: playerstats.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
playerstats.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o playerstats.o playerstats.cpp
profile.o: profile.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
profile.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o profile.o profile.cpp
replay.o: replay.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
replay.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o replay.o replay.cpp
screeneffect.o: screeneffect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
screeneffect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o screeneffect.o screeneffect.cpp
settings.o: settings.cpp settings.h \
input.h \
replay.h \
common/FileBuffer.h \
common/DBuffer.h \
common/basics.h \
settings.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o settings.o settings.cpp
slope.o: slope.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
slope.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o slope.o slope.cpp
stageboss.o: stageboss.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
stageboss.fdh \
ai/boss/omega.h \
ai/boss/balfrog.h \
ai/IrregularBBox.h \
ai/boss/x.h \
ai/boss/core.h \
ai/boss/ironhead.h \
ai/boss/sisters.h \
ai/boss/undead_core.h \
ai/boss/heavypress.h \
ai/boss/ballos.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stageboss.o stageboss.cpp
stagedata.o: stagedata.cpp stagedata.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stagedata.o stagedata.cpp
statusbar.o: statusbar.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
statusbar.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o statusbar.o statusbar.cpp
trig.o: trig.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
trig.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o trig.o trig.cpp
tsc.o: tsc.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
vararray.h \
tsc.fdh \
tsc_cmdtbl.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tsc.o tsc.cpp
ai.o: ai/ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/ai.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ai.o ai/ai.cpp
balrog_common.o: ai/balrog_common.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_common.o ai/balrog_common.cpp
IrregularBBox.o: ai/IrregularBBox.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/IrregularBBox.h \
ai/IrregularBBox.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o IrregularBBox.o ai/IrregularBBox.cpp
AssignSprites.o: autogen/AssignSprites.cpp autogen/asdefs.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o AssignSprites.o autogen/AssignSprites.cpp
objnames.o: autogen/objnames.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o objnames.o autogen/objnames.cpp
BList.o: common/BList.cpp common/BList.h \
common/SupportDefs.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o BList.o common/BList.cpp
bufio.o: common/bufio.cpp common/DBuffer.h \
common/basics.h \
common/bufio.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o bufio.o common/bufio.cpp
DBuffer.o: common/DBuffer.cpp common/DBuffer.h \
common/basics.h \
common/DBuffer.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DBuffer.o common/DBuffer.cpp
DString.o: common/DString.cpp common/DString.h \
common/basics.h \
common/DBuffer.h \
common/DString.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DString.o common/DString.cpp
FileBuffer.o: common/FileBuffer.cpp common/FileBuffer.h \
common/DBuffer.h \
common/basics.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o FileBuffer.o common/FileBuffer.cpp
InitList.o: common/InitList.cpp common/InitList.h \
common/InitList.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o InitList.o common/InitList.cpp
misc_comm.o: common/misc_comm.cpp common/basics.h \
common/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misc_comm.o common/misc_comm.cpp
stat.o: common/stat.cpp common/basics.h \
common/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stat.o common/stat.cpp
StringList.o: common/StringList.cpp common/StringList.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o StringList.o common/StringList.cpp
credits.o: endgame/credits.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/credits.h \
endgame/CredReader.h \
endgame/credits.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o credits.o endgame/credits.cpp
CredReader.o: endgame/CredReader.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/CredReader.h \
endgame/CredReader.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o CredReader.o endgame/CredReader.cpp
island.o: endgame/island.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/island.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o island.o endgame/island.cpp
misc_end.o: endgame/misc_end.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misc_end.o endgame/misc_end.cpp
crc.o: extract/crc.cpp extract/crc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o crc.o extract/crc.cpp
extract.o: extract/extract.cpp graphics/safemode.h \
extract/extract.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extract.o extract/extract.cpp
extractfiles.o: extract/extractfiles.cpp common/basics.h \
graphics/safemode.h \
extract/extractfiles.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractfiles.o extract/extractfiles.cpp
extractpxt.o: extract/extractpxt.cpp graphics/safemode.h \
common/basics.h \
extract/extractpxt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractpxt.o extract/extractpxt.cpp
extractstages.o: extract/extractstages.cpp graphics/safemode.h \
common/StringList.h \
common/BList.h \
common/SupportDefs.h \
common/basics.h \
stagedata.h \
maprecord.h \
extract/extractstages.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractstages.o extract/extractstages.cpp
font.o: graphics/font.cpp config.h \
nx.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/font.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o font.o graphics/font.cpp
graphics.o: graphics/graphics.cpp config.h \
graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
dirnames.h \
graphics/graphics.fdh \
l10n_strings.h \
nx_icon.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o graphics.o graphics/graphics.cpp
nxsurface.o: graphics/nxsurface.cpp settings.h \
input.h \
config.h \
graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/nxsurface.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o nxsurface.o graphics/nxsurface.cpp
palette.o: graphics/palette.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/palette.h \
graphics/palette.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o palette.o graphics/palette.cpp
safemode.o: graphics/safemode.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/safemode.h \
graphics/safemode.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o safemode.o graphics/safemode.cpp
sprites.o: graphics/sprites.cpp graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
siflib/sif.h \
common/misc.fdh \
siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectSprites.h \
siflib/sectStringArray.h \
autogen/sprites.h \
common/StringList.h \
dirnames.h \
settings.h \
input.h \
graphics/sprites.h \
graphics/sprites.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sprites.o graphics/sprites.cpp
tileset.o: graphics/tileset.cpp graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/tileset.h \
graphics/tileset.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tileset.o graphics/tileset.cpp
intro.o: intro/intro.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/stdai.h \
intro/intro.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o intro.o intro/intro.cpp
title.o: intro/title.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
intro/title.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o title.o intro/title.cpp
dialog.o: pause/dialog.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/dialog.h \
pause/options.h \
pause/dialog.fdh \
l10n_strings.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o dialog.o pause/dialog.cpp
message.o: pause/message.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/message.h \
pause/options.h \
pause/message.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o message.o pause/message.cpp
objects.o: pause/objects.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
pause/options.h \
pause/objects.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o objects.o pause/objects.cpp
options.o: pause/options.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/options.h \
pause/dialog.h \
pause/message.h \
l10n_strings.h \
pause/options.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o options.o pause/options.cpp
pause.o: pause/pause.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/pause.fdh \
l10n_strings.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pause.o pause/pause.cpp
sectSprites.o: siflib/sectSprites.cpp common/DBuffer.h \
common/basics.h \
common/bufio.h \
common/bufio.fdh \
siflib/sectSprites.h \
siflib/sif.h \
common/misc.fdh \
siflib/sectSprites.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sectSprites.o siflib/sectSprites.cpp
sectStringArray.o: siflib/sectStringArray.cpp common/DBuffer.h \
common/basics.h \
common/DString.h \
common/bufio.h \
common/bufio.fdh \
common/StringList.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectStringArray.h \
siflib/sectStringArray.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sectStringArray.o siflib/sectStringArray.cpp
sif.o: siflib/sif.cpp siflib/sif.h \
common/misc.fdh \
siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectSprites.h \
siflib/sectStringArray.h \
siflib/sif.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sif.o siflib/sif.cpp
sifloader.o: siflib/sifloader.cpp siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sifloader.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sifloader.o siflib/sifloader.cpp
org.o: sound/org.cpp common/basics.h \
sound/org.h \
sound/pxt.h \
sound/sslib.h \
sound/org.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o org.o sound/org.cpp
pxt.o: sound/pxt.cpp sound/pxt.h \
common/basics.h \
sound/sslib.h \
sound/pxt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pxt.o sound/pxt.cpp
sound.o: sound/sound.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
sound/pxt.h \
sound/sound.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sound.o sound/sound.cpp
sslib.o: sound/sslib.cpp common/basics.h \
sound/sslib.h \
sound/sslib.fdh \
sound/sound.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sslib.o sound/sslib.cpp
ItemImage.o: TextBox/ItemImage.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/ItemImage.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ItemImage.o TextBox/ItemImage.cpp
SaveSelect.o: TextBox/SaveSelect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
inventory.h \
TextBox/SaveSelect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o SaveSelect.o TextBox/SaveSelect.cpp
StageSelect.o: TextBox/StageSelect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/StageSelect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o StageSelect.o TextBox/StageSelect.cpp
TextBox.o: TextBox/TextBox.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/TextBox.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o TextBox.o TextBox/TextBox.cpp
YesNoPrompt.o: TextBox/YesNoPrompt.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/YesNoPrompt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o YesNoPrompt.o TextBox/YesNoPrompt.cpp
almond.o: ai/almond/almond.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/almond/almond.h \
ai/almond/almond.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o almond.o ai/almond/almond.cpp
balfrog.o: ai/boss/balfrog.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/balfrog.h \
ai/IrregularBBox.h \
ai/boss/balfrog.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balfrog.o ai/boss/balfrog.cpp
ballos.o: ai/boss/ballos.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/ballos.h \
ai/boss/ballos.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos.o ai/boss/ballos.cpp
core.o: ai/boss/core.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/almond/almond.h \
ai/boss/core.h \
ai/boss/core.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o core.o ai/boss/core.cpp
heavypress.o: ai/boss/heavypress.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/heavypress.h \
ai/boss/heavypress.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o heavypress.o ai/boss/heavypress.cpp
ironhead.o: ai/boss/ironhead.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/ironhead.h \
ai/boss/ironhead.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ironhead.o ai/boss/ironhead.cpp
omega.o: ai/boss/omega.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/omega.h \
ai/boss/omega.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o omega.o ai/boss/omega.cpp
sisters.o: ai/boss/sisters.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/sisters.h \
ai/boss/sisters.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sisters.o ai/boss/sisters.cpp
undead_core.o: ai/boss/undead_core.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/undead_core.h \
ai/boss/undead_core.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o undead_core.o ai/boss/undead_core.cpp
x.o: ai/boss/x.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/x.h \
ai/boss/x.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o x.o ai/boss/x.cpp
egg.o: ai/egg/egg.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/egg/egg.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o egg.o ai/egg/egg.cpp
egg2.o: ai/egg/egg2.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/egg/egg.fdh \
ai/egg/egg2.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o egg2.o ai/egg/egg2.cpp
igor.o: ai/egg/igor.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/egg/igor.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o igor.o ai/egg/igor.cpp
balcony.o: ai/final_battle/balcony.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/balcony.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balcony.o ai/final_battle/balcony.cpp
doctor.o: ai/final_battle/doctor.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/final_battle/doctor.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor.o ai/final_battle/doctor.cpp
doctor_common.o: ai/final_battle/doctor_common.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor_common.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor_common.o ai/final_battle/doctor_common.cpp
doctor_frenzied.o: ai/final_battle/doctor_frenzied.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/final_battle/doctor_frenzied.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor_frenzied.o ai/final_battle/doctor_frenzied.cpp
final_misc.o: ai/final_battle/final_misc.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/final_misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o final_misc.o ai/final_battle/final_misc.cpp
misery_battle.o: ai/final_battle/misery_battle.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/misery.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misery_battle.o ai/final_battle/misery_battle.cpp
sidekicks.o: ai/final_battle/sidekicks.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/sidekicks.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sidekicks.o ai/final_battle/sidekicks.cpp
first_cave.o: ai/first_cave/first_cave.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/first_cave/first_cave.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o first_cave.o ai/first_cave/first_cave.cpp
ballos_misc.o: ai/hell/ballos_misc.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/ballos_misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos_misc.o ai/hell/ballos_misc.cpp
ballos_priest.o: ai/hell/ballos_priest.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/ballos_priest.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos_priest.o ai/hell/ballos_priest.cpp
hell.o: ai/hell/hell.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/hell.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o hell.o ai/hell/hell.cpp
last_cave.o: ai/last_cave/last_cave.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/plantation/plantation.fdh \
ai/sym/sym.fdh \
ai/last_cave/last_cave.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o last_cave.o ai/last_cave/last_cave.cpp
balrog_boss_missiles.o: ai/maze/balrog_boss_missiles.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.h \
ai/maze/balrog_boss_missiles.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_missiles.o ai/maze/balrog_boss_missiles.cpp
critter_purple.o: ai/maze/critter_purple.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/critter_purple.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o critter_purple.o ai/maze/critter_purple.cpp
gaudi.o: ai/maze/gaudi.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/gaudi.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o gaudi.o ai/maze/gaudi.cpp
labyrinth_m.o: ai/maze/labyrinth_m.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/labyrinth_m.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o labyrinth_m.o ai/maze/labyrinth_m.cpp
maze.o: ai/maze/maze.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/maze.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o maze.o ai/maze/maze.cpp
pooh_black.o: ai/maze/pooh_black.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/pooh_black.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pooh_black.o ai/maze/pooh_black.cpp
balrog.o: ai/npc/balrog.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/balrog.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog.o ai/npc/balrog.cpp
curly.o: ai/npc/curly.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/curly.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly.o ai/npc/curly.cpp
curly_ai.o: ai/npc/curly_ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/curly_ai.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly_ai.o ai/npc/curly_ai.cpp
misery_ai.o: ai/npc/misery_ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/misery.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misery_ai.o ai/npc/misery_ai.cpp
npcguest.o: ai/npc/npcguest.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/npcguest.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcguest.o ai/npc/npcguest.cpp
npcplayer.o: ai/npc/npcplayer.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/npcplayer.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcplayer.o ai/npc/npcplayer.cpp
npcregu.o: ai/npc/npcregu.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/npc/npcregu.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcregu.o ai/npc/npcregu.cpp
oside.o: ai/oside/oside.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/sand.fdh \
ai/oside/oside.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o oside.o ai/oside/oside.cpp
plantation.o: ai/plantation/plantation.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/puppy.fdh \
ai/plantation/plantation.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o plantation.o ai/plantation/plantation.cpp
curly_boss.o: ai/sand/curly_boss.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/curly_boss.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly_boss.o ai/sand/curly_boss.cpp
puppy.o: ai/sand/puppy.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/puppy.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o puppy.o ai/sand/puppy.cpp
sand.o: ai/sand/sand.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/egg/egg.fdh \
ai/sand/sand.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sand.o ai/sand/sand.cpp
toroko_frenzied.o: ai/sand/toroko_frenzied.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/toroko_frenzied.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o toroko_frenzied.o ai/sand/toroko_frenzied.cpp
smoke.o: ai/sym/smoke.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sym/smoke.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o smoke.o ai/sym/smoke.cpp
sym.o: ai/sym/sym.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sym/sym.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sym.o ai/sym/sym.cpp
balrog_boss_running.o: ai/village/balrog_boss_running.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.h \
ai/village/balrog_boss_running.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_running.o ai/village/balrog_boss_running.cpp
ma_pignon.o: ai/village/ma_pignon.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/village/ma_pignon.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ma_pignon.o ai/village/ma_pignon.cpp
village.o: ai/village/village.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/village/village.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o village.o ai/village/village.cpp
blade.o: ai/weapons/blade.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/blade.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o blade.o ai/weapons/blade.cpp
bubbler.o: ai/weapons/bubbler.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/bubbler.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o bubbler.o ai/weapons/bubbler.cpp
fireball.o: ai/weapons/fireball.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/fireball.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o fireball.o ai/weapons/fireball.cpp
missile.o: ai/weapons/missile.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/missile.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o missile.o ai/weapons/missile.cpp
nemesis.o: ai/weapons/nemesis.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/nemesis.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o nemesis.o ai/weapons/nemesis.cpp
polar_mgun.o: ai/weapons/polar_mgun.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/polar_mgun.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o polar_mgun.o ai/weapons/polar_mgun.cpp
snake.o: ai/weapons/snake.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/snake.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o snake.o ai/weapons/snake.cpp
spur.o: ai/weapons/spur.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/spur.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o spur.o ai/weapons/spur.cpp
weapons.o: ai/weapons/weapons.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/weapons.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o weapons.o ai/weapons/weapons.cpp
whimstar.o: ai/weapons/whimstar.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/whimstar.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o whimstar.o ai/weapons/whimstar.cpp
balrog_boss_flying.o: ai/weed/balrog_boss_flying.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/balrog_boss_flying.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_flying.o ai/weed/balrog_boss_flying.cpp
frenzied_mimiga.o: ai/weed/frenzied_mimiga.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/frenzied_mimiga.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o frenzied_mimiga.o ai/weed/frenzied_mimiga.cpp
weed.o: ai/weed/weed.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o weed.o ai/weed/weed.cpp
vbesync.o: platform/Linux/vbesync.c
$(CC) -c $(CFLAGS) $(INCPATH) -o vbesync.o platform/Linux/vbesync.c
####### Install
install: FORCE
uninstall: FORCE
FORCE:
================================================
FILE: Makefile.motomagx
================================================
#############################################################################
# Makefile for building: NXEngine (Motorola MotoMAGX phones)
# More build information can be found here: https://github.com/EXL/NXEngine.git
# Generated by qmake (2.01a) (Qt 4.8.5) on: Fri Nov 8 11:41:28 2013
# Fixed by EXL on: 11/9/2013
#############################################################################
####### Compiler, tools and options
# Please uncomment "-D_L10N_CP1251" for Russian Localization
CC = arm-linux-gnueabi-gcc
CXX = arm-linux-gnueabi-g++
DEFINES = -D_320X240 -D_MOTOMAGX -D_SDL_MIXER # -D_L10N_CP1251
CFLAGS = `sdl-config --cflags` -pipe -O2 -march=armv6j -mtune=arm1136jf-s -mfpu=vfp $(DEFINES)
CXXFLAGS = `sdl-config --cflags` -pipe -O2 -march=armv6j -mtune=arm1136jf-s -mfpu=vfp $(DEFINES)
INCPATH = -I/opt/toolchains/motomagx/arm-eabi2/include -I/opt/toolchains/motomagx/arm-eabi2/include/SDL -I.
LINK = arm-linux-gnueabi-g++
LFLAGS = -Wl,-O1 -Wl,-rpath,/opt/toolchains/motomagx/arm-eabi2/lib
LIBS = `sdl-config --libs` -lSDL_mixer -lSDL_ttf -lstdc++ -lm -lfreetype
STRIP = arm-linux-gnueabi-strip
DEL_FILE = rm -f
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = caret.cpp \
console.cpp \
debug.cpp \
floattext.cpp \
game.cpp \
input.cpp \
inventory.cpp \
main.cpp \
map.cpp \
map_system.cpp \
niku.cpp \
object.cpp \
ObjManager.cpp \
p_arms.cpp \
platform.cpp \
player.cpp \
playerstats.cpp \
profile.cpp \
replay.cpp \
screeneffect.cpp \
settings.cpp \
slope.cpp \
stageboss.cpp \
stagedata.cpp \
statusbar.cpp \
trig.cpp \
tsc.cpp \
ai/ai.cpp \
ai/balrog_common.cpp \
ai/IrregularBBox.cpp \
autogen/AssignSprites.cpp \
autogen/objnames.cpp \
common/BList.cpp \
common/bufio.cpp \
common/DBuffer.cpp \
common/DString.cpp \
common/FileBuffer.cpp \
common/InitList.cpp \
common/misc_comm.cpp \
common/stat.cpp \
common/StringList.cpp \
endgame/credits.cpp \
endgame/CredReader.cpp \
endgame/island.cpp \
endgame/misc_end.cpp \
extract/crc.cpp \
extract/extract.cpp \
extract/extractfiles.cpp \
extract/extractpxt.cpp \
extract/extractstages.cpp \
graphics/font.cpp \
graphics/graphics.cpp \
graphics/nxsurface.cpp \
graphics/palette.cpp \
graphics/safemode.cpp \
graphics/sprites.cpp \
graphics/tileset.cpp \
intro/intro.cpp \
intro/title.cpp \
pause/dialog.cpp \
pause/message.cpp \
pause/objects.cpp \
pause/options.cpp \
pause/pause.cpp \
siflib/sectSprites.cpp \
siflib/sectStringArray.cpp \
siflib/sif.cpp \
siflib/sifloader.cpp \
sound/org.cpp \
sound/pxt.cpp \
sound/sound.cpp \
sound/sslib.cpp \
TextBox/ItemImage.cpp \
TextBox/SaveSelect.cpp \
TextBox/StageSelect.cpp \
TextBox/TextBox.cpp \
TextBox/YesNoPrompt.cpp \
ai/almond/almond.cpp \
ai/boss/balfrog.cpp \
ai/boss/ballos.cpp \
ai/boss/core.cpp \
ai/boss/heavypress.cpp \
ai/boss/ironhead.cpp \
ai/boss/omega.cpp \
ai/boss/sisters.cpp \
ai/boss/undead_core.cpp \
ai/boss/x.cpp \
ai/egg/egg.cpp \
ai/egg/egg2.cpp \
ai/egg/igor.cpp \
ai/final_battle/balcony.cpp \
ai/final_battle/doctor.cpp \
ai/final_battle/doctor_common.cpp \
ai/final_battle/doctor_frenzied.cpp \
ai/final_battle/final_misc.cpp \
ai/final_battle/misery_battle.cpp \
ai/final_battle/sidekicks.cpp \
ai/first_cave/first_cave.cpp \
ai/hell/ballos_misc.cpp \
ai/hell/ballos_priest.cpp \
ai/hell/hell.cpp \
ai/last_cave/last_cave.cpp \
ai/maze/balrog_boss_missiles.cpp \
ai/maze/critter_purple.cpp \
ai/maze/gaudi.cpp \
ai/maze/labyrinth_m.cpp \
ai/maze/maze.cpp \
ai/maze/pooh_black.cpp \
ai/npc/balrog.cpp \
ai/npc/curly.cpp \
ai/npc/curly_ai.cpp \
ai/npc/misery_ai.cpp \
ai/npc/npcguest.cpp \
ai/npc/npcplayer.cpp \
ai/npc/npcregu.cpp \
ai/oside/oside.cpp \
ai/plantation/plantation.cpp \
ai/sand/curly_boss.cpp \
ai/sand/puppy.cpp \
ai/sand/sand.cpp \
ai/sand/toroko_frenzied.cpp \
ai/sym/smoke.cpp \
ai/sym/sym.cpp \
ai/village/balrog_boss_running.cpp \
ai/village/ma_pignon.cpp \
ai/village/village.cpp \
ai/weapons/blade.cpp \
ai/weapons/bubbler.cpp \
ai/weapons/fireball.cpp \
ai/weapons/missile.cpp \
ai/weapons/nemesis.cpp \
ai/weapons/polar_mgun.cpp \
ai/weapons/snake.cpp \
ai/weapons/spur.cpp \
ai/weapons/weapons.cpp \
ai/weapons/whimstar.cpp \
ai/weed/balrog_boss_flying.cpp \
ai/weed/frenzied_mimiga.cpp \
ai/weed/weed.cpp \
platform/Linux/vbesync.c
OBJECTS = caret.o \
console.o \
debug.o \
floattext.o \
game.o \
input.o \
inventory.o \
main.o \
map.o \
map_system.o \
niku.o \
object.o \
ObjManager.o \
p_arms.o \
platform.o \
player.o \
playerstats.o \
profile.o \
replay.o \
screeneffect.o \
settings.o \
slope.o \
stageboss.o \
stagedata.o \
statusbar.o \
trig.o \
tsc.o \
ai.o \
balrog_common.o \
IrregularBBox.o \
AssignSprites.o \
objnames.o \
BList.o \
bufio.o \
DBuffer.o \
DString.o \
FileBuffer.o \
InitList.o \
misc_comm.o \
stat.o \
StringList.o \
credits.o \
CredReader.o \
island.o \
misc_end.o \
crc.o \
extract.o \
extractfiles.o \
extractpxt.o \
extractstages.o \
font.o \
graphics.o \
nxsurface.o \
palette.o \
safemode.o \
sprites.o \
tileset.o \
intro.o \
title.o \
dialog.o \
message.o \
objects.o \
options.o \
pause.o \
sectSprites.o \
sectStringArray.o \
sif.o \
sifloader.o \
org.o \
pxt.o \
sound.o \
sslib.o \
ItemImage.o \
SaveSelect.o \
StageSelect.o \
TextBox.o \
YesNoPrompt.o \
almond.o \
balfrog.o \
ballos.o \
core.o \
heavypress.o \
ironhead.o \
omega.o \
sisters.o \
undead_core.o \
x.o \
egg.o \
egg2.o \
igor.o \
balcony.o \
doctor.o \
doctor_common.o \
doctor_frenzied.o \
final_misc.o \
misery_battle.o \
sidekicks.o \
first_cave.o \
ballos_misc.o \
ballos_priest.o \
hell.o \
last_cave.o \
balrog_boss_missiles.o \
critter_purple.o \
gaudi.o \
labyrinth_m.o \
maze.o \
pooh_black.o \
balrog.o \
curly.o \
curly_ai.o \
misery_ai.o \
npcguest.o \
npcplayer.o \
npcregu.o \
oside.o \
plantation.o \
curly_boss.o \
puppy.o \
sand.o \
toroko_frenzied.o \
smoke.o \
sym.o \
balrog_boss_running.o \
ma_pignon.o \
village.o \
blade.o \
bubbler.o \
fireball.o \
missile.o \
nemesis.o \
polar_mgun.o \
snake.o \
spur.o \
weapons.o \
whimstar.o \
balrog_boss_flying.o \
frenzied_mimiga.o \
weed.o \
vbesync.o
TARGET = nx.magx
first: all
####### Implicit rules
.SUFFIXES: .o .c .cpp .cc .cxx .C
.cpp.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cc.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cxx.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.C.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.c.o:
$(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
####### Build rules
all: $(TARGET)
$(TARGET): $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
$(STRIP) $(TARGET)
clean:
-$(DEL_FILE) $(OBJECTS)
-$(DEL_FILE) *~ core *.core
####### Sub-libraries
distclean: clean
-$(DEL_FILE) $(TARGET)
####### Compile
caret.o: caret.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
caret.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o caret.o caret.cpp
console.o: console.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
console.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o console.o console.cpp
debug.o: debug.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
debug.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o debug.o debug.cpp
floattext.o: floattext.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
floattext.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o floattext.o floattext.cpp
game.o: game.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/island.h \
endgame/credits.h \
endgame/CredReader.h \
intro/intro.h \
intro/title.h \
pause/pause.h \
pause/options.h \
inventory.h \
map_system.h \
profile.h \
game.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o game.o game.cpp
input.o: input.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
input.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o input.o input.cpp
inventory.o: inventory.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
inventory.h \
inventory.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o inventory.o inventory.cpp
main.o: main.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/safemode.h \
main.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
map.o: map.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
map.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o map.o map.cpp
map_system.o: map_system.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
map_system.h \
map_system.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o map_system.o map_system.cpp
niku.o: niku.cpp niku.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o niku.o niku.cpp
object.o: object.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
object.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o object.o object.cpp
ObjManager.o: ObjManager.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
ObjManager.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ObjManager.o ObjManager.cpp
p_arms.o: p_arms.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
p_arms.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o p_arms.o p_arms.cpp
platform.o: platform.cpp config.h \
platform.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o platform.o platform.cpp
player.o: player.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
player.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o player.o player.cpp
playerstats.o: playerstats.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
playerstats.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o playerstats.o playerstats.cpp
profile.o: profile.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
profile.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o profile.o profile.cpp
replay.o: replay.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
replay.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o replay.o replay.cpp
screeneffect.o: screeneffect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
screeneffect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o screeneffect.o screeneffect.cpp
settings.o: settings.cpp settings.h \
input.h \
replay.h \
common/FileBuffer.h \
common/DBuffer.h \
common/basics.h \
settings.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o settings.o settings.cpp
slope.o: slope.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
slope.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o slope.o slope.cpp
stageboss.o: stageboss.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
stageboss.fdh \
ai/boss/omega.h \
ai/boss/balfrog.h \
ai/IrregularBBox.h \
ai/boss/x.h \
ai/boss/core.h \
ai/boss/ironhead.h \
ai/boss/sisters.h \
ai/boss/undead_core.h \
ai/boss/heavypress.h \
ai/boss/ballos.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stageboss.o stageboss.cpp
stagedata.o: stagedata.cpp stagedata.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stagedata.o stagedata.cpp
statusbar.o: statusbar.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
statusbar.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o statusbar.o statusbar.cpp
trig.o: trig.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
trig.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o trig.o trig.cpp
tsc.o: tsc.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
vararray.h \
tsc.fdh \
tsc_cmdtbl.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tsc.o tsc.cpp
ai.o: ai/ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/ai.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ai.o ai/ai.cpp
balrog_common.o: ai/balrog_common.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_common.o ai/balrog_common.cpp
IrregularBBox.o: ai/IrregularBBox.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/IrregularBBox.h \
ai/IrregularBBox.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o IrregularBBox.o ai/IrregularBBox.cpp
AssignSprites.o: autogen/AssignSprites.cpp autogen/asdefs.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o AssignSprites.o autogen/AssignSprites.cpp
objnames.o: autogen/objnames.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o objnames.o autogen/objnames.cpp
BList.o: common/BList.cpp common/BList.h \
common/SupportDefs.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o BList.o common/BList.cpp
bufio.o: common/bufio.cpp common/DBuffer.h \
common/basics.h \
common/bufio.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o bufio.o common/bufio.cpp
DBuffer.o: common/DBuffer.cpp common/DBuffer.h \
common/basics.h \
common/DBuffer.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DBuffer.o common/DBuffer.cpp
DString.o: common/DString.cpp common/DString.h \
common/basics.h \
common/DBuffer.h \
common/DString.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o DString.o common/DString.cpp
FileBuffer.o: common/FileBuffer.cpp common/FileBuffer.h \
common/DBuffer.h \
common/basics.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o FileBuffer.o common/FileBuffer.cpp
InitList.o: common/InitList.cpp common/InitList.h \
common/InitList.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o InitList.o common/InitList.cpp
misc_comm.o: common/misc_comm.cpp common/basics.h \
common/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misc_comm.o common/misc_comm.cpp
stat.o: common/stat.cpp common/basics.h \
common/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o stat.o common/stat.cpp
StringList.o: common/StringList.cpp common/StringList.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o StringList.o common/StringList.cpp
credits.o: endgame/credits.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/credits.h \
endgame/CredReader.h \
endgame/credits.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o credits.o endgame/credits.cpp
CredReader.o: endgame/CredReader.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/CredReader.h \
endgame/CredReader.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o CredReader.o endgame/CredReader.cpp
island.o: endgame/island.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/island.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o island.o endgame/island.cpp
misc_end.o: endgame/misc_end.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
endgame/misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misc_end.o endgame/misc_end.cpp
crc.o: extract/crc.cpp extract/crc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o crc.o extract/crc.cpp
extract.o: extract/extract.cpp graphics/safemode.h \
extract/extract.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extract.o extract/extract.cpp
extractfiles.o: extract/extractfiles.cpp common/basics.h \
graphics/safemode.h \
extract/extractfiles.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractfiles.o extract/extractfiles.cpp
extractpxt.o: extract/extractpxt.cpp graphics/safemode.h \
common/basics.h \
extract/extractpxt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractpxt.o extract/extractpxt.cpp
extractstages.o: extract/extractstages.cpp graphics/safemode.h \
common/StringList.h \
common/BList.h \
common/SupportDefs.h \
common/basics.h \
stagedata.h \
maprecord.h \
extract/extractstages.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o extractstages.o extract/extractstages.cpp
font.o: graphics/font.cpp config.h \
nx.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/font.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o font.o graphics/font.cpp
graphics.o: graphics/graphics.cpp config.h \
graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
dirnames.h \
graphics/graphics.fdh \
l10n_strings.h \
nx_icon.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o graphics.o graphics/graphics.cpp
nxsurface.o: graphics/nxsurface.cpp settings.h \
input.h \
config.h \
graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/nxsurface.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o nxsurface.o graphics/nxsurface.cpp
palette.o: graphics/palette.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/palette.h \
graphics/palette.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o palette.o graphics/palette.cpp
safemode.o: graphics/safemode.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
graphics/safemode.h \
graphics/safemode.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o safemode.o graphics/safemode.cpp
sprites.o: graphics/sprites.cpp graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
siflib/sif.h \
common/misc.fdh \
siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectSprites.h \
siflib/sectStringArray.h \
autogen/sprites.h \
common/StringList.h \
dirnames.h \
settings.h \
input.h \
graphics/sprites.h \
graphics/sprites.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sprites.o graphics/sprites.cpp
tileset.o: graphics/tileset.cpp graphics/graphics.h \
graphics/nxsurface.h \
common/basics.h \
graphics/tileset.h \
graphics/tileset.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o tileset.o graphics/tileset.cpp
intro.o: intro/intro.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/stdai.h \
intro/intro.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o intro.o intro/intro.cpp
title.o: intro/title.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
intro/title.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o title.o intro/title.cpp
dialog.o: pause/dialog.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/dialog.h \
pause/options.h \
pause/dialog.fdh \
l10n_strings.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o dialog.o pause/dialog.cpp
message.o: pause/message.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/message.h \
pause/options.h \
pause/message.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o message.o pause/message.cpp
objects.o: pause/objects.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
common/llist.h \
pause/options.h \
pause/objects.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o objects.o pause/objects.cpp
options.o: pause/options.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/options.h \
pause/dialog.h \
pause/message.h \
l10n_strings.h \
pause/options.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o options.o pause/options.cpp
pause.o: pause/pause.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
pause/pause.fdh \
l10n_strings.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pause.o pause/pause.cpp
sectSprites.o: siflib/sectSprites.cpp common/DBuffer.h \
common/basics.h \
common/bufio.h \
common/bufio.fdh \
siflib/sectSprites.h \
siflib/sif.h \
common/misc.fdh \
siflib/sectSprites.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sectSprites.o siflib/sectSprites.cpp
sectStringArray.o: siflib/sectStringArray.cpp common/DBuffer.h \
common/basics.h \
common/DString.h \
common/bufio.h \
common/bufio.fdh \
common/StringList.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectStringArray.h \
siflib/sectStringArray.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sectStringArray.o siflib/sectStringArray.cpp
sif.o: siflib/sif.cpp siflib/sif.h \
common/misc.fdh \
siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sectSprites.h \
siflib/sectStringArray.h \
siflib/sif.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sif.o siflib/sif.cpp
sifloader.o: siflib/sifloader.cpp siflib/sifloader.h \
common/BList.h \
common/SupportDefs.h \
siflib/sifloader.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sifloader.o siflib/sifloader.cpp
org.o: sound/org.cpp common/basics.h \
sound/org.h \
sound/pxt.h \
sound/sslib.h \
sound/org.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o org.o sound/org.cpp
pxt.o: sound/pxt.cpp sound/pxt.h \
common/basics.h \
sound/sslib.h \
sound/pxt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pxt.o sound/pxt.cpp
sound.o: sound/sound.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
sound/pxt.h \
sound/sound.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sound.o sound/sound.cpp
sslib.o: sound/sslib.cpp common/basics.h \
sound/sslib.h \
sound/sslib.fdh \
sound/sound.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sslib.o sound/sslib.cpp
ItemImage.o: TextBox/ItemImage.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/ItemImage.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ItemImage.o TextBox/ItemImage.cpp
SaveSelect.o: TextBox/SaveSelect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
profile.h \
inventory.h \
TextBox/SaveSelect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o SaveSelect.o TextBox/SaveSelect.cpp
StageSelect.o: TextBox/StageSelect.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/StageSelect.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o StageSelect.o TextBox/StageSelect.cpp
TextBox.o: TextBox/TextBox.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/TextBox.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o TextBox.o TextBox/TextBox.cpp
YesNoPrompt.o: TextBox/YesNoPrompt.cpp nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
TextBox/YesNoPrompt.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o YesNoPrompt.o TextBox/YesNoPrompt.cpp
almond.o: ai/almond/almond.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/almond/almond.h \
ai/almond/almond.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o almond.o ai/almond/almond.cpp
balfrog.o: ai/boss/balfrog.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/balfrog.h \
ai/IrregularBBox.h \
ai/boss/balfrog.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balfrog.o ai/boss/balfrog.cpp
ballos.o: ai/boss/ballos.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/ballos.h \
ai/boss/ballos.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos.o ai/boss/ballos.cpp
core.o: ai/boss/core.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/almond/almond.h \
ai/boss/core.h \
ai/boss/core.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o core.o ai/boss/core.cpp
heavypress.o: ai/boss/heavypress.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/heavypress.h \
ai/boss/heavypress.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o heavypress.o ai/boss/heavypress.cpp
ironhead.o: ai/boss/ironhead.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/ironhead.h \
ai/boss/ironhead.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ironhead.o ai/boss/ironhead.cpp
omega.o: ai/boss/omega.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/omega.h \
ai/boss/omega.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o omega.o ai/boss/omega.cpp
sisters.o: ai/boss/sisters.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/sisters.h \
ai/boss/sisters.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sisters.o ai/boss/sisters.cpp
undead_core.o: ai/boss/undead_core.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/undead_core.h \
ai/boss/undead_core.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o undead_core.o ai/boss/undead_core.cpp
x.o: ai/boss/x.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/boss/x.h \
ai/boss/x.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o x.o ai/boss/x.cpp
egg.o: ai/egg/egg.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/egg/egg.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o egg.o ai/egg/egg.cpp
egg2.o: ai/egg/egg2.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/egg/egg.fdh \
ai/egg/egg2.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o egg2.o ai/egg/egg2.cpp
igor.o: ai/egg/igor.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/egg/igor.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o igor.o ai/egg/igor.cpp
balcony.o: ai/final_battle/balcony.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/balcony.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balcony.o ai/final_battle/balcony.cpp
doctor.o: ai/final_battle/doctor.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/final_battle/doctor.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor.o ai/final_battle/doctor.cpp
doctor_common.o: ai/final_battle/doctor_common.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor_common.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor_common.o ai/final_battle/doctor_common.cpp
doctor_frenzied.o: ai/final_battle/doctor_frenzied.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/final_battle/doctor_frenzied.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o doctor_frenzied.o ai/final_battle/doctor_frenzied.cpp
final_misc.o: ai/final_battle/final_misc.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/final_misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o final_misc.o ai/final_battle/final_misc.cpp
misery_battle.o: ai/final_battle/misery_battle.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/misery.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misery_battle.o ai/final_battle/misery_battle.cpp
sidekicks.o: ai/final_battle/sidekicks.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/sidekicks.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sidekicks.o ai/final_battle/sidekicks.cpp
first_cave.o: ai/first_cave/first_cave.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/first_cave/first_cave.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o first_cave.o ai/first_cave/first_cave.cpp
ballos_misc.o: ai/hell/ballos_misc.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/ballos_misc.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos_misc.o ai/hell/ballos_misc.cpp
ballos_priest.o: ai/hell/ballos_priest.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/ballos_priest.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ballos_priest.o ai/hell/ballos_priest.cpp
hell.o: ai/hell/hell.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/hell/hell.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o hell.o ai/hell/hell.cpp
last_cave.o: ai/last_cave/last_cave.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/plantation/plantation.fdh \
ai/sym/sym.fdh \
ai/last_cave/last_cave.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o last_cave.o ai/last_cave/last_cave.cpp
balrog_boss_missiles.o: ai/maze/balrog_boss_missiles.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.h \
ai/maze/balrog_boss_missiles.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_missiles.o ai/maze/balrog_boss_missiles.cpp
critter_purple.o: ai/maze/critter_purple.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/critter_purple.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o critter_purple.o ai/maze/critter_purple.cpp
gaudi.o: ai/maze/gaudi.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/gaudi.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o gaudi.o ai/maze/gaudi.cpp
labyrinth_m.o: ai/maze/labyrinth_m.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/labyrinth_m.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o labyrinth_m.o ai/maze/labyrinth_m.cpp
maze.o: ai/maze/maze.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/maze.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o maze.o ai/maze/maze.cpp
pooh_black.o: ai/maze/pooh_black.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/maze/pooh_black.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pooh_black.o ai/maze/pooh_black.cpp
balrog.o: ai/npc/balrog.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/balrog.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog.o ai/npc/balrog.cpp
curly.o: ai/npc/curly.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/curly.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly.o ai/npc/curly.cpp
curly_ai.o: ai/npc/curly_ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/curly_ai.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly_ai.o ai/npc/curly_ai.cpp
misery_ai.o: ai/npc/misery_ai.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/misery.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o misery_ai.o ai/npc/misery_ai.cpp
npcguest.o: ai/npc/npcguest.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/npcguest.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcguest.o ai/npc/npcguest.cpp
npcplayer.o: ai/npc/npcplayer.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/npc/npcplayer.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcplayer.o ai/npc/npcplayer.cpp
npcregu.o: ai/npc/npcregu.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/final_battle/doctor.h \
ai/npc/npcregu.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o npcregu.o ai/npc/npcregu.cpp
oside.o: ai/oside/oside.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/sand.fdh \
ai/oside/oside.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o oside.o ai/oside/oside.cpp
plantation.o: ai/plantation/plantation.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/puppy.fdh \
ai/plantation/plantation.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o plantation.o ai/plantation/plantation.cpp
curly_boss.o: ai/sand/curly_boss.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/curly_boss.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o curly_boss.o ai/sand/curly_boss.cpp
puppy.o: ai/sand/puppy.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/puppy.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o puppy.o ai/sand/puppy.cpp
sand.o: ai/sand/sand.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/egg/egg.fdh \
ai/sand/sand.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sand.o ai/sand/sand.cpp
toroko_frenzied.o: ai/sand/toroko_frenzied.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sand/toroko_frenzied.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o toroko_frenzied.o ai/sand/toroko_frenzied.cpp
smoke.o: ai/sym/smoke.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sym/smoke.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o smoke.o ai/sym/smoke.cpp
sym.o: ai/sym/sym.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/sym/sym.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o sym.o ai/sym/sym.cpp
balrog_boss_running.o: ai/village/balrog_boss_running.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/balrog_common.h \
ai/village/balrog_boss_running.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_running.o ai/village/balrog_boss_running.cpp
ma_pignon.o: ai/village/ma_pignon.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/village/ma_pignon.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o ma_pignon.o ai/village/ma_pignon.cpp
village.o: ai/village/village.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh \
ai/village/village.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o village.o ai/village/village.cpp
blade.o: ai/weapons/blade.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/blade.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o blade.o ai/weapons/blade.cpp
bubbler.o: ai/weapons/bubbler.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/bubbler.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o bubbler.o ai/weapons/bubbler.cpp
fireball.o: ai/weapons/fireball.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/fireball.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o fireball.o ai/weapons/fireball.cpp
missile.o: ai/weapons/missile.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/missile.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o missile.o ai/weapons/missile.cpp
nemesis.o: ai/weapons/nemesis.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/nemesis.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o nemesis.o ai/weapons/nemesis.cpp
polar_mgun.o: ai/weapons/polar_mgun.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/polar_mgun.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o polar_mgun.o ai/weapons/polar_mgun.cpp
snake.o: ai/weapons/snake.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/snake.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o snake.o ai/weapons/snake.cpp
spur.o: ai/weapons/spur.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/spur.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o spur.o ai/weapons/spur.cpp
weapons.o: ai/weapons/weapons.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/weapons.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o weapons.o ai/weapons/weapons.cpp
whimstar.o: ai/weapons/whimstar.cpp ai/weapons/weapons.h \
ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weapons/whimstar.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o whimstar.o ai/weapons/whimstar.cpp
balrog_boss_flying.o: ai/weed/balrog_boss_flying.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/balrog_boss_flying.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o balrog_boss_flying.o ai/weed/balrog_boss_flying.cpp
frenzied_mimiga.o: ai/weed/frenzied_mimiga.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/frenzied_mimiga.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o frenzied_mimiga.o ai/weed/frenzied_mimiga.cpp
weed.o: ai/weed/weed.cpp ai/stdai.h \
nx.h \
config.h \
common/basics.h \
common/BList.h \
common/SupportDefs.h \
common/StringList.h \
common/DBuffer.h \
common/DString.h \
common/InitList.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/tileset.h \
graphics/sprites.h \
siflib/sif.h \
common/misc.fdh \
trig.h \
autogen/sprites.h \
dirnames.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
TextBox/ItemImage.h \
TextBox/StageSelect.h \
TextBox/SaveSelect.h \
graphics/font.h \
input.h \
tsc.h \
stageboss.h \
ai/ai.h \
map.h \
maprecord.h \
stagedata.h \
statusbar.h \
floattext.h \
object.h \
ObjManager.h \
console.h \
debug.h \
game.h \
caret.h \
screeneffect.h \
settings.h \
slope.h \
player.h \
p_arms.h \
ai/weapons/whimstar.h \
replay.h \
common/FileBuffer.h \
platform.h \
sound/sound.h \
ai/weed/weed.fdh
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o weed.o ai/weed/weed.cpp
vbesync.o: platform/Linux/vbesync.c
$(CC) -c $(CFLAGS) $(INCPATH) -o vbesync.o platform/Linux/vbesync.c
####### Install
install: FORCE
uninstall: FORCE
FORCE:
================================================
FILE: NXEngine.pro
================================================
######################################################################
# Written by EXL on Sun Sep 1 11:04:56 2013
######################################################################
# Platform Defines
# -D_480X272 - Use widescreen 480x272 resolution.
# -D_320X240 - Use normal 320x240 resolution.
# -D_DINGUX - Dingux platform and keyboard layout (Ritmix RZX-50, Dingoo A320, Dingoo A380, etc).
# -D_MOTOMAGX - MotoMAGX platform and keyboard layout (Motorola ZN5, Z6, E8, EM30, VE66, etc).
# -D_MOTOEZX - MotoEZX platform and keyboard layout (Motorola E2, E6, A1200, A1600).
# -D_SDL_MIXER - Don't use generatining music, *.xm and sounds playing via SDL_mixer.
# -D_DEBUG - Enable detailed debug output to the console.
# -D_L10N_CP1251 - Enable russian localization (need a *.ttf font and russian data-files).
# Global App Settings
TEMPLATE = app
CONFIG -= console
CONFIG -= app_bundle
CONFIG -= qt
CONFIG += warn_off
CONFIG -= l10n_rus
# Platform section
# Write here the necessary platform.
# Available platforms (only for linux-mips-g++):
######################
# platform-rzx50 (default)
# platform-a320
######################
linux-mips-g++: CONFIG += platform-rzx50
# Targets
win32-g++ | linux-g++ | linux-g++-64 { # Host
TARGET = nx
} linux-mips-g++ {
TARGET = nx.dge
} linux-arm-gnueabi-g++ { # MotoMAGX
TARGET = nx.magx
} linux-arm-gnu-g++ | iwmmxt_le-g++ { # MotoEZX
TARGET = nx.ezx
}
# Strip release binary
CONFIG(release, debug|release) {
!win32-g++: QMAKE_POST_LINK += $(STRIP) $(TARGET)
}
# Defines
win32-g++ | linux-g++ | linux-g++-64 { # Host
DEFINES +=
} linux-mips-g++ { # Dingux
CONFIG(platform-rzx50, platform-rzx50 | platform-a320) { # RZX-50
DEFINES += _480X272 _DINGUX _SDL_MIXER
} CONFIG(platform-a320, platform-rzx50 | platform-a320) { # A320
DEFINES += _320X240 _DINGUX _SDL_MIXER
}
} linux-arm-gnueabi-g++ { # MotoMAGX
DEFINES += _320X240 _MOTOMAGX _SDL_MIXER
} linux-arm-gnu-g++ | iwmmxt_le-g++ { # MotoEZX
DEFINES += _320X240 _MOTOEZX _SDL_MIXER
} linux-arm-gnueabi-g++ {
DEFINES += _BSD_SOURCE
}
# Debug
CONFIG(debug, debug|release) {
DEFINES += DEBUG
}
# Localization
l10n_rus {
DEFINES += _L10N_CP1251
}
# MotoEZX sdl-config
EZX_SDL_CONFIG = /opt/toolchains/motoezx/bin/sdl-config
# Platform C/C++ Flags, CPU Optimization
linux-mips-g++ { # Dingux
QMAKE_CFLAGS_RELEASE += -mabi=32 -msoft-float -ffast-math -G0
QMAKE_CXXFLAGS_RELEASE += $${QMAKE_CFLAGS_RELEASE}
} linux-arm-gnueabi-g++ { # MotoMAGX
QMAKE_CFLAGS += $$system(sdl-config --cflags)
QMAKE_CXXFLAGS += $${QMAKE_CFLAGS}
QMAKE_CFLAGS_RELEASE += -march=armv6j -mtune=arm1136jf-s -mfpu=vfp
QMAKE_CXXFLAGS_RELEASE += $${QMAKE_CFLAGS_RELEASE}
} linux-arm-gnu-g++ | iwmmxt_le-g++ { # MotoEZX
QMAKE_CFLAGS += $$system($${EZX_SDL_CONFIG} --cflags)
QMAKE_CXXFLAGS += $${QMAKE_CFLAGS}
QMAKE_CFLAGS_RELEASE += -mcpu=iwmmxt -mtune=iwmmxt -march=iwmmxt -marm
QMAKE_CXXFLAGS_RELEASE += $${QMAKE_CFLAGS_RELEASE}
}
# Headers
INCLUDEPATH += .
win32-g++ { # Host MinGW Windows
INCLUDEPATH += C:/MinGW/include
INCLUDEPATH += C:/MinGW/include/SDL
} linux-g++ | linux-g++-64 { # Host GCC Linux
INCLUDEPATH += /usr/include
INCLUDEPATH += /usr/include/SDL
} linux-mips-g++ { # Dingux
INCLUDEPATH += /opt/mipsel-linux-uclibc/usr/include
INCLUDEPATH += /opt/mipsel-linux-uclibc/usr/include/SDL
} linux-arm-gnueabi-g++ { # MotoMAGX
INCLUDEPATH += /opt/toolchains/motomagx/arm-eabi2/include
INCLUDEPATH += /opt/toolchains/motomagx/arm-eabi2/include/SDL
} linux-arm-gnu-g++ { # MotoEZX
INCLUDEPATH += /opt/toolchains/motoezx/include/
INCLUDEPATH += /opt/toolchains/motoezx/include/SDL
} haiku {
INCLUDEPATH += $$system(finddir B_SYSTEM_HEADERS_DIRECTORY)/SDL
}
# Librares
win32-g++ { # Host MinGW Windows
QMAKE_LFLAGS += -static -static-libgcc -static-libstdc++
LIBS += -lmingw32 -lSDL_ttf -lfreetype -lpng -lz -lSDLmain -lSDL -lgdi32 -lwinmm
} linux-g++ | linux-g++-64 { # Host GCC Linux
LIBS += -lSDL -lSDL_ttf
} linux-mips-g++ { # Dingux
LIBS += -lSDLmain -lSDL -lSDL_ttf -lSDL_mixer
} linux-arm-gnueabi-g++ { # MotoMAGX
LIBS += $$system(sdl-config --libs) -lSDL_mixer -lSDL_ttf -lstdc++ -lm -lfreetype
} linux-arm-gnu-g++ { # MotoEZX
LIBS += $$system($${EZX_SDL_CONFIG} --libs) -lSDL_mixer -lSDL_ttf -lstdc++ -lm -lfreetype
} haiku {
LIBS += $$system(sdl-config --libs) -lSDL_mixer -lSDL_ttf -lfreetype
}
# Additional MotoEZX files
linux-arm-gnu-g++ | iwmmxt_le-g++ {
DEPENDPATH += platform/EZX
HEADERS += platform/EZX/EZX_SDL_PollEvent.h
SOURCES += platform/EZX/EZX_SDL_PollEvent.cpp
}
# Win32 Icon
win32-g++: RC_FILE = nx.rc
DEPENDPATH += . \
ai \
autogen \
common \
endgame \
extract \
graphics \
intro \
pause \
siflib \
sound \
TextBox \
ai/almond \
ai/boss \
ai/egg \
ai/final_battle \
ai/first_cave \
ai/hell \
ai/last_cave \
ai/maze \
ai/npc \
ai/oside \
ai/plantation \
ai/sand \
ai/sym \
ai/village \
ai/weapons \
ai/weed \
platform/Linux
# Input
HEADERS += caret.h \
config.h \
console.h \
debug.h \
dirnames.h \
floattext.h \
game.h \
input.h \
inventory.h \
map.h \
map_system.h \
maprecord.h \
nx.h \
object.h \
ObjManager.h \
p_arms.h \
platform.h \
player.h \
profile.h \
replay.h \
screeneffect.h \
settings.h \
slope.h \
stageboss.h \
stagedata.h \
statusbar.h \
trig.h \
tsc.h \
vararray.h \
ai/ai.h \
ai/balrog_common.h \
ai/IrregularBBox.h \
ai/stdai.h \
autogen/asdefs.h \
autogen/sprites.h \
common/basics.h \
common/BList.h \
common/bufio.h \
common/DBuffer.h \
common/DString.h \
common/FileBuffer.h \
common/InitList.h \
common/llist.h \
common/StringList.h \
common/SupportDefs.h \
endgame/credits.h \
endgame/CredReader.h \
endgame/island.h \
graphics/font.h \
graphics/graphics.h \
graphics/nxsurface.h \
graphics/palette.h \
graphics/safemode.h \
graphics/sprites.h \
graphics/tileset.h \
intro/intro.h \
intro/title.h \
pause/dialog.h \
pause/message.h \
pause/options.h \
pause/pause.h \
siflib/sectSprites.h \
siflib/sectStringArray.h \
siflib/sif.h \
siflib/sifloader.h \
sound/org.h \
sound/pxt.h \
sound/sound.h \
sound/sslib.h \
TextBox/ItemImage.h \
TextBox/SaveSelect.h \
TextBox/StageSelect.h \
TextBox/TextBox.h \
TextBox/YesNoPrompt.h \
ai/almond/almond.h \
ai/boss/balfrog.h \
ai/boss/ballos.h \
ai/boss/core.h \
ai/boss/heavypress.h \
ai/boss/ironhead.h \
ai/boss/omega.h \
ai/boss/sisters.h \
ai/boss/undead_core.h \
ai/boss/x.h \
ai/final_battle/doctor.h \
ai/weapons/weapons.h \
ai/weapons/whimstar.h \
common/misc.fdh \
caret.fdh \
console.fdh \
debug.fdh \
floattext.fdh \
game.fdh \
input.fdh \
inventory.fdh \
main.fdh \
map.fdh \
map_system.fdh \
niku.fdh \
object.fdh \
ObjManager.fdh \
p_arms.fdh \
platform.fdh \
player.fdh \
playerstats.fdh \
profile.fdh \
replay.fdh \
screeneffect.fdh \
settings.fdh \
slope.fdh \
stageboss.fdh \
statusbar.fdh \
trig.fdh \
tsc.fdh \
tsc_cmdtbl.h \
ai/ai.fdh \
ai/balrog_common.fdh \
ai/IrregularBBox.fdh \
common/bufio.fdh \
common/DBuffer.fdh \
common/DString.fdh \
common/InitList.fdh \
common/StringList.fdh \
endgame/credits.fdh \
endgame/CredReader.fdh \
endgame/island.fdh \
endgame/misc.fdh \
extract/crc.fdh \
extract/extract.fdh \
extract/extractfiles.fdh \
extract/extractpxt.fdh \
extract/extractstages.fdh \
graphics/font.fdh \
graphics/graphics.fdh \
graphics/nxsurface.fdh \
graphics/palette.fdh \
graphics/safemode.fdh \
graphics/sprites.fdh \
graphics/tileset.fdh \
intro/intro.fdh \
intro/title.fdh \
pause/dialog.fdh \
pause/message.fdh \
pause/objects.fdh \
pause/options.fdh \
pause/pause.fdh \
siflib/sectSprites.fdh \
siflib/sectStringArray.fdh \
siflib/sif.fdh \
siflib/sifloader.fdh \
sound/org.fdh \
sound/pxt.fdh \
sound/sound.fdh \
sound/sslib.fdh \
TextBox/ItemImage.fdh \
TextBox/SaveSelect.fdh \
TextBox/StageSelect.fdh \
TextBox/TextBox.fdh \
TextBox/YesNoPrompt.fdh \
ai/almond/almond.fdh \
ai/boss/balfrog.fdh \
ai/boss/ballos.fdh \
ai/boss/core.fdh \
ai/boss/heavypress.fdh \
ai/boss/ironhead.fdh \
ai/boss/omega.fdh \
ai/boss/sisters.fdh \
ai/boss/undead_core.fdh \
ai/boss/x.fdh \
ai/weed/weed.fdh \
ai/egg/egg.fdh \
ai/egg/egg2.fdh \
ai/egg/igor.fdh \
ai/final_battle/balcony.fdh \
ai/final_battle/doctor.fdh \
ai/final_battle/doctor_common.fdh \
ai/final_battle/doctor_frenzied.fdh \
ai/final_battle/final_misc.fdh \
ai/final_battle/misery.fdh \
ai/final_battle/sidekicks.fdh \
ai/first_cave/first_cave.fdh \
ai/hell/ballos_misc.fdh \
ai/hell/ballos_priest.fdh \
ai/hell/hell.fdh \
ai/plantation/plantation.fdh \
ai/sym/sym.fdh \
ai/last_cave/last_cave.fdh \
ai/maze/balrog_boss_missiles.fdh \
ai/maze/critter_purple.fdh \
ai/maze/gaudi.fdh \
ai/maze/labyrinth_m.fdh \
ai/maze/maze.fdh \
ai/maze/pooh_black.fdh \
ai/npc/balrog.fdh \
ai/npc/curly.fdh \
ai/npc/curly_ai.fdh \
ai/npc/npcguest.fdh \
ai/npc/npcplayer.fdh \
ai/npc/npcregu.fdh \
ai/sand/sand.fdh \
ai/oside/oside.fdh \
ai/sand/puppy.fdh \
ai/sand/curly_boss.fdh \
ai/sand/toroko_frenzied.fdh \
ai/sym/smoke.fdh \
ai/village/balrog_boss_running.fdh \
ai/village/ma_pignon.fdh \
ai/village/village.fdh \
ai/weapons/blade.fdh \
ai/weapons/bubbler.fdh \
ai/weapons/fireball.fdh \
ai/weapons/missile.fdh \
ai/weapons/nemesis.fdh \
ai/weapons/polar_mgun.fdh \
ai/weapons/snake.fdh \
ai/weapons/spur.fdh \
ai/weapons/weapons.fdh \
ai/weapons/whimstar.fdh \
ai/weed/balrog_boss_flying.fdh \
ai/weed/frenzied_mimiga.fdh \
l10n_strings.h \
nx_icon.h
SOURCES += caret.cpp \
console.cpp \
debug.cpp \
floattext.cpp \
game.cpp \
input.cpp \
inventory.cpp \
main.cpp \
map.cpp \
map_system.cpp \
niku.cpp \
object.cpp \
ObjManager.cpp \
p_arms.cpp \
platform.cpp \
player.cpp \
playerstats.cpp \
profile.cpp \
replay.cpp \
screeneffect.cpp \
settings.cpp \
slope.cpp \
stageboss.cpp \
stagedata.cpp \
statusbar.cpp \
trig.cpp \
tsc.cpp \
ai/ai.cpp \
ai/balrog_common.cpp \
ai/IrregularBBox.cpp \
autogen/AssignSprites.cpp \
autogen/objnames.cpp \
common/BList.cpp \
common/bufio.cpp \
common/DBuffer.cpp \
common/DString.cpp \
common/FileBuffer.cpp \
common/InitList.cpp \
common/misc_comm.cpp \
common/stat.cpp \
common/StringList.cpp \
endgame/credits.cpp \
endgame/CredReader.cpp \
endgame/island.cpp \
endgame/misc_end.cpp \
extract/crc.cpp \
extract/extract.cpp \
extract/extractfiles.cpp \
extract/extractpxt.cpp \
extract/extractstages.cpp \
graphics/font.cpp \
graphics/graphics.cpp \
graphics/nxsurface.cpp \
graphics/palette.cpp \
graphics/safemode.cpp \
graphics/sprites.cpp \
graphics/tileset.cpp \
intro/intro.cpp \
intro/title.cpp \
pause/dialog.cpp \
pause/message.cpp \
pause/objects.cpp \
pause/options.cpp \
pause/pause.cpp \
siflib/sectSprites.cpp \
siflib/sectStringArray.cpp \
siflib/sif.cpp \
siflib/sifloader.cpp \
sound/org.cpp \
sound/pxt.cpp \
sound/sound.cpp \
sound/sslib.cpp \
TextBox/ItemImage.cpp \
TextBox/SaveSelect.cpp \
TextBox/StageSelect.cpp \
TextBox/TextBox.cpp \
TextBox/YesNoPrompt.cpp \
ai/almond/almond.cpp \
ai/boss/balfrog.cpp \
ai/boss/ballos.cpp \
ai/boss/core.cpp \
ai/boss/heavypress.cpp \
ai/boss/ironhead.cpp \
ai/boss/omega.cpp \
ai/boss/sisters.cpp \
ai/boss/undead_core.cpp \
ai/boss/x.cpp \
ai/egg/egg.cpp \
ai/egg/egg2.cpp \
ai/egg/igor.cpp \
ai/final_battle/balcony.cpp \
ai/final_battle/doctor.cpp \
ai/final_battle/doctor_common.cpp \
ai/final_battle/doctor_frenzied.cpp \
ai/final_battle/final_misc.cpp \
ai/final_battle/misery_battle.cpp \
ai/final_battle/sidekicks.cpp \
ai/first_cave/first_cave.cpp \
ai/hell/ballos_misc.cpp \
ai/hell/ballos_priest.cpp \
ai/hell/hell.cpp \
ai/last_cave/last_cave.cpp \
ai/maze/balrog_boss_missiles.cpp \
ai/maze/critter_purple.cpp \
ai/maze/gaudi.cpp \
ai/maze/labyrinth_m.cpp \
ai/maze/maze.cpp \
ai/maze/pooh_black.cpp \
ai/npc/balrog.cpp \
ai/npc/curly.cpp \
ai/npc/curly_ai.cpp \
ai/npc/misery_ai.cpp \
ai/npc/npcguest.cpp \
ai/npc/npcplayer.cpp \
ai/npc/npcregu.cpp \
ai/oside/oside.cpp \
ai/plantation/plantation.cpp \
ai/sand/curly_boss.cpp \
ai/sand/puppy.cpp \
ai/sand/sand.cpp \
ai/sand/toroko_frenzied.cpp \
ai/sym/smoke.cpp \
ai/sym/sym.cpp \
ai/village/balrog_boss_running.cpp \
ai/village/ma_pignon.cpp \
ai/village/village.cpp \
ai/weapons/blade.cpp \
ai/weapons/bubbler.cpp \
ai/weapons/fireball.cpp \
ai/weapons/missile.cpp \
ai/weapons/nemesis.cpp \
ai/weapons/polar_mgun.cpp \
ai/weapons/snake.cpp \
ai/weapons/spur.cpp \
ai/weapons/weapons.cpp \
ai/weapons/whimstar.cpp \
ai/weed/balrog_boss_flying.cpp \
ai/weed/frenzied_mimiga.cpp \
ai/weed/weed.cpp \
platform/Linux/vbesync.c
OTHER_FILES += nx.rc \
README.md
================================================
FILE: ObjManager.cpp
================================================
#include "nx.h"
#include "common/llist.h"
#include "ObjManager.h"
#include "ObjManager.fdh"
static Object ZERO_OBJECT;
static Player ZERO_PLAYER;
Object *firstobject = NULL, *lastobject = NULL;
Object *lowestobject = NULL, *highestobject = NULL;
/*
void c------------------------------() {}
*/
Object *CreateObject(int x, int y, int type, int xinertia, int yinertia,
int dir, Object *linkedobject, uint32_t createflags)
{
Object *o;
// create the structure
if (type != OBJ_PLAYER)
{
o = new Object;
*o = ZERO_OBJECT; // safely clears all members
}
else
{
Player *p = new Player;
*p = ZERO_PLAYER;
o = (Object *)p;
}
// initialize
o->SetType(type);
o->flags = objprop[type].defaultflags;
o->DamageText = new FloatText(SPR_REDNUMBERS);
o->x = x - (sprites[o->sprite].spawn_point.x << CSF);
o->y = y - (sprites[o->sprite].spawn_point.y << CSF);
o->dir = dir;
o->xinertia = xinertia;
o->yinertia = yinertia;
o->linkedobject = linkedobject;
// add into list
LL_ADD_END(o, prev, next, firstobject, lastobject);
LL_ADD_END(o, lower, higher, lowestobject, highestobject);
// set it's initial blocked states, but do not update blockedstates on objects starting
// with nullsprite-- the reason is for objects whose sprite is set after being spawned
if (o->sprite != SPR_NULL)
o->UpdateBlockStates(ALLDIRMASK);
if (!(createflags & CF_NO_SPAWN_EVENT))
o->OnSpawn();
return o;
}
Object *CreateObject(int x, int y, int type)
{
return CreateObject(x, y, type, 0, 0, RIGHT, NULL, CF_DEFAULT);
}
/*
void c------------------------------() {}
*/
// update the blocked states of all objects
void Objects::UpdateBlockStates(void)
{
Object *o = firstobject;
while(o)
{
o->lastblockl = o->blockl;
o->lastblockr = o->blockr;
o->lastblocku = o->blocku;
o->lastblockd = o->blockd;
o->UpdateBlockStates(ALLDIRMASK);
o = o->next;
}
}
// returns true if the bounding boxes of the two given objects are touching
bool hitdetect(Object *o1, Object *o2)
{
SIFSprite *s1, *s2;
int32_t rect1x1, rect1y1, rect1x2, rect1y2;
int32_t rect2x1, rect2y1, rect2x2, rect2y2;
// get the sprites used by the two objects
s1 = o1->Sprite();
s2 = o2->Sprite();
// get the bounding rectangle of the first object
rect1x1 = o1->x + (s1->bbox.x1 << CSF);
rect1x2 = o1->x + (s1->bbox.x2 << CSF);
rect1y1 = o1->y + (s1->bbox.y1 << CSF);
rect1y2 = o1->y + (s1->bbox.y2 << CSF);
// get the bounding rectangle of the second object
rect2x1 = o2->x + (s2->bbox.x1 << CSF);
rect2x2 = o2->x + (s2->bbox.x2 << CSF);
rect2y1 = o2->y + (s2->bbox.y1 << CSF);
rect2y2 = o2->y + (s2->bbox.y2 << CSF);
// find out if the rectangles overlap
if ((rect1x1 < rect2x1) && (rect1x2 < rect2x1)) return false;
if ((rect1x1 > rect2x2) && (rect1x2 > rect2x2)) return false;
if ((rect1y1 < rect2y1) && (rect1y2 < rect2y1)) return false;
if ((rect1y1 > rect2y2) && (rect1y2 > rect2y2)) return false;
return true;
}
// returns true if the solidity boxes of the two given objects are touching
bool solidhitdetect(Object *o1, Object *o2)
{
SIFSprite *s1, *s2;
int32_t rect1x1, rect1y1, rect1x2, rect1y2;
int32_t rect2x1, rect2y1, rect2x2, rect2y2;
// get the sprites used by the two objects
s1 = o1->Sprite();
s2 = o2->Sprite();
// get the bounding rectangle of the first object
rect1x1 = o1->x + (s1->solidbox.x1 << CSF);
rect1x2 = o1->x + (s1->solidbox.x2 << CSF);
rect1y1 = o1->y + (s1->solidbox.y1 << CSF);
rect1y2 = o1->y + (s1->solidbox.y2 << CSF);
// get the bounding rectangle of the second object
rect2x1 = o2->x + (s2->solidbox.x1 << CSF);
rect2x2 = o2->x + (s2->solidbox.x2 << CSF);
rect2y1 = o2->y + (s2->solidbox.y1 << CSF);
rect2y2 = o2->y + (s2->solidbox.y2 << CSF);
// find out if the rectangles overlap
if ((rect1x1 < rect2x1) && (rect1x2 < rect2x1)) return false;
if ((rect1x1 > rect2x2) && (rect1x2 > rect2x2)) return false;
if ((rect1y1 < rect2y1) && (rect1y2 < rect2y1)) return false;
if ((rect1y1 > rect2y2) && (rect1y2 > rect2y2)) return false;
return true;
}
/*
void c------------------------------() {}
*/
// runs all entity AI routines
void Objects::RunAI(void)
{
Object *o;
// because we handle objects in order of their creation and have a separate list
// for display order, we can't ever run AI twice in a frame because of z-order
// rearrangement, and 2) objects created by other objects are added to the end of
// the list and given a chance to run their AI routine before being displayed.
FOREACH_OBJECT(o)
{
if (!o->deleted)
o->RunAI();
}
}
// the most important thing it does is apply x/y inertia to the objects.
void Objects::PhysicsSim(void)
{
Object *o;
int xinertia, yinertia;
FOREACH_OBJECT(o)
{
if (o != player && !o->deleted) // player is moved in PDoPhysics
{
if (!(o->flags & FLAG_IGNORE_SOLID) && \
!(o->nxflags & NXFLAG_NO_RESET_YINERTIA))
{
if (o->blockd && o->yinertia > 0) o->yinertia = 0;
if (o->blocku && o->yinertia < 0) o->yinertia = 0;
}
// apply inertia to X,Y position
xinertia = o->xinertia;
yinertia = o->yinertia;
if (o->shaketime)
{
if (o->nxflags & NXFLAG_SLOW_X_WHEN_HURT) xinertia >>= 1;
if (o->nxflags & NXFLAG_SLOW_Y_WHEN_HURT) yinertia >>= 1;
}
o->apply_xinertia(xinertia);
o->apply_yinertia(yinertia);
// flag_solid_brick objects push player as they move
if (o->flags & FLAG_SOLID_BRICK)
{
o->PushPlayerOutOfWay(xinertia, yinertia);
}
else if (o->damage > 0)
{
// have enemies hurt you when you touch them
// (solid-brick objects do this in PHandleSolidBrickObjects)
if (hitdetect(o, player))
o->DealContactDamage();
}
}
}
}
/*
void c------------------------------() {}
*/
// returns how many objects exist of the given type
int Objects::CountType(int objtype)
{
int count = 0;
Object *o;
FOREACH_OBJECT(o)
{
if (o->type == objtype)
count++;
}
return count;
}
// returns the first object of type objtype or NULL
Object *Objects::FindByType(int objtype)
{
Object *o;
FOREACH_OBJECT(o)
{
if (o->type == objtype)
return o;
}
return NULL;
}
/*
void c------------------------------() {}
*/
// free objects deleted earlier via ObjDel
void Objects::CullDeleted(void)
{
Object *o, *next;
o = firstobject;
while(o)
{
next = o->next;
if (o->deleted)
{
o->Destroy();
}
o = next;
}
}
// deletes all objects. if delete_player is true, also deletes the player.
// used by load_pxe to reset the game in preperation for loading a new maplayer->
void Objects::DestroyAll(bool delete_player)
{
Object *o, *next;
o = firstobject;
while(o)
{
next = o->next;
if (o != player)
{
o->Destroy();
}
o = next;
}
// must do this last to avoid crashes as player ptr gets invalidated
if (delete_player)
{
player->Destroy();
}
memset(ID2Lookup, 0, sizeof(ID2Lookup));
}
================================================
FILE: ObjManager.fdh
================================================
//hash:3b98a341
//automatically generated by Makegen
/* located in ObjManager.cpp */
//------------------[referenced from ObjManager.cpp]-----------------//
Object *CreateObject(int x, int y, int type);
bool hitdetect(Object *o1, Object *o2);
bool solidhitdetect(Object *o1, Object *o2);
================================================
FILE: ObjManager.h
================================================
#ifndef _OBJMANAGER_H
#define _OBJMANAGER_H
namespace Objects
{
void UpdateBlockStates(void);
int CountType(int objtype);
void RunAI(void);
void PhysicsSim(void);
int IsRearTopAttack(Object *o);
void CullDeleted(void);
void DestroyAll(bool delete_player);
Object *FindByType(int type);
};
// synonyms
#define CountObjectsOfType Objects::CountType
#define FOREACH_OBJECT(O) for(O=firstobject; O; O=O->next)
// max expected objects to exist at once (for buffer allocation)
#define MAX_OBJECTS 1024
enum CreateObjectFlags
{
CF_NO_SPAWN_EVENT = 0x01, // inhibit calling OnSpawn
CF_DEFAULT = 0x00
};
Object *CreateObject(int x, int y, int type);
Object *CreateObject(int x, int y, int type, int xinertia, int yinertia, \
int dir=0, Object *linkedobject=NULL, uint32_t createflags=CF_DEFAULT);
// ObjProp definitions
struct ObjProp
{
// NXEngine-specific
int sprite;
int shaketime; // how long it shakes for when hit
uint32_t defaultnxflags;
// from npc.tbl
int initial_hp;
int xponkill;
int damage;
int hurt_sound, death_sound;
int death_smoke_amt;
uint32_t defaultflags;
// AI routines
struct
{
// executed every tick
void (*ontick)(Object *o);
// executed after physics sim has been done
void (*aftermove)(Object *o);
// if present, then when damage to the object causes it's hp to <= 0,
// this is executed instead of destroying the object or following the
// normal boom/spawn powerups routine.
void (*ondeath)(Object *o);
// executed when the object is first created or it's type is changed.
// intended for static objects which only require a small amount of
// initilization. This is NOT guaranteed to be only called exactly once
// for a given object.
void (*onspawn)(Object *o);
} ai_routines;
};
extern ObjProp objprop[OBJ_LAST];
extern Object *firstobject, *lastobject;
extern Object *lowestobject, *highestobject;
#endif
================================================
FILE: README.md
================================================
NXEngine
========
NXEngine is open-source rewrite engine of the [Cave Story](https://en.wikipedia.org/wiki/Cave_Story) game. Author - [Caitlin (rogueeve) Shaw](http://nxengine.sourceforge.net/).

This repository contains source code of my NXEngine fork for various weak devices. I have added some engine improvements:
1. Sound through SDL_mixer.
2. Support for widescreen displays (480x272).
3. Ports to various platforms.
4. Russification.
## Download
You can download ready-to-run packages with NXEngine and Cave Story here:
- [On the page of EXL's Developer Blog](http://exlmoto.ru/nxengine/#4).
- [On the page of Cave Story Tribute Fan Site](https://www.cavestory.org/download/cave-story.php).
- [On the page of GitHub Releases](https://github.com/EXL/NXEngine/releases).
Russian and English versions of this game are available.
## Build instructions
Building requires some SDL libraries: SDL-1.2, SDL_ttf-2.0, SDL_mixer-1.2 (optional). Please install developer versions of these libraries before building the project. You can open "nx.pro" project file in the [Qt Creator](https://www.qt.io/download) IDE for easy code navigation.
Platform defines:
| Define | Description |
| --- | --- |
| `-D_480X272` | Use widescreen 480x272 resolution. |
| `-D_320X240` | Use normal 320x240 resolution. |
| `-D_DINGUX` | Dingux platform and keyboard layout (Ritmix RZX-50, Dingoo A320, Dingoo A380, etc). |
| `-D_MOTOMAGX` | MotoMAGX platform and keyboard layout (Motorola ZN5, Z6, E8, EM30, VE66, etc). |
| `-D_MOTOEZX` | MotoEZX platform and keyboard layout (Motorola E2, E6, A1200, A1600). |
| `-D_SDL_MIXER` | Don't use realtime music generation, `*.xm` tracks and sounds will be played via SDL_mixer. |
| `-D_DEBUG` | Enable detailed debug output to the console. |
| `-D_L10N_CP1251` | Enable Russian l10n (you need a `*.ttf` font and Russian version of data-files). |
Please read [addition building information (in Russian)](http://exlmoto.ru/nxengine/#3) in the EXL's Developer Blog.
## Screens
Ritmix RZX-50:

Windows 8.1:

Haiku OS:

## Photos

## Videos
Demonstration [video on YouTube](https://youtu.be/aZPgX9Ismq4) which showing launch Cave Story game with this engine on the Ritmix RZX-50 device.
## More information
Please read [Porting Guide (in Russian)](http://exlmoto.ru/nxengine) for more info about porting NXEngine to various platforms.
================================================
FILE: TextBox/ItemImage.cpp
================================================
/*
The powerup display for textboxes.
E.g. when you get a life capsule or new weapon and
it shows you a picture of it.
*/
#include "../nx.h"
#include "ItemImage.h"
#include "ItemImage.fdh"
#define ITEMBOX_W 76
#define ITEMBOX_H 32
#define ITEMBOX_X 128
#define ITEMBOX_Y 120
/*
void c------------------------------() {}
*/
void TB_ItemImage::ResetState()
{
fVisible = false;
}
void TB_ItemImage::SetVisible(bool enable)
{
fVisible = enable;
}
void TB_ItemImage::SetSprite(int sprite, int frame)
{
fSprite = sprite;
fFrame = frame;
fYOffset = 1;
}
/*
void c------------------------------() {}
*/
void TB_ItemImage::Draw(void)
{
if (!fVisible)
return;
// animate moving item downwards into box
int desty = (ITEMBOX_H / 2) - (sprites[fSprite].h / 2);
if (++fYOffset > desty) fYOffset = desty;
// draw the box frame
TextBox::DrawFrame(ITEMBOX_X, ITEMBOX_Y, ITEMBOX_W, ITEMBOX_H);
// draw the item
int x = ITEMBOX_X + ((ITEMBOX_W / 2) - (sprites[fSprite].w / 2));
if (sprites[fSprite].w == 14) x--; // hack for ArmsIcons
draw_sprite(x, ITEMBOX_Y + fYOffset, fSprite, fFrame);
}
================================================
FILE: TextBox/ItemImage.fdh
================================================
//hash:00000000
//automatically generated by Makegen
================================================
FILE: TextBox/ItemImage.h
================================================
#ifndef _ITEMIMAGE_H
#define _ITEMIMAGE_H
class TB_ItemImage
{
public:
void ResetState();
void Draw();
void SetVisible(bool enable);
void SetSprite(int sprite, int frame);
private:
bool fVisible;
int fSprite, fFrame;
int fYOffset;
};
#endif
================================================
FILE: TextBox/SaveSelect.cpp
================================================
/*
The save select box (for multiple save files).
*/
#include "../nx.h"
#include "../profile.h"
#include "../inventory.h"
#include "../replay.h"
#include "TextBox.h" // for textbox coordinates; MSG_W etc
#include "SaveSelect.h"
#include "SaveSelect.fdh"
// moved here as static data so that the compiler will shut up about a circular dependency
// that happens if you try to include profile.h from SaveSelect.h.
static Profile fProfiles[MAX_SAVE_SLOTS];
static bool fHaveProfile[MAX_SAVE_SLOTS];
int fPicXOffset;
TB_SaveSelect::TB_SaveSelect()
{
}
/*
void c------------------------------() {}
*/
void TB_SaveSelect::ResetState()
{
fVisible = false;
}
void TB_SaveSelect::SetVisible(bool enable, bool saving)
{
fVisible = enable;
if (!enable) return;
game.showmapnametime = 0;
fCoords.w = 244;
fCoords.h = 152;
#ifdef _480X272 // 480x272 widescreen fix
fCoords.x = (SCREEN_WIDTH / 2) - (fCoords.w / 2);
fCoords.y = 30;
#else
fCoords.x = 38;
fCoords.y = 8;
#endif
fNumFiles = MAX_SAVE_SLOTS;
fSaving = saving;
fCurSel = settings->last_save_slot;
fPicXOffset = -24;
// load all profiles
memset(fHaveProfile, 0, sizeof(fHaveProfile));
for(int i=0;i= fNumFiles) fCurSel = 0;
if (fSaving) break;
if (fHaveProfile[fCurSel]) break;
if (fCurSel == start) break;
}
sound(SND_MENU_MOVE);
fPicXOffset = -24;
}
if (justpushed(UPKEY))
{
start = fCurSel;
for(;;)
{
fCurSel--;
if (fCurSel < 0) fCurSel = fNumFiles - 1;
if (fSaving) break;
if (fHaveProfile[fCurSel]) break;
if (fCurSel == start) break;
}
sound(SND_MENU_MOVE);
fPicXOffset = -24;
}
if (buttonjustpushed())
{
// when shown in a replay, the box is shown and everything just like what was done
// originally, but we won't actually overwrite any save files.
if (!Replay::IsPlaying())
{
if (fSaving)
game_save(fCurSel);
settings->last_save_slot = fCurSel;
settings_save(); // record new save/load slot
}
SetVisible(false);
// when the script hit the delaytimer = 0;
}
}
void TB_SaveSelect::DrawProfile(int x, int y, int index)
{
Profile *p = &fProfiles[index];
const int w = fCoords.w - 33;
int sidewd = sprites[SPR_SAVESELECTOR_SIDES].w;
int repeatwd = w - (sidewd * 2);
int frame = (index == fCurSel) ? 0 : 1;
draw_sprite(x, y, SPR_SAVESELECTOR_SIDES, frame, LEFT);
draw_sprite_repeating_x(x+sidewd, y, SPR_SAVESELECTOR_MIDDLE, frame, repeatwd);
draw_sprite(x+sidewd+repeatwd, y, SPR_SAVESELECTOR_SIDES, frame, RIGHT);
y += 4;
const int FONT_SPACING = 5;
if (fHaveProfile[index])
{
const char *stage = map_get_stage_name(p->stage);
font_draw(x+8, y-1, stage, FONT_SPACING);
// draw health.
DrawHealth(x+w, y, p);
}
else if (fCurSel == index)
{
const char *str = "available";
int fx = (w / 2) - (GetFontWidth(str, FONT_SPACING) / 2);
font_draw(x+fx, y-1, str, FONT_SPACING);
}
}
void TB_SaveSelect::DrawExtendedInfo()
{
Profile *p = &fProfiles[fCurSel];
int x, y, s;
if (fPicXOffset < 0)
{
fPicXOffset += 8;
set_clip_rect(MSG_X+4, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
}
// player pic
draw_sprite((MSG_X+8) + fPicXOffset, MSG_NORMAL_Y+8, SPR_SELECTOR_ARMS);
x = (MSG_X + 12) + fPicXOffset;
y = MSG_NORMAL_Y + 12;
s = (p->equipmask & EQUIP_MIMIGA_MASK) ? SPR_MYCHAR_MIMIGA : SPR_MYCHAR;
draw_sprite(x, y, s, 0, RIGHT);
// player gun
if (p->curWeapon != WPN_NONE && p->curWeapon != WPN_BLADE)
{
int spr, frame;
GetSpriteForGun(p->curWeapon, 0, &spr, &frame);
draw_sprite_at_dp(x + sprites[s].frame[0].dir[RIGHT].actionpoint.x, \
y + sprites[s].frame[0].dir[RIGHT].actionpoint.y, \
spr, frame, RIGHT);
}
clear_clip_rect();
// whimsical stars
if (p->equipmask & EQUIP_WHIMSTAR)
{
x = MSG_X + 12;
for(int i=0;i<3;i++)
{
static int frames[] = { 1, 0, 2 };
draw_sprite(x, y+20, SPR_WHIMSICAL_STAR, frames[i]);
x += 10;
}
}
// WEAPONS:
x = MSG_X + 64;
y = MSG_NORMAL_Y + 8;
// weapon list
for(int i=0;iweapons[i].hasWeapon)
{
draw_sprite(x, y, SPR_ARMSICONS, i);
x += 20;
}
}
// xp of current weapon
if (p->curWeapon != WPN_NONE)
{
int xb = MSG_X + 64;
int yb = MSG_NORMAL_Y + 26;
int level = p->weapons[p->curWeapon].level;
int curxp = p->weapons[p->curWeapon].xp;
int maxxp = player->weapons[p->curWeapon].max_xp[level];
draw_sprite(xb, yb, SPR_XPLEVELICON); xb += 16;
draw_sprite(xb, yb, SPR_WHITENUMBERS, level+1); xb += 8;
draw_sprite(xb, yb, SPR_XPBAR);
if ((curxp == maxxp) && level == 2)
draw_sprite(xb, yb, SPR_XPBAR, 3); // MAX
else
DrawPercentage(xb, yb, SPR_XPBAR, 1, curxp, maxxp, sprites[SPR_XPBAR].w);
}
// ITEMS:
x = (MSG_X + 64) - 10;
y = MSG_NORMAL_Y + 40;
// Booster
// items list. I generally tried to put the ones that are temporary and indicate a
// quantity of stage completion at the front so they'll be more likely to be visible.
static int items[] = {
ITEM_BOOSTER08,
ITEM_BOOSTER20,
ITEM_LIFE_POT,
ITEM_PUPPY,
ITEM_JELLYFISH_JUICE,
ITEM_CHARCOAL,
ITEM_GUM_BASE,
ITEM_EXPLOSIVE,
ITEM_SPRINKLER,
ITEM_CONTROLLER,
ITEM_MA_PIGNON,
ITEM_LITTLE_MAN,
-1
};
for(int i=0;items[i] != -1;i++)
{
if (CheckInventoryList(items[i], p->inventory, p->ninventory) != -1)
{
draw_sprite(x, y, SPR_ITEMIMAGE, items[i]);
x += 28;
if (x + sprites[SPR_ITEMIMAGE].w > (MSG_X + MSG_W) - 8)
break;
}
}
// health
DrawHealth((MSG_X+MSG_W) - 4, MSG_NORMAL_Y+8, p);
}
// I don't think it's possible to get 3-digit max life
// without hacking, but I accounted for it anyway.
static void DrawHealth(int xright, int y, Profile *p)
{
int hx, len;
hx = xright - 28 - 24;
if (p->maxhp > 99) { hx -= 8; }
len = (p->hp > 99) ? 8 : 0;
draw_sprite(hx-len, y-1, SPR_SS_HEALTH_ICON, 0, 0);
DrawNumberRAlign(hx+24, y, SPR_WHITENUMBERS, p->hp);
hx = xright - 4;
len = (p->maxhp > 99) ? 32 : 24;
draw_sprite(hx-len, y, SPR_WHITENUMBERS, 11); // '/' character
DrawNumberRAlign(hx, y, SPR_WHITENUMBERS, p->maxhp);
}
void TB_SaveSelect::Draw(void)
{
if (!fVisible)
return;
// handle user input
Run_Input();
// draw frame
TextBox::DrawFrame(fCoords.x, fCoords.y, fCoords.w, fCoords.h);
// draw selectors/options
int x = fCoords.x + 16;
int y = fCoords.y + 15;
for(int i=0;i= numslots)
fSelectionIndex = 0;
}
else
{
if (--fSelectionIndex < 0)
fSelectionIndex = (numslots - 1);
}
sound(SND_MENU_MOVE);
UpdateText();
}
// updates the text by running the appropriate script
// from StageSelect.tsc
void TB_StageSelect::UpdateText()
{
int scriptno;
if (GetSlotByIndex(fSelectionIndex, NULL, &scriptno))
{ // no permission to teleport
scriptno = 0;
}
else
{
scriptno %= 1000;
}
JumpScript(scriptno + 1000, SP_STAGESELECT);
}
/*
void c------------------------------() {}
*/
// set teleporter slot "slotno" to run script "scriptno" when selected.
// this adds the slot to the menu if scriptno is nonzero and removes it if zero.
// the parameters here map directory to the = 0 && slotno < NUM_TELEPORTER_SLOTS)
{
fSlots[slotno] = scriptno;
}
else
{
stat("StageSelect::SetSlot: invalid slotno %d", slotno);
}
}
void TB_StageSelect::ClearSlots()
{
for(int i=0;i= 0)
{
int slots_found = 0;
for(int i=0;i index)
{
if (slotno_out) *slotno_out = i;
if (scriptno_out) *scriptno_out = fSlots[i];
return 0;
}
}
}
}
if (slotno_out) *slotno_out = -1;
if (scriptno_out) *scriptno_out = -1;
return 1;
}
int TB_StageSelect::CountActiveSlots()
{
int count = 0;
for(int i=0;i= 4)
{
fTextTimer = 0;
AddNextChar();
}
}
}
// draw the frame
if (!(fFlags & TB_NO_BORDER))
{
DrawFrame(fCoords.x, fCoords.y, fCoords.w, fCoords.h);
}
// set clipping region to inside of frame, so that text cannot
// overflow during scrolling, etc.
set_clip_rect(CONTENT_X, text_top, SCREEN_WIDTH, 48);
//SDL_FillRect(screen, &cliprect, SDL_MapRGB(screen->format,0,0,255));
// draw face
if (fFace != 0)
{
draw_sprite(CONTENT_X+fFaceXOffset, fCoords.y+CONTENT_Y-3, SPR_FACES, fFace);
text_x += (FACE_W + 8); // move text over by width of face
// face slide-in animation
if (fFaceXOffset < 0)
{
fFaceXOffset += (sprites[SPR_FACES].w / 6);
if (fFaceXOffset > 0) fFaceXOffset = 0;
}
}
// blink the cursor (it is visible when < 7)
if (!fCursorVisible || (fFlags & TB_CURSOR_NEVER_SHOWN))
{
fCursorTimer = 9999;
}
else
{
if (++fCursorTimer >= 20)
fCursorTimer = 0;
}
// draw text lines (the 4th line is for the first char shown on the new line during scrolling)
int char_spacing = (fFlags & TB_VARIABLE_WIDTH_CHARS) ? 0 : 6;
int y = (text_top + fTextYOffset);
for(int i=0;i maxlinelen) || ch == 13)
{ // went over end of line
fCurLineLen = 0;
fCurLine++;
// - in line-at-once mode we stop once we hit a CR
// - in char-at-once mode we don't count the CR as being the one char we added
if (ch == 13)
{
if (line_at_once)
break;
else
continue;
}
}
// CR's make no sound
if (!line_at_once && ch != 13)
sound(SND_MSG);
fLines[fCurLine][fCurLineLen++] = ch;
fLines[fCurLine][fCurLineLen] = 0;
if (fCurLine >= MSG_NLINES - 1)
{ // went over bottom of box
fScrolling = true;
}
// adding CR's takes no time
if (line_at_once || ch == 13) continue;
else break;
}
}
int TextBox::GetMaxLineLen()
{
if (fFlags & TB_VARIABLE_WIDTH_CHARS)
return 9999;
return (fFace != 0) ? MAXLINELEN_FACE : MAXLINELEN_NO_FACE;
}
/*
void c------------------------------() {}
*/
void TextBox::SetCanSpeedUp(bool newstate)
{
fCanSpeedUp = newstate;
if (!fCanSpeedUp)
fTextTimer = 0;
}
/*
void c------------------------------() {}
*/
// draws the frame of an empty text box spanning
// the specified coordinates.
void TextBox::DrawFrame(int x, int y, int w, int h)
{
draw_sprite_chopped(x, y, SPR_TEXTBOX, 0, w, 8); // draw top
y += 8;
for(int draw=0;drawnum_bboxes = max_rectangles;
this->assoc_object = associatedObject;
if (num_bboxes >= IB_MAX_BBOXES)
{
num_bboxes = IB_MAX_BBOXES;
staterr("IrregularBBox::Init(): too many rectangles (%d given): max is %d", max_rectangles, IB_MAX_BBOXES);
return 1;
}
for(int i=0;isprite = SPR_BBOX_PUPPET_1 + i;
bbox[i]->hp = 1000;
bbox[i]->damage = 0;
bbox[i]->invisible = true;
}
return 0;
}
void IrregularBBox::destroy()
{
for(int i=0;iDelete();
bbox[i] = NULL;
}
num_bboxes = 0;
assoc_object = NULL;
}
/*
void c------------------------------() {}
*/
void IrregularBBox::set_damage(int dmg)
{
for(int i=0;idamage = dmg;
}
// link damage hits on the bbox to damage on it's associated object, o
void IrregularBBox::transmit_hits()
{
if (!assoc_object) return;
for(int i=0;ihp < 1000)
{
assoc_object->DealDamage(1000 - bbox[i]->hp);
bbox[i]->hp = 1000;
}
}
}
/*
void c------------------------------() {}
*/
void IrregularBBox::place(void (*placefunc)(void *userparm), void *userparm)
{
// first assume all disabled
for(int i=0;iy = -1024; // effectively disables it
}
// ask object to place it's bboxes as it wishes for this frame
// by using set_bbox().
(*placefunc)(userparm);
}
void IrregularBBox::set_bbox(int index, int x, int y, int w, int h, uint32_t flags)
{
if (index < 0 || index >= num_bboxes)
{
staterr("IrregularBBox::set_bbox: index out of range: %d", index);
return;
}
Object *box = bbox[index];
// coordinates passed in here are for the right-facing frame,
// if we are currently left-facing then flip them.
if (assoc_object->dir == LEFT)
x = sprites[assoc_object->sprite].w - x - w;
box->x = assoc_object->x + (x << CSF);
box->y = assoc_object->y + (y << CSF);
sprites[box->sprite].bbox.x1 = 0;
sprites[box->sprite].bbox.y1 = 0;
sprites[box->sprite].bbox.x2 = (w - 1);
sprites[box->sprite].bbox.y2 = (h - 1);
box->flags &= ~(FLAG_SHOOTABLE | FLAG_INVULNERABLE);
box->flags |= flags;
// nitpicking perfect sync for this frame since we are not aftermove
box->x += assoc_object->xinertia;
box->y += assoc_object->yinertia;
}
================================================
FILE: ai/IrregularBBox.fdh
================================================
//hash:401a9d0e
//automatically generated by Makegen
/* located in ObjManager.cpp */
//---------------[referenced from ai/IrregularBBox.cpp]--------------//
Object *CreateObject(int x, int y, int type);
/* located in common/stat.cpp */
//---------------[referenced from ai/IrregularBBox.cpp]--------------//
void staterr(const char *fmt, ...);
================================================
FILE: ai/IrregularBBox.h
================================================
#ifndef _IRREGULARBBOX_H
#define _IRREGULARBBOX_H
#define IB_MAX_BBOXES 4
class IrregularBBox
{
public:
bool init(Object *associatedObject, int max_rectangles);
void destroy();
void set_damage(int dmg);
void transmit_hits();
void place(void (*placefunc)(void *userparm), void *userparm);
void set_bbox(int index, int x, int y, int w, int h, uint32_t flags);
private:
Object *bbox[IB_MAX_BBOXES];
int num_bboxes;
Object *assoc_object;
};
#endif
================================================
FILE: ai/ai.cpp
================================================
#include "stdai.h"
#include "ai.fdh"
InitList AIRoutines;
bool ai_init(void)
{
// setup function pointers to AI routines
for(int i=0;ix + (sprites[o->sprite].frame[o->frame].dir[o->dir].actionpoint.x << CSF);
y = o->y + (sprites[o->sprite].frame[o->frame].dir[o->dir].actionpoint.y << CSF);
newObject = CreateObject(x, y, otype);
newObject->dir = o->dir;
return newObject;
}
// destroys all objects of type "otype".
// creates a BoomFlash and smoke, but no bonuses.
void KillObjectsOfType(int type)
{
Object *o = firstobject;
while(o)
{
if (o->type == type)
{
SmokeClouds(o, 1, 0, 0);
effect(o->CenterX(), o->CenterY(), EFFECT_BOOMFLASH);
o->Delete();
}
o = o->next;
}
}
// deletes all objects of type "otype" silently, without any smoke or other effects.
void DeleteObjectsOfType(int type)
{
Object *o = firstobject;
while(o)
{
if (o->type == type)
{
o->Delete();
}
o = o->next;
}
}
/*
void c------------------------------() {}
*/
// handles object blinking: at random intervals forces object o's frame to blinkframe
// for blinktime frames.
void randblink(Object *o, int blinkframe, int blinktime, int prob)
{
if (o->blinktimer)
{
o->blinktimer--;
o->frame = blinkframe;
}
else if (random(0, prob) == 0)
{
o->frame = blinkframe;
o->blinktimer = 8;
}
}
// call this in an object's aftermove routine if it's an object
// which is being carried by the player like a puppy or curly.
// x_left: offset from p's action point when he faces left
// x_right: when he faces right
// off_y: vertical offset from p's action point
void StickToPlayer(Object *o, int x_left, int x_right, int off_y)
{
int x, y, frame;
// needed for puppy in chest
o->flags &= ~FLAG_SCRIPTONACTIVATE;
// by offsetting from the player's action point, where he holds his gun, we
// already have set up for us a nice up-and-down 1 pixel as he walks
frame = player->frame;
// the p's "up" frames have unusually placed action points so we have to cancel those out
if (frame >= 3 && frame <= 5) frame -= 3;
x = (player->x >> CSF) + sprites[player->sprite].frame[frame].dir[player->dir].actionpoint.x;
y = (player->y >> CSF) + sprites[player->sprite].frame[frame].dir[player->dir].actionpoint.y;
y += off_y;
if (player->dir == RIGHT)
{
x += x_right;
o->dir = RIGHT;
}
else
{
x += x_left;
o->dir = LEFT;
}
o->x = (x << CSF);
o->y = (y << CSF);
}
// used for some bosses with subobjects
void transfer_damage(Object *o, Object *target)
{
if (o->hp < 1000)
{
// if you forget to set hp to 1000 when creating the puppet object,
// it can immediately destroy the main object, possibly leading to crashes.
#ifdef DEBUG
ASSERT(o->hp != 0);
#endif
target->DealDamage(1000 - o->hp);
o->hp = 1000;
}
}
/*
void c------------------------------() {}
*/
// do the "teleport in" effect for object o.
// when complete, returns true.
// this function uses o->timer and assume o->timer starts at 0.
bool DoTeleportIn(Object *o, int slowness)
{
if (teleffect(o, slowness, false))
{
o->clip_enable = false;
return true;
}
return false;
}
// does a teleport out effect.
// When complete, returns true.
// this function uses o->timer and assume o->timer starts at 0.
bool DoTeleportOut(Object *o, int slowness)
{
return teleffect(o, slowness, true);
}
// common code for DoTeleportIn and DoTeleportOut
// returns true when teleport is complete
static bool teleffect(Object *o, int slowness, bool teleporting_out)
{
o->display_xoff = random(-1, 1);
if (!o->timer)
{
sound(SND_TELEPORT);
o->clip_enable = true;
o->clipy1 = 0;
}
if (++o->timer >= (sprites[o->sprite].h << slowness))
{
o->clip_enable = false;
o->display_xoff = 0;
return true;
}
else
{
int amt = (o->timer >> slowness);
if (teleporting_out)
o->clipy2 = sprites[o->sprite].h - amt;
else
o->clipy2 = amt;
return false;
}
}
/*
void c------------------------------() {}
*/
void ai_animate1(Object *o) { if (++o->frame >= sprites[o->sprite].nframes) o->frame = 0; }
void ai_animate2(Object *o) { simpleanim(o, 2); }
void ai_animate3(Object *o) { simpleanim(o, 3); }
void ai_animate4(Object *o) { simpleanim(o, 4); }
void ai_animate5(Object *o) { simpleanim(o, 5); }
static void simpleanim(Object *o, int spd)
{
if (++o->animtimer >= spd)
{
o->animtimer = 0;
if (++o->frame >= sprites[o->sprite].nframes) o->frame = 0;
}
}
/*
void c------------------------------() {}
*/
// aftermove routine which sticks the object to the action point of the NPC that's carrying it
void aftermove_StickToLinkedActionPoint(Object *o)
{
Object *link = o->linkedobject;
int dir;
if (link)
{
dir = (link->dir ^ o->carry.flip);
o->x = ((link->x >> CSF) + sprites[link->sprite].frame[link->frame].dir[dir].actionpoint.x) << CSF;
o->y = ((link->y >> CSF) + sprites[link->sprite].frame[link->frame].dir[dir].actionpoint.y) << CSF;
o->dir = dir;
}
else
{
o->Delete();
}
}
void onspawn_snap_to_ground(Object *o)
{
o->SnapToGround();
}
void onspawn_set_frame_from_id2(Object *o)
{
o->frame = o->id2;
}
/*
void c------------------------------() {}
*/
================================================
FILE: ai/ai.fdh
================================================
//hash:3644b038
//automatically generated by Makegen
/* located in ObjManager.cpp */
//---------------------[referenced from ai/ai.cpp]-------------------//
Object *CreateObject(int x, int y, int type);
/* located in platform.cpp */
//---------------------[referenced from ai/ai.cpp]-------------------//
FILE *fileopen(const char *fname, const char *mode);
/* located in caret.cpp */
//---------------------[referenced from ai/ai.cpp]-------------------//
Caret *effect(int x, int y, int effectno);
/* located in ai/ai.cpp */
//---------------------[referenced from ai/ai.cpp]-------------------//
bool ai_init(void);
bool load_npc_tbl(void);
Object *SpawnObjectAtActionPoint(Object *o, int otype);
void KillObjectsOfType(int type);
void DeleteObjectsOfType(int type);
void randblink(Object *o, int blinkframe, int blinktime, int prob);
void StickToPlayer(Object *o, int x_left, int x_right, int off_y);
void transfer_damage(Object *o, Object *target);
bool DoTeleportIn(Object *o, int slowness);
bool DoTeleportOut(Object *o, int slowness);
static bool teleffect(Object *o, int slowness, bool teleporting_out);
void ai_animate1(Object *o);
void ai_animate2(Object *o);
void ai_animate3(Object *o);
void ai_animate4(Object *o);
void ai_animate5(Object *o);
static void simpleanim(Object *o, int spd);
void aftermove_StickToLinkedActionPoint(Object *o);
void onspawn_snap_to_ground(Object *o);
void onspawn_set_frame_from_id2(Object *o);
/* located in ai/sym/smoke.cpp */
//---------------------[referenced from ai/ai.cpp]-------------------//
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in sound/sound.cpp */
//---------------------[referenced from ai/ai.cpp]-------------------//
void sound(int snd);
/* located in common/stat.cpp */
//---------------------[referenced from ai/ai.cpp]-------------------//
void staterr(const char *fmt, ...);
void stat(const char *fmt, ...);
/* located in common/misc.cpp */
//---------------------[referenced from ai/ai.cpp]-------------------//
uint16_t fgeti(FILE *fp);
uint32_t fgetl(FILE *fp);
int random(int min, int max);
================================================
FILE: ai/ai.h
================================================
#ifndef _AI_H
#define _AI_H
void randblink(Object *o, int blinkframe = 1, int blinktime = 8, int prob = 120);
void SmokeClouds(Object *o, int nclouds, int rangex=0, int rangey=0, Object *pushbehind=NULL);
void SmokeXY(int x, int y, int nclouds, int rangex=0, int rangey=0, Object *pushbehind=NULL);
#define ANIMATE(SPEED, FIRSTFRAME, LASTFRAME) \
{ \
if (++o->animtimer > SPEED) \
{ \
o->animtimer = 0; \
o->frame++; \
} \
if (o->frame > LASTFRAME) o->frame = FIRSTFRAME; \
}
#define ANIMATE_FWD(SPEED) \
{ \
if (++o->animtimer > SPEED) \
{ \
o->animtimer = 0; \
o->frame++; \
} \
}
#define FACEPLAYER \
{ \
o->dir = (o->CenterX() > player->CenterX()) ? LEFT:RIGHT; \
}
#define FACEAWAYPLAYER \
{ \
o->dir = (o->CenterX() > player->CenterX()) ? RIGHT:LEFT; \
}
#define LIMITX(K) \
{ \
if (o->xinertia > K) o->xinertia = K; \
if (o->xinertia < -K) o->xinertia = -K; \
}
#define LIMITY(K) \
{ \
if (o->yinertia > K) o->yinertia = K; \
if (o->yinertia < -K) o->yinertia = -K; \
}
#define pdistlx(K) ( abs(player->CenterX() - o->CenterX()) <= (K) )
#define pdistly(K) ( abs(player->CenterY() - o->CenterY()) <= (K) )
#define pdistly2(ABOVE,BELOW) (pdistly(((player->CenterY() > o->CenterY()) ? (BELOW):(ABOVE))))
#define pdistl(K) ( pdistlx((K)) && pdistly((K)) )
#define XMOVE(SPD) { o->xinertia = (o->dir == RIGHT) ? (SPD) : -(SPD); }
#define XACCEL(SPD) { o->xinertia += (o->dir == RIGHT) ? (SPD) : -(SPD); }
#define YMOVE(SPD) { o->yinertia = (o->dir == DOWN) ? (SPD) : -(SPD); }
#define YACCEL(SPD) { o->yinertia += (o->dir == DOWN) ? (SPD) : -(SPD); }
#define COPY_PFBOX \
{ sprites[o->sprite].bbox = sprites[o->sprite].frame[o->frame].dir[o->dir].pf_bbox; }
#define AIDEBUG \
{ \
debug("%s", __FUNCTION__); \
debug("state: %d", o->state); \
debug("timer: %d", o->timer); \
debug("timer2: %d", o->timer2); \
}
#endif
================================================
FILE: ai/almond/almond.cpp
================================================
#include "../stdai.h"
#include "almond.h"
#include "almond.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_WATERLEVEL, ai_waterlevel);
ONTICK(OBJ_SHUTTER, ai_shutter);
ONTICK(OBJ_SHUTTER_BIG, ai_shutter);
ONTICK(OBJ_ALMOND_LIFT, ai_shutter);
ONTICK(OBJ_SHUTTER_STUCK, ai_shutter_stuck);
ONTICK(OBJ_ALMOND_ROBOT, ai_almond_robot);
}
/*
void c------------------------------() {}
*/
void ai_waterlevel(Object *o)
{
/* debug("WL State: %d", o->state);
debug("WL Y: %d", o->y>>CSF);
debug("WL Timer: %d", o->timer);
debug("WLForceUp: %d", map.wlforceup);*/
if (map.wlforcestate)
{
stat("Forced WL state to %d", map.wlforcestate);
o->state = map.wlforcestate;
map.wlforcestate = 0;
}
switch(o->state)
{
case 0:
map.waterlevelobject = o;
o->state = WL_CALM;
o->y += (8<ymark = o->y;
o->yinertia = 0x200;
case WL_CALM: // calm waves around set point
o->yinertia += (o->y < o->ymark) ? 4 : -4;
LIMITY(0x100);
break;
case WL_CYCLE: // wait 1000 ticks, then rise all the way to top come down and repeat
o->state = WL_DOWN; o->timer = 0;
case WL_DOWN:
o->yinertia += (o->y < o->ymark) ? 4 : -4;
LIMITY(0x200);
if (++o->timer > 1000)
{
o->state = WL_UP;
}
break;
case WL_UP: // rise all the way to top then come back down
o->yinertia += (o->y > 0) ? -4 : 4;
LIMITY(0x200);
// when we reach the top return to normal level
if (o->y < (64<state = WL_CYCLE;
}
break;
case WL_STAY_UP: // rise quickly all the way to top and stay there
o->yinertia += (o->y > 0) ? -4 : 4;
if (o->yinertia < -0x200) o->yinertia = -0x200;
if (o->yinertia > 0x100) o->yinertia = 0x100;
break;
}
map.wlstate = o->state;
}
/// common code to both Shutter AND Lift
void ai_shutter(Object *o)
{
if (o->state == 10)
{
// allow hitting the stuck shutter no. 4
o->flags &= ~(FLAG_SHOOTABLE | FLAG_INVULNERABLE);
switch(o->dir)
{
case LEFT: o->x -= 0x80; break;
case RIGHT: o->x += 0x80; break;
case UP: o->y -= 0x80; break;
case DOWN: o->y += 0x80; break;
}
// animate Almond_Lift
if (o->type==OBJ_ALMOND_LIFT)
{
ai_animate3(o);
}
else if (o->type==OBJ_SHUTTER_BIG)
{
if (!o->timer)
{
game.quaketime = 20;
sound(SND_QUAKE);
o->timer = 6;
} else o->timer--;
}
}
else if (o->state == 20) // tripped by script when Shutter_Big closes fully
{
SmokeSide(o, 4, DOWN);
o->state = 21;
}
if (o->type == OBJ_SHUTTER_BIG)
{
ANIMATE(10, 0, 3);
}
}
void ai_shutter_stuck(Object *o)
{
// when you shoot shutter 4, you're actually shooting us, but we want them
// to think they're shooting the regular shutter object, so go invisible
o->invisible = 1;
}
/*
void c------------------------------() {}
*/
// the damaged robot which wakes up right before the Almond battle
void ai_almond_robot(Object *o)
{
switch(o->state)
{
case 0:
o->frame = 0;
break;
case 10: // blows up
sound(SND_BIG_CRASH);
SmokeClouds(o, 8, 3, 3);
o->Delete();
break;
case 20: // flashes
ANIMATE(10, 0, 1);
break;
}
}
================================================
FILE: ai/almond/almond.fdh
================================================
//hash:e7887cd2
//automatically generated by Makegen
/* located in ai/ai.cpp */
//---------------[referenced from ai/almond/almond.cpp]--------------//
void ai_animate3(Object *o);
/* located in ai/almond/almond.cpp */
//---------------[referenced from ai/almond/almond.cpp]--------------//
void ai_waterlevel(Object *o);
void ai_shutter(Object *o);
void ai_shutter_stuck(Object *o);
void ai_almond_robot(Object *o);
/* located in ai/sym/smoke.cpp */
//---------------[referenced from ai/almond/almond.cpp]--------------//
void SmokeSide(Object *o, int nclouds, int dir);
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in sound/sound.cpp */
//---------------[referenced from ai/almond/almond.cpp]--------------//
void sound(int snd);
/* located in common/stat.cpp */
//---------------[referenced from ai/almond/almond.cpp]--------------//
void stat(const char *fmt, ...);
================================================
FILE: ai/almond/almond.h
================================================
#ifndef _ALMOND_H
#define _ALMOND_H
// states to control the water-level object
#define WL_CALM 10 // calm and slow at set point
#define WL_CYCLE 20 // cycles between set point and top of screen
#define WL_DOWN 21 // in cycle--currently down
#define WL_UP 22 // in cycle--currently up
#define WL_STAY_UP 30 // goes to top of screen and doesn't come back down
#endif
================================================
FILE: ai/balrog_common.cpp
================================================
#include "stdai.h"
#include "balrog_common.fdh"
// some routines used by multiple Balrog boss fights or Balrog NPC's
// ---------------------------------------
// grab the player in preparation for running the toss_player_away animation.
void balrog_grab_player(Object *o)
{
player->disabled = true;
o->frame = 8; // face away
o->substate = 0;
}
// shake and toss the player away. call balrog_grab_player first.
// returns true when complete.
// used in boss battles in Shack and at end of Labyrinth.
bool balrog_toss_player_away(Object *o)
{
// keep player locked in position while balrog has him
if (o->substate <= 1)
{
player->x = o->CenterX() - (player->Width() / 2);
player->y = o->y + (4 << CSF);
player->xinertia = player->yinertia = 0;
}
switch(o->substate)
{
case 0: // slowing to a stop
{
o->xinertia *= 4;
o->xinertia /= 5;
if (o->xinertia == 0)
{
o->substate = 1;
o->timer = 0;
o->animtimer = 0;
o->frame = 15;
}
}
break;
case 1: // shaking with back turned
{
ANIMATE(2, 15, 16); // shake
// after a moment toss player away
// I used 101 because that puts it one frame past the end of the
// player's hurtflash timer; otherwise when you reappear only your
// gun is visible for the first frame.
if (++o->timer > 101)
{
player->disabled = false;
if (o->dir == LEFT)
{
player->x += 0x800;
player->xinertia = 0x5ff;
player->dir = RIGHT;
}
else
{
player->x -= 0x800;
player->xinertia = -0x5ff;
player->dir = LEFT;
}
player->y -= 0x1000;
player->yinertia = -0x200;
sound(SND_FUNNY_EXPLODE);
o->dir = player->dir;
o->substate = 2;
o->frame = 3; // arms up
o->timer = 0;
}
}
break;
case 2: // arms up after throwing player
{
if (++o->timer > 50)
return true;
}
break;
}
return false;
}
/*
void c------------------------------() {}
*/
================================================
FILE: ai/balrog_common.fdh
================================================
//hash:0e6b9889
//automatically generated by Makegen
/* located in ai/balrog_common.cpp */
//---------------[referenced from ai/balrog_common.cpp]--------------//
void balrog_grab_player(Object *o);
bool balrog_toss_player_away(Object *o);
/* located in sound/sound.cpp */
//---------------[referenced from ai/balrog_common.cpp]--------------//
void sound(int snd);
================================================
FILE: ai/balrog_common.h
================================================
#ifndef _BALROG_COMMON_H
#define _BALROG_COMMON_H
void balrog_grab_player(Object *o);
bool balrog_toss_player_away(Object *o);
#endif
================================================
FILE: ai/boss/balfrog.cpp
================================================
#include "../stdai.h"
#include "balfrog.h"
#include "balfrog.fdh"
enum Frames
{
FRAME_STAND = 0,
FRAME_CROUCH = 1,
FRAME_MOUTH_OPEN = 2,
FRAME_MOUTH_OPEN_HURT = 3,
FRAME_JUMPING = 0 // on other sprite (SPR_BALFROG_JUMP)
};
enum States
{
STATE_TRANSFORM = 20, // script-triggered: must stay at this value
STATE_READY = 10, // script-triggered: must stay at this value
STATE_DEATH = 130, // script-triggered: must stay at this value
STATE_FIGHTING = 100, // script-triggered: must stay at this value
STATE_JUMPING = 50,
STATE_OPEN_MOUTH = 60,
STATE_SHOOTING = 70,
STATE_CLOSE_MOUTH = 80,
STATE_BIG_JUMP = 90
};
enum BBox_States
{
BM_STAND,
BM_JUMPING,
BM_MOUTH_OPEN,
BM_DISABLED
};
#define FROG_START_X ((5 * TILE_W) << CSF)
#define FROG_START_Y ((10 * TILE_H) << CSF)
#define LANDING_SMOKE_COUNT 8
#define LANDING_SMOKE_YTOP -4
#define DEATH_SMOKE_COUNT 8
#define DEATH_SMOKE_YTOP -24
// when he lands he spawns frogs from ceiling--
// this is the range of where they should spawn at
#define SPAWN_RANGE_LEFT 4
#define SPAWN_RANGE_RIGHT 16
#define SPAWN_RANGE_TOP 0
#define SPAWN_RANGE_BOTTOM 4
// offset from top and from left or right (depending on direction facing)
// to spawn the balrog 'puppet' when we return to balrog form after being defeated.
#define BALDEATH_X (12 << CSF)
#define BALDEATH_Y (44 << CSF)
// twiddle adjustment to get the proper Y coordinate when switching
// between normal and jumping sprites.
#define JUMP_SPRITE_ADJ (16 << CSF)
INITFUNC(AIRoutines)
{
ONDEATH(OBJ_BALFROG, ondeath_balfrog);
ONTICK(OBJ_BALFROG_SHOT, ai_generic_angled_shot);
}
void BalfrogBoss::OnMapEntry(void)
{
memset(&frog, 0, sizeof(frog));
o = CreateObject(FROG_START_X, FROG_START_Y, OBJ_BALFROG);
game.stageboss.object = o;
o->hp = 300;
o->damage = 0; // damage comes from our bbox puppets, not our own bbox
o->flags |= FLAG_SHOW_FLOATTEXT;
o->sprite = SPR_BALFROG;
o->dir = RIGHT;
o->invisible = true;
// setup the bounding box objects--this boss has an irregular bounding box
// and so we simulate that by having three invisible objects which are wired
// to transmit hits to the real Balfrog boss object.
frog.bboxes.init(o, 3);
frog.bboxes.set_damage(5);
frog.bbox_mode = BM_DISABLED;
// now disable being able to hit the Balfrog boss object itself.
o->flags &= ~FLAG_SHOOTABLE;
objprop[OBJ_BALFROG].xponkill = 1;
objprop[OBJ_BALFROG].shaketime = 9;
}
/*
void c------------------------------() {}
*/
void BalfrogBoss::Run()
{
if (!o) return;
// each subroutine handles a subset of the frog's finite state machine
RunFighting();
RunJumping();
RunShooting();
RunEntryAnim();
RunDeathAnim();
if (o) // because RunDeathAnim destroys o at end of fight
{
o->yinertia += 0x40;
// don't limit upwards inertia or Big Jump will fail
if (o->yinertia > 0x5FF) o->yinertia = 0x5FF;
// link our "irregular" bbox (actually composed of multiple "puppet" bboxes)
// to our real object.
frog.bboxes.transmit_hits();
frog.bboxes.place(&call_place_bboxes, this);
}
}
/*
void c------------------------------() {}
*/
static void call_place_bboxes(void *balfrog)
{
((BalfrogBoss *)balfrog)->place_bboxes();
}
void BalfrogBoss::place_bboxes()
{
#define set_bbox frog.bboxes.set_bbox
// I got these coordinates by drawing rectangles over the
// sprites in Photoshop. These are for the right-facing frame
// and are automatically flipped if the object is facing left.
switch(frog.bbox_mode)
{
case BM_STAND:
set_bbox(0, 5, 28, 50, 36, FLAG_INVULNERABLE); // body
set_bbox(1, 37, 4, 38, 36, FLAG_INVULNERABLE); // head
break;
case BM_JUMPING:
set_bbox(0, 12, 29, 41, 47, FLAG_INVULNERABLE); // body
set_bbox(1, 30, 3, 43, 35, FLAG_INVULNERABLE); // head
break;
case BM_MOUTH_OPEN:
set_bbox(0, 8, 22, 38, 42, FLAG_INVULNERABLE); // backside
set_bbox(1, 46, 54, 13, 10, FLAG_INVULNERABLE); // feet below mouth
set_bbox(2, 46, 15, 21, 39, FLAG_SHOOTABLE); // mouth target
break;
}
}
/*
void c------------------------------() {}
*/
// the "master" start state, we can always return here eventually from
// all the other states. The script also sets this state to start the fight.
void BalfrogBoss::RunFighting()
{
switch(o->state)
{
case STATE_FIGHTING:
{
o->frame = FRAME_STAND;
frog.bbox_mode = BM_STAND;
o->state++;
o->timer = 0;
o->xinertia = 0;
}
case STATE_FIGHTING+1:
{
o->timer++;
// prepare to jump
if (o->timer < 50) o->frame = FRAME_STAND;
if (o->timer == 50) o->frame = FRAME_CROUCH;
if (o->timer == 60) o->frame = FRAME_STAND;
// jump
if (o->timer > 64)
o->state = STATE_JUMPING;
}
break;
}
}
// handles the hopping and the "big jump" attack
// (a straight up/down jump after every 3rd attack that spawns tons of frogs).
void BalfrogBoss::RunJumping()
{
switch(o->state)
{
case STATE_JUMPING:
{
sound(SND_FUNNY_EXPLODE);
SetJumpingSprite(true);
o->yinertia = -0x400;
XMOVE(0x200);
o->timer = 0;
o->state++;
}
case STATE_JUMPING+1:
{
// turn around at walls
if (o->dir == LEFT && o->blockl) o->dir = RIGHT;
if (o->dir == RIGHT && o->blockr) o->dir = LEFT;
// landed?
if (++o->timer > 3 && o->blockd)
{
quake(30);
SetJumpingSprite(false);
// passed player? turn around and fire!
if ((o->dir == RIGHT && o->x >= player->x) || \
(o->dir == LEFT && o->x <= player->x))
{
o->dir ^= 1;
o->state = STATE_OPEN_MOUTH;
}
else
{
o->state = STATE_FIGHTING;
}
// shake a small frog loose from the ceiling on every landing
SpawnFrogs(OBJ_MINIFROG, 1);
SpawnSmoke(LANDING_SMOKE_COUNT, LANDING_SMOKE_YTOP);
}
}
break;
case STATE_BIG_JUMP:
{
o->state++;
o->timer = 0;
o->xinertia = 0;
}
case STATE_BIG_JUMP+1: // animation of preparing to jump
{
o->timer++;
if (o->timer < 50) o->frame = FRAME_STAND;
if (o->timer == 50) o->frame = FRAME_CROUCH;
if (o->timer == 70) o->frame = FRAME_STAND;
if (o->timer > 74)
{
o->state++;
SetJumpingSprite(true);
o->yinertia = -0xA00;
}
}
break;
case STATE_BIG_JUMP+2: // in air, waiting to hit ground
{
// pass through ceiling at edges
if (o->y <= MAPY(8))
o->flags |= FLAG_IGNORE_SOLID;
else
o->flags &= ~FLAG_IGNORE_SOLID;
if (++o->timer > 3 && o->blockd)
{
o->flags &= ~FLAG_IGNORE_SOLID;
SetJumpingSprite(false);
quake(60);
SpawnFrogs(OBJ_MINIFROG, 6);
SpawnFrogs(OBJ_FROG, 2);
SpawnSmoke(LANDING_SMOKE_COUNT, LANDING_SMOKE_YTOP);
// player ran under us? turn around and fire!
if ((o->dir == RIGHT && o->x >= player->x) || \
(o->dir == LEFT && o->x <= player->x))
{
o->state = STATE_OPEN_MOUTH;
}
else
{
o->state = STATE_FIGHTING;
}
FACEPLAYER;
}
}
break;
}
}
void BalfrogBoss::RunShooting()
{
switch(o->state)
{
case STATE_OPEN_MOUTH: // open mouth and fire shots
{
o->frame = FRAME_STAND;
o->timer = 0;
o->state++;
}
case STATE_OPEN_MOUTH+1:
{
o->xinertia *= 8;
o->xinertia /= 9;
o->timer++;
if (o->timer == 50)
o->frame = FRAME_CROUCH;
if (o->timer > 54)
{
o->state = STATE_SHOOTING;
o->timer = 0;
o->frame = FRAME_MOUTH_OPEN;
frog.bbox_mode = BM_MOUTH_OPEN;
frog.orighp = o->hp;
frog.shots_fired = 0;
}
}
break;
case STATE_SHOOTING:
{
frog.bbox_mode = BM_MOUTH_OPEN;
o->frame = FRAME_MOUTH_OPEN;
o->xinertia *= 10;
o->xinertia /= 11;
if (o->shaketime)
{
if (++frog.shakeflash & 2)
o->frame = FRAME_MOUTH_OPEN_HURT;
}
else
{
frog.shakeflash = 0;
}
if (++o->timer > 16)
{
o->timer = 0;
EmFireAngledShot(o, OBJ_BALFROG_SHOT, 16, 0x200);
sound(SND_EM_FIRE);
if (++frog.shots_fired > 10 || o->hp < (frog.orighp - 90))
{
o->frame = FRAME_CROUCH;
o->state = STATE_CLOSE_MOUTH;
frog.bbox_mode = BM_STAND;
o->timer = 0;
}
}
}
break;
case STATE_CLOSE_MOUTH:
{
o->frame = FRAME_CROUCH;
if (++o->timer > 10)
{
o->timer = 0;
o->frame = FRAME_STAND;
if (++frog.attackcounter >= 3)
{ // big jump after every 3rd attack
frog.attackcounter = 0;
o->state = STATE_BIG_JUMP;
}
else
{
o->state = STATE_FIGHTING;
}
}
}
break;
}
}
/*
void c------------------------------() {}
*/
// the animation where we first appear
// both these states are triggered by the script
void BalfrogBoss::RunEntryAnim()
{
switch(o->state)
{
// transforming from Balrog
// the flicker is calibrated to be interlaced exactly out-of-phase
// with Balrog's flicker, which is entirely separate.
case STATE_TRANSFORM:
{
o->timer = 0;
o->frame = FRAME_MOUTH_OPEN;
o->state++;
}
case STATE_TRANSFORM+1:
{
o->timer++;
o->invisible = (o->timer & 2) ? true : false;
}
break;
// transformation complete: puff away balrog, and appear solid now
case STATE_READY:
{
SmokeXY(o->x + ((sprites[SPR_BALROG_GREEN].w / 2) << CSF), \
o->y + (48 << CSF),
8, 16, 16);
o->state++;
o->frame = FRAME_MOUTH_OPEN;
}
break;
}
}
void BalfrogBoss::RunDeathAnim()
{
switch(o->state)
{
case STATE_DEATH: // BOOM!
{
SetJumpingSprite(false);
o->frame = FRAME_MOUTH_OPEN;
sound(SND_BIG_CRASH);
o->xinertia = 0;
o->timer = 0;
o->state++;
SpawnSmoke(DEATH_SMOKE_COUNT, DEATH_SMOKE_YTOP);
}
case STATE_DEATH+1: // shaking with mouth open
{
o->timer++;
if ((o->timer % 5) == 0)
{
SpawnSmoke(1, DEATH_SMOKE_YTOP);
}
// at a glance it might seem like this has it alternate
// slowly between 2 X coordinates, but in fact, it
// alternates quickly between 3.
o->x += (o->timer & 2) ? (1 << CSF) : (-1 << CSF);
if (o->timer > 100)
{
o->timer = 0;
o->state++;
}
}
break;
case STATE_DEATH+2: // begin flashing back and forth between frog and balrog
{
// spawn balrog puppet
frog.balrog = CreateObject(0, o->y+BALDEATH_Y, OBJ_BALROG);
frog.balrog->state = 500; // tell him to give us complete control
frog.balrog->dir = o->dir;
frog.balrog->frame = 5;
if (o->dir == RIGHT)
{
frog.balrog->x = (o->x + BALDEATH_X);
}
else
{
frog.balrog->x = o->x + o->Width(); // not the same as o->Right()
frog.balrog->x -= frog.balrog->Width();
frog.balrog->x -= BALDEATH_X;
}
o->state++;
}
case STATE_DEATH+3: // flashing
{
o->timer++;
if ((o->timer % 9) == 0)
SpawnSmoke(1, DEATH_SMOKE_YTOP);
if (o->timer <= 150)
{
o->invisible = (o->timer & 2);
frog.balrog->invisible = !(o->timer & 2);
}
if (o->timer > 156)
{
o->timer = 0;
o->state++;
}
}
break;
case STATE_DEATH+4: // balrog falling to ground
{
// should start to move exactly when timer hits 160
//
// 10 frames until starts to fall
// 14 frames until changes to landed frame
frog.balrog->yinertia += 0x40;
if (frog.balrog->blockd)
{
frog.balrog->frame = 2;
if (++o->timer > 30)
{
frog.balrog->frame = 3;
o->state++;
}
}
}
break;
case STATE_DEATH+5: // balrog flying away
{
if (++o->timer > 30)
{
// it's all over, destroy ourselves and clean up
frog.balrog->yinertia = -0xA00;
frog.balrog->flags |= FLAG_IGNORE_SOLID;
if (frog.balrog->y < -(100 << CSF))
{
frog.balrog->Delete();
frog.bboxes.destroy();
o->Delete();
o = game.stageboss.object = NULL;
return;
}
}
}
break;
}
}
/*
void c------------------------------() {}
*/
void ondeath_balfrog(Object *o)
{
o->flags &= ~FLAG_SHOOTABLE;
StartScript(1000);
}
/*
void c------------------------------() {}
*/
// shake loose frogs from the ceiling
void BalfrogBoss::SpawnFrogs(int objtype, int count)
{
Object *child;
for(int i=0;idir = DOWN; // allow fall through ceiling
}
}
// spawn the smoke clouds from landing after a jump
// or during the death sequence.
void BalfrogBoss::SpawnSmoke(int count, int ytop)
{
Object *smoke;
for(int i=0;iLeft() + (4 << CSF), o->Right() - (4<Bottom() + random(ytop<xinertia = random(-0x155, 0x155);
smoke->yinertia = random(-0x600, 0);
}
}
// switches on and off the jumping frame/sprite
void BalfrogBoss::SetJumpingSprite(bool enable)
{
if (enable != (o->sprite == SPR_BALFROG_JUMP))
{
if (enable)
{
o->sprite = SPR_BALFROG_JUMP;
o->frame = FRAME_JUMPING;
o->y -= JUMP_SPRITE_ADJ;
frog.bbox_mode = BM_JUMPING;
}
else
{
o->sprite = SPR_BALFROG;
o->frame = FRAME_STAND;
o->y += JUMP_SPRITE_ADJ;
frog.bbox_mode = BM_STAND;
}
}
}
================================================
FILE: ai/boss/balfrog.fdh
================================================
//hash:c7373ca9
//automatically generated by Makegen
/* located in game.cpp */
//----------------[referenced from ai/boss/balfrog.cpp]--------------//
void quake(int quaketime, int snd);
/* located in ObjManager.cpp */
//----------------[referenced from ai/boss/balfrog.cpp]--------------//
Object *CreateObject(int x, int y, int type);
/* located in tsc.cpp */
//----------------[referenced from ai/boss/balfrog.cpp]--------------//
ScriptInstance *StartScript(int scriptno, int pageno);
/* located in trig.cpp */
//----------------[referenced from ai/boss/balfrog.cpp]--------------//
void EmFireAngledShot(Object *o, int objtype, int rand_variance, int speed);
/* located in ai/sym/smoke.cpp */
//----------------[referenced from ai/boss/balfrog.cpp]--------------//
void SmokeXY(int x, int y, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in ai/boss/balfrog.cpp */
//----------------[referenced from ai/boss/balfrog.cpp]--------------//
static void call_place_bboxes(void *balfrog);
void ondeath_balfrog(Object *o);
/* located in sound/sound.cpp */
//----------------[referenced from ai/boss/balfrog.cpp]--------------//
void sound(int snd);
/* located in common/misc.cpp */
//----------------[referenced from ai/boss/balfrog.cpp]--------------//
int random(int min, int max);
================================================
FILE: ai/boss/balfrog.h
================================================
#ifndef _BALFROG_H
#define _BALFROG_H
#include "../IrregularBBox.h"
class BalfrogBoss : public StageBoss
{
public:
void OnMapEntry();
void Run();
void place_bboxes();
private:
void RunDeathAnim();
void RunEntryAnim();
void RunFighting();
void RunJumping();
void RunShooting();
void SetJumpingSprite(bool enable);
void SpawnFrogs(int objtype, int count);
void SpawnSmoke(int count, int ytop);
void set_bbox(int index, int x, int y, int w, int h, uint32_t flags);
void transmit_bbox_hits(Object *box);
Object *o;
struct
{
int shakeflash;
int orighp;
int shots_fired;
int attackcounter;
Object *balrog; // balrog puppet for death scene
// our group of multiple bboxes to simulate our irregular bounding box.
IrregularBBox bboxes;
int bbox_mode;
} frog;
};
#endif
================================================
FILE: ai/boss/ballos.cpp
================================================
#include "../stdai.h"
#include "ballos.h"
#include "ballos.fdh"
static int platform_speed;
static int rotators_left;
#define FLOOR_Y 0x26000 // Y coord of floor
#define CRASH_Y (FLOOR_Y - (40 << CSF)) // Y coord of main when body hits floor
enum EYE_STATES
{
EYE_OPENING = 10,
EYE_CLOSING = 20,
EYE_INVISIBLE = 30,
EYE_EXPLODING = 40
};
enum BS_STATES
{
// Form 1 states
AS_COME_DOWN = 100, // scripted
AS_BEGIN_FIGHT = 200, // scripted
AS_PREPARE_JUMP = 210,
AS_JUMPING = 215,
AS_DEFEATED = 220, // scripted
// Form 2 states.
BS_ENTER_FORM = 300, // scripted
BS_FIGHT_BEGIN = 311, // scripted
BS_LEFT = 320,
BS_UP = 330,
BS_RIGHT = 340,
BS_DOWN = 350,
// Form 3 states
CS_ENTER_FORM = 400,
CS_SPAWN_SPIKES = 410,
CS_EXPLODE_BLOODY = 420,
CS_SPIN_PLATFORMS = 430
};
INITFUNC(AIRoutines)
{
ONDEATH(OBJ_BALLOS_MAIN, ondeath_ballos);
ONTICK(OBJ_BALLOS_ROTATOR, ai_ballos_rotator);
AFTERMOVE(OBJ_BALLOS_ROTATOR, aftermove_ballos_rotator);
ONTICK(OBJ_BALLOS_PLATFORM, ai_ballos_platform);
}
void BallosBoss::OnMapEntry(void)
{
// create (invisible) main controller object
main = CreateObject(0, 0, OBJ_BALLOS_MAIN);
game.stageboss.object = main;
main->id2 = 1000; // defeated script (has a flagjump in it to handle each form)
main->flags = (FLAG_SHOW_FLOATTEXT | FLAG_SCRIPTONDEATH | \
FLAG_SOLID_BRICK | FLAG_IGNORE_SOLID);
main->x = ((map.xsize / 2) * TILE_W) << CSF;
main->y = -(64 << CSF);
main->damage = 0;
main->hp = 800;
objprop[main->type].hurt_sound = SND_ENEMY_HURT_COOL;
main->invisible = true;
// create body (the big rock)
body = CreateObject(0, 0, OBJ_BALLOS_BODY);
body->hp = 1000; // not his real HP, we're using damage transfer
body->flags = (FLAG_SOLID_MUSHY | FLAG_SHOOTABLE | FLAG_INVULNERABLE | FLAG_IGNORE_SOLID);
// create eyes (open/close animations)
for(int i=0;idir = i;
eye[i]->hp = 1000;
}
// create a top shield to cover eyes from above
shield = CreateObject(0, 0, OBJ_BBOX_PUPPET);
shield->sprite = SPR_BBOX_PUPPET_1;
shield->invisible = true;
shield->hp = 1000;
shield->flags = (FLAG_SOLID_MUSHY | FLAG_SHOOTABLE | FLAG_INVULNERABLE | FLAG_IGNORE_SOLID);
// initilize bboxes
sprites[body->sprite].bbox.set(-48, -24, 48, 32);
sprites[shield->sprite].bbox.set(-32, -8, 32, 8);
sprites[main->sprite].bbox.set(-32, -48, 32, 48);
sprites[main->sprite].solidbox = sprites[main->sprite].bbox;
sprites[body->sprite].solidbox = sprites[body->sprite].bbox;
sprites[shield->sprite].solidbox = sprites[shield->sprite].bbox;
// body and eyes are both directly shootable during one form or another
// but should not shake as their damage is to be transferred to main object.
objprop[OBJ_BALLOS_MAIN].shaketime = 8;
objprop[OBJ_BALLOS_BODY].shaketime = 0;
objprop[OBJ_BALLOS_EYE].shaketime = 0;
// initilize parameters
stat("BallosBoss::OnMapEntry()");
}
/*
void c------------------------------() {}
*/
void BallosBoss::Run()
{
if (!main) return;
//AIDEBUG;
transfer_damage(body, main);
transfer_damage(eye[LEFT], main);
transfer_damage(eye[RIGHT], main);
transfer_damage(shield, main);
RunForm1(main);
RunForm2(main);
RunForm3(main);
RunDefeated(main);
run_eye(LEFT);
run_eye(RIGHT);
// flash red when hurt
if (main->shaketime & 2)
body->frame |= 1;
else
body->frame &= ~1;
}
void BallosBoss::RunAftermove()
{
if (!main)
return;
// place eyes
place_eye(LEFT);
place_eye(RIGHT);
// place body
body->x = main->x;
body->y = main->y;
// place shield
shield->x = main->x;
shield->y = main->y - (44 << CSF);
// riding on platform by eye? Player can sort of stay on this platform
// when he jumps. We don't do this for the shield up top though, in order that
// he gets kind of slid off--what happens is he'll fall through the shield
// onto the main body (a SOLID_BRICK), and then now that he's embedded in
// the shield (a SOLID_MUSHY), it'll repel him to the side.
if (player->riding == body)
{
player->apply_xinertia(main->xinertia);
player->apply_yinertia(main->yinertia);
}
}
/*
void c------------------------------() {}
*/
// left and right maximums during form 1
static const int F1_LEFT = (88 << CSF);
static const int F1_RIGHT = (552 << CSF);
// runs arrival of first form as a stage-boss
void BallosBoss::RunComeDown(Object *o)
{
switch(o->state)
{
case AS_COME_DOWN:
{
o->savedhp = o->hp;
o->x = player->CenterX();
o->y = -(64 << CSF);
o->frame = 0;
// create the targeter
// setting dir to right tells it don't spawn any lightning
CreateObject(o->x, FLOOR_Y, OBJ_BALLOS_TARGET)->dir = RIGHT;
o->timer = 0;
if (o->x < F1_LEFT) o->x = F1_LEFT;
if (o->x > F1_RIGHT) o->x = F1_RIGHT;
o->state++;
}
case AS_COME_DOWN+1:
{
if (++o->timer > 30)
o->state++;
}
break;
// falling
case AS_COME_DOWN+2:
{
o->yinertia += 0x40;
LIMITY(0xC00);
if (passed_ycoord(GREATER_THAN, CRASH_Y))
{
o->yinertia = 0;
o->timer = 0;
o->state++;
megaquake(30, SND_MISSILE_HIT);
// player smush damage
// (he could only get that low if he had been pushed into the floor)
if (player->y > (o->y + (48<x, o->y + (40<blockd)
player->yinertia = -0x200;
}
}
break;
case AS_COME_DOWN+3:
{
if (++o->timer > 31)
{
SetEyeStates(EYE_OPENING);
o->state++;
}
}
break;
}
}
// 1st form as a stageboss.
// the one where he jumps around as a rock.
void BallosBoss::RunForm1(Object *o)
{
RunComeDown(o);
switch(o->state)
{
case AS_BEGIN_FIGHT:
{
// can be damaged between eyes opening and boss bar appearing,
// but it is not counted.
o->hp = o->savedhp;
o->state = AS_PREPARE_JUMP;
}
case AS_PREPARE_JUMP: // delay, then jump at player
{
o->xinertia = 0;
o->damage = 0;
o->state++;
// he makes two jumps then a pause,
// after that it's three jumps before pausing.
// this corresponds to:
if ((++o->timer2 % 3) == 0)
o->timer = 150;
else
o->timer = 50;
}
case AS_PREPARE_JUMP+1:
{
if (--o->timer <= 0)
{
o->yinertia = -0xC00;
o->xinertia = (o->x < player->x) ? 0x200 : -0x200;
o->state = AS_JUMPING;
}
}
break;
case AS_JUMPING:
{
o->yinertia += 0x55;
LIMITY(0xC00);
if (passed_xcoord(LESS_THAN, F1_LEFT)) o->xinertia = 0x200;
if (passed_xcoord(GREATER_THAN, F1_RIGHT)) o->xinertia = -0x200;
if (passed_ycoord(GREATER_THAN, CRASH_Y))
{
// player smush damage
if (player->y > (o->y + (48<blockd)
player->yinertia = -0x200;
megaquake(30, SND_MISSILE_HIT);
CreateObject(o->x - (12<y + (52<dir = LEFT;
CreateObject(o->x + (12<y + (52<dir = RIGHT;
SmokeXY(o->x, o->y + (40<yinertia = 0;
o->state = AS_PREPARE_JUMP;
}
}
break;
// 1st form defeated
case AS_DEFEATED:
{
SetEyeStates(EYE_CLOSING);
game.bossbar.defeated = true;
o->hp = 1200;
o->state++;
o->xinertia = 0;
o->shaketime = 0;
}
case AS_DEFEATED+1:
{
o->yinertia += 0x40;
LIMITY(0xC00);
if (passed_ycoord(GREATER_THAN, CRASH_Y))
{
o->yinertia = 0;
o->state++;
megaquake(30, SND_MISSILE_HIT);
SmokeXY(o->x, o->y + 0x5000, 16, 40, 0);
if (player->blockd)
player->yinertia = -0x200;
// ... and wait for script to trigger form 2
}
}
break;
}
}
// 2nd form as a stageboss.
// the one where he spawns spiky rotators and circles around the room.
void BallosBoss::RunForm2(Object *o)
{
static const int BS_SPEED = 0x3AA;
static const int ARENA_LEFT = (119 << CSF);
static const int ARENA_TOP = (119 << CSF);
static const int ARENA_RIGHT = (521 << CSF);
static const int ARENA_BOTTOM = (233 << CSF);
switch(o->state)
{
// enter 2nd form (script-triggered)
case BS_ENTER_FORM:
{
o->timer = 0;
o->state++;
rotators_left = 0;
for(int angle=0;angle<=0x100;angle+=0x20)
{
Object *r = CreateObject(o->x, o->y, OBJ_BALLOS_ROTATOR);
r->angle = angle;
r->dir = (rotators_left & 1) ? RIGHT : LEFT;
rotators_left++;
}
}
case BS_ENTER_FORM+1:
{
o->y += (ARENA_BOTTOM - o->y) / 8;
if (passed_xcoord(LESS_THAN, ARENA_LEFT, false))
o->x += (ARENA_LEFT - o->x) / 8;
if (passed_xcoord(GREATER_THAN, ARENA_RIGHT, false))
o->x += (ARENA_RIGHT - o->x) / 8;
}
break;
case BS_FIGHT_BEGIN: // script-triggered
{
SetRotatorStates(10); // spin CCW, work as treads
o->state = BS_LEFT;
o->timer = 0;
}
case BS_LEFT: // left on floor
{
o->xinertia = -BS_SPEED;
o->yinertia = 0;
o->dirparam = LEFT;
if (passed_xcoord(LESS_THAN, ARENA_LEFT))
o->state = BS_UP;
}
break;
// up on wall
case BS_UP:
{
o->xinertia = 0;
o->yinertia = -BS_SPEED;
o->dirparam = UP;
if (passed_ycoord(LESS_THAN, ARENA_TOP))
o->state = BS_RIGHT;
}
break;
// right on ceiling
case BS_RIGHT:
{
o->xinertia = BS_SPEED;
o->yinertia = 0;
o->dirparam = RIGHT;
// all rotators destroyed?
if (rotators_left <= 0 && ++o->timer > 3)
{
// center of room
if (o->x >= (312<x <= (344<state = CS_ENTER_FORM;
}
}
if (passed_xcoord(GREATER_THAN, ARENA_RIGHT))
o->state = BS_DOWN;
}
break;
// down on wall
case BS_DOWN:
{
o->xinertia = 0;
o->yinertia = BS_SPEED;
o->dirparam = DOWN;
if (passed_ycoord(GREATER_THAN, ARENA_BOTTOM))
{
o->state = BS_LEFT;
}
}
break;
}
}
// form 3 as a stageboss, the final form.
// he reaches the center of the room, platforms come out, spikes go up,
// and he explodes into a really bloody version of himself.
//
// then the platforms spin in various speeds and directions while he
// spawns red butes from the sides and his top.
void BallosBoss::RunForm3(Object *o)
{
static const int YPOSITION = (167 << CSF);
// platform spin speeds and how long they travel at each speed.
// it's a repeating pattern.
static const struct
{
int length, speed;
}
platform_pattern[] =
{
500, 2,
200, 1,
20, 0,
200, -1,
500, -2,
200, -1,
20, 0,
200, 1,
0, 0
};
switch(o->state)
{
// enter form 3
case CS_ENTER_FORM:
{
o->timer = 0;
o->xinertia = 0;
o->yinertia = 0;
o->state++;
DeleteObjectsOfType(OBJ_GREEN_DEVIL_SPAWNER);
SetRotatorStates(20); // fast spin CCW
}
case CS_ENTER_FORM+1:
{
// come down into center of room
o->y += (YPOSITION - o->y) / 8;
o->timer++;
if (o->timer == 50)
{
// create platforms
platform_speed = 0;
for(int angle=0;angle<0x100;angle+=0x20)
{
Object *p = CreateObject(o->x, o->y, OBJ_BALLOS_PLATFORM);
p->dirparam = angle;
}
}
if (o->timer > 100)
{
platform_speed = -1;
o->state = CS_SPAWN_SPIKES;
o->timer = 0;
}
}
break;
case CS_SPAWN_SPIKES:
{
o->timer = 0;
o->xmark = 0;
o->state++;
}
case CS_SPAWN_SPIKES+1:
{
o->timer++;
if ((o->timer % 3) == 0)
sound(SND_QUAKE);
if ((o->timer % 30) == 1)
{
o->xmark += 2;
CreateObject((o->xmark * TILE_W) << CSF, \
FLOOR_Y + (48 << CSF), OBJ_BALLOS_SPIKES);
if (o->xmark == 38)
o->state = CS_EXPLODE_BLOODY;
}
}
break;
// explode into all bloody
case CS_EXPLODE_BLOODY:
{
SetEyeStates(EYE_INVISIBLE);
SetRotatorStates(30); // slow spin CW, alternate open/closed
SmokeClouds(o, 256, 60, 60); // ka boom!
sound(SND_EXPLOSION1);
megaquake(30);
body->frame |= 2; // go all bloody
body->flags &= ~FLAG_INVULNERABLE;
shield->flags &= ~FLAG_INVULNERABLE;
o->state = CS_SPIN_PLATFORMS;
}
// fall-through
case CS_SPIN_PLATFORMS:
{
o->state++;
o->timer = 0;
o->timer2 = 0;
o->timer3 = 0;
platform_speed = platform_pattern[o->timer2].speed;
}
case CS_SPIN_PLATFORMS+1:
{
// spin platforms
if (++o->timer3 > platform_pattern[o->timer2].length)
{
o->timer3 = 0;
o->timer2++;
if (!platform_pattern[o->timer2].length)
o->timer2 = 0;
platform_speed = platform_pattern[o->timer2].speed;
}
// spawn butes
switch(++o->timer)
{
case 270: // spawn swordsmen from face
case 280:
case 290:
{
SmokeXY(o->x, o->y - (52<x, o->y - (52<dir = UP;
sound(SND_EM_FIRE);
}
break;
case 300: // spawn archers on side
{
o->timer = 0;
// direction butes will be facing, not side of screen
int dir = (player->CenterX() > o->x) ? LEFT : RIGHT;
for(int i=0;i<8;i++)
{
// give some granularity to the coords,
// so that they can't overlap too closely.
int x = (random(-TILE_W, TILE_W) & ~3) << CSF;
int y = (random(2 * TILE_H, 17 * TILE_H) & ~3) << CSF;
if (dir == LEFT) x += MAPX(map.xsize - 1);
CreateObject(x, y, OBJ_BUTE_ARCHER_RED)->dir = dir;
}
}
break;
}
// spawn blood
int prob = (o->hp <= 500) ? 4 : 10;
if (!random(0, prob))
{
CreateObject(o->x + random(-40<y + random(0, 40<angle = DOWN;
}
}
break;
}
}
void BallosBoss::RunDefeated(Object *o)
{
switch(o->state)
{
case 1000:
{
o->state = 1001;
o->timer = 0;
SetEyeStates(EYE_EXPLODING); // blow out eyes
SetRotatorStates(1000); // explode rotators
uint32_t mask = ~(FLAG_SOLID_BRICK | FLAG_SOLID_MUSHY | \
FLAG_SHOOTABLE | FLAG_INVULNERABLE);
main->flags &= mask;
body->flags &= mask;
shield->flags &= mask;
eye[LEFT]->flags &= mask;
eye[RIGHT]->flags &= mask;
}
case 1001:
{
int x = o->x + random(-60<y + random(-60<timer++;
if ((o->timer % 12) == 0)
sound(SND_MISSILE_HIT);
if (o->timer > 150)
{
o->timer = 0;
o->state = 1002;
starflash.Start(o->x, o->y);
sound(SND_EXPLOSION1);
}
}
break;
case 1002:
{
megaquake(40);
if (++o->timer >= 50)
{
KillObjectsOfType(OBJ_BUTE_ARCHER_RED);
KillObjectsOfType(OBJ_BALLOS_SPIKES);
body->invisible = true;
eye[LEFT]->invisible = true;
eye[RIGHT]->invisible = true;
o->state = 1003;
}
}
break;
}
}
void ondeath_ballos(Object *o)
{
// as soon as one of his forms is defeated make him non-killable
// until the init for the next form runs and makes him killable again.
// intended to fix the extremely rare possibility of killing him completely
// after his 1st form instead of moving on to the spiky rotators like he should.
o->hp = 999999;
}
/*
void c------------------------------() {}
*/
// Handles his eyes.
//
// When closed, the eyes are like "overlay" objects that replace the open eyes
// drawn on the body, and allow animating them seperately from the body.
//
// When open, the eyes turn invisible and are used as shoot-points to detect shots
// hitting the eyes drawn on the body.
void BallosBoss::run_eye(int index)
{
Object *o = eye[index];
switch(o->state)
{
case 0:
{
o->flags = (FLAG_SHOOTABLE | FLAG_INVULNERABLE);
o->state = 1;
}
break;
// open eyes
case EYE_OPENING:
{
o->frame = 0;
o->animtimer = 0;
o->state++;
}
case EYE_OPENING+1:
{
if (++o->animtimer > 2)
{
o->animtimer = 0;
if (++o->frame >= 3)
{
o->flags &= ~FLAG_INVULNERABLE;
o->invisible = true;
o->state++;
}
}
}
break;
// close eyes
case EYE_CLOSING:
{
o->frame = 3;
o->invisible = false;
o->flags |= FLAG_INVULNERABLE;
o->animtimer = 0;
o->state++;
}
case EYE_CLOSING+1:
{
if (++o->animtimer > 2)
{
o->animtimer = 0;
if (--o->frame <= 0)
{
o->frame = 0;
o->state++;
}
}
}
break;
// invisible (the underlying eyes drawn on the body are what are seen)
case EYE_INVISIBLE:
{
o->flags &= ~FLAG_INVULNERABLE;
o->invisible = true;
o->state++;
}
break;
// explode eyes (final defeat sequence)
case EYE_EXPLODING:
{
o->frame = 4; // empty eyes
o->invisible = false;
o->flags &= ~(FLAG_SHOOTABLE | FLAG_INVULNERABLE);
o->state++;
if (o->dir == LEFT)
SmokeXY(o->x - (4<y, 10, 4, 4);
else
SmokeXY(o->x + (4<y, 10, 4, 4);
}
break;
}
}
void BallosBoss::place_eye(int index)
{
Object *o = eye[index];
if (o->dir == LEFT)
o->x = main->x - (24 << CSF);
else
o->x = main->x + (24 << CSF);
o->y = main->y - (36 << CSF);
}
void BallosBoss::SetEyeStates(int newstate)
{
eye[LEFT]->state = newstate;
eye[RIGHT]->state = newstate;
}
/*
void c------------------------------() {}
*/
void ai_ballos_rotator(Object *o)
{
switch(o->state)
{
case 0: // just spawned
{
o->state = 1;
o->timer2 = o->angle * 2;
o->timer3 = 0xC0;
o->damage = 14;
}
case 1: // expanding outward; overshoot a bit
{
if (o->timer3 < 0x140)
o->timer3 += 0x08;
else
o->state = 2;
}
break;
case 2: // come back in to correct distance
{
if (o->timer3 > 0x130)
o->timer3 -= 0x04;
else
o->state = 3;
}
break;
// spinning CCW during form 2 (working like treads)
case 10:
{
o->state = 11;
o->flags |= FLAG_SHOOTABLE;
o->flags &= ~FLAG_INVULNERABLE;
o->hp = 1000;
}
case 11: // spinning during phase 2, alive
{
o->timer2 -= 2;
if (o->timer2 < 0) o->timer2 += 0x200;
if (o->frame != 2) // still undestroyed?
{
o->frame = (o->shaketime & 2) ? 1 : 0;
if (o->hp <= (1000 - 100))
{
o->flags &= ~FLAG_SHOOTABLE;
o->frame = 2; // close eye
SmokeClouds(o, 32, 16, 16);
sound(SND_LITTLE_CRASH);
rotators_left--;
}
}
spawn_impact_puffs(o);
}
break;
case 20: // spinning fast CCW while spikes come up
{
o->frame = 2;
o->timer2 -= 4;
if (o->timer2 < 0) o->timer2 += 0x200;
}
break;
case 30: // beginning form 3
{
o->state = 31;
o->hp = 1000;
o->damage = 10;
// this dir was set when they were created and
// alternates left/right around the circle
if (o->dir == LEFT)
{
o->flags |= FLAG_SHOOTABLE;
o->frame = 0;
}
else
{
o->flags |= FLAG_INVULNERABLE;
o->frame = 2;
}
}
case 31: // form 3 CW slow spin
{
// come in closer to main object
if (o->timer3 > 0x100)
o->timer3--;
// spin CW
if (++o->timer2 > 0x200)
o->timer2 -= 0x200;
if (o->flags & FLAG_SHOOTABLE)
{
o->frame = (o->shaketime & 2) ? 1 : 0;
if (o->hp < (1000 - 100))
{
o->xinertia = 0;
o->yinertia = 0;
o->flags &= ~(FLAG_SHOOTABLE | FLAG_IGNORE_SOLID);
SmokeClouds(o, 32, 16, 16);
sound(SND_LITTLE_CRASH);
o->frame = 2;
o->state = 40;
o->damage = 5;
// blow up immediately if Ballos is defeated
o->timer2 = 0;
}
}
}
break;
case 40: // destroyed during phase 3, bouncing
{
o->yinertia += 0x20;
LIMITY(0x5ff);
if (o->blockl) o->xinertia = 0x100;
if (o->blockr) o->xinertia = -0x100;
if (o->blockd && o->yinertia >= 0)
{
// first time they hit they head toward player, after that
// they keep going in same direction until hit wall
if (o->xinertia == 0)
o->xinertia = (o->CenterX() < player->CenterX()) ? 0x100 : -0x100;
o->yinertia = -0x800;
sound(SND_QUAKE);
}
}
break;
case 1000: // Ballos was defeated
{
o->state = 1001;
o->xinertia = 0;
o->yinertia = 0;
o->frame = 2;
o->flags &= ~(FLAG_SHOOTABLE | FLAG_IGNORE_SOLID);
o->damage = 0;
o->timer2 /= 4;
}
case 1001:
{
// explode one by one going clockwise
if (o->timer2 <= 0)
{
SmokeClouds(o, 32, 16, 16);
sound(SND_LITTLE_CRASH);
effect(o->CenterX(), o->CenterY(), EFFECT_BOOMFLASH);
o->Delete();
}
else
{
o->timer2--;
o->frame = (o->timer2 & 2) ? 1 : 0;
}
}
break;
}
}
void aftermove_ballos_rotator(Object *o)
{
if (o->state < 40)
{
Object *ballos = game.stageboss.object;
if (!ballos) return;
uint8_t angle = (o->timer2 / 2);
int dist = (o->timer3 / 4) << CSF;
o->x = ballos->x + (xinertia_from_angle(angle, dist));
o->y = ballos->y + (yinertia_from_angle(angle, dist));
}
}
static void SetRotatorStates(int newstate)
{
Object *o;
FOREACH_OBJECT(o)
{
if (o->type == OBJ_BALLOS_ROTATOR)
o->state = newstate;
}
}
// spawns impact smokeclouds/skulls as the rotators hit the ground/walls
static void spawn_impact_puffs(Object *o)
{
Object *ballos = game.stageboss.object;
#define SHORT (8<dirparam;
if (o->timer2 == hitdata[bd].wallangle + HITANGLE)
{
make_puff(o->x + hitdata[bd].xoffs1, o->y + hitdata[bd].yoffs1, bd);
make_puff(o->x + hitdata[bd].xoffs2, o->y + hitdata[bd].yoffs2, bd);
sound(SND_QUAKE);
if (bd == RIGHT) // on ceiling
{
CreateObject(o->x - SHORT, o->y - LONG, OBJ_BALLOS_SKULL);
}
}
}
static void make_puff(int x, int y, int bd)
{
Object *o = SmokePuff(x, y);
// make sure the smoke puff is traveling away from floor/wall
switch(bd)
{
case LEFT: o->yinertia = -abs(o->yinertia); break;
case UP: o->xinertia = abs(o->xinertia); break;
case RIGHT: o->yinertia = abs(o->yinertia); break;
case DOWN: o->xinertia = -abs(o->xinertia); break;
}
}
/*
void c------------------------------() {}
*/
void ai_ballos_platform(Object *o)
{
Object *ballos = game.stageboss.object;
if (!ballos) return;
if (ballos->state >= 1000) // defeated
{
if (o->state < 1000)
o->state = 1000;
}
switch(o->state)
{
case 0: // just spawned
{
o->timer2 = (o->dirparam * 4);
o->timer3 = 0xC0;
o->state = 1;
}
case 1: // expanding outward
{
if (o->timer3 < 0x1C0)
o->timer3 += 8;
else
o->state = 2;
}
break;
// running - the direction/speed is set by the global variable,
// controlled by Ballos.
case 2:
{
o->timer2 += platform_speed;
if (o->timer2 < 0) o->timer2 += 0x400;
if (o->timer2 >= 0x400) o->timer2 -= 0x400;
}
break;
case 1000: // ballos defeated!
{
o->state = 1001;
o->xinertia = 0;
o->yinertia = 0;
o->flags &= ~FLAG_SOLID_BRICK;
}
case 1001:
{
o->yinertia += 0x40;
if (o->Top() > (map.ysize * TILE_H) << CSF)
o->Delete();
}
break;
}
if (o->state >= 1000)
return;
// let player jump up through platforms, but be solid when he is standing on them
if (player->yinertia < 0 || player->CenterY() > o->Top())
{
o->flags &= ~FLAG_SOLID_BRICK;
}
else
{
o->flags |= FLAG_SOLID_BRICK;
}
// spin
uint8_t angle = o->timer2 / 4;
int xoff, yoff;
xoff = xinertia_from_angle(angle, o->timer3 << CSF);
yoff = yinertia_from_angle(angle, o->timer3 << CSF);
o->xmark = (xoff / 4) + ballos->x;
o->ymark = ((yoff / 4) + (16 << CSF)) + ballos->y;
switch(abs(platform_speed))
{
case 1:
if ((o->timer2 % 4) == 0)
{
o->speed = (o->ymark - o->y) / 4;
}
break;
case 2:
if ((o->timer2 & 2) == 0)
{
o->speed = (o->ymark - o->y) / 2;
}
break;
default:
o->speed = (o->ymark - o->y);
break;
}
o->xinertia = (o->xmark - o->x);
o->yinertia = o->speed;
}
/*
void c------------------------------() {}
*/
bool BallosBoss::passed_xcoord(bool ltgt, int xcoord, bool reset)
{
int next_x = main->x + main->xinertia;
bool result;
if (ltgt == LESS_THAN)
result = (next_x <= xcoord);
else
result = (next_x >= xcoord);
if (result && reset)
{
main->x = xcoord;
main->xinertia = 0;
}
return result;
}
bool BallosBoss::passed_ycoord(bool ltgt, int ycoord, bool reset)
{
int next_y = main->y + main->yinertia;
bool result;
if (ltgt == LESS_THAN)
result = (next_y <= ycoord);
else
result = (next_y >= ycoord);
if (result && reset)
{
main->y = ycoord;
main->yinertia = 0;
}
return result;
}
/*
void c------------------------------() {}
*/
================================================
FILE: ai/boss/ballos.fdh
================================================
//hash:4fc91ee5
//automatically generated by Makegen
/* located in game.cpp */
//----------------[referenced from ai/boss/ballos.cpp]---------------//
void megaquake(int quaketime, int snd);
/* located in ObjManager.cpp */
//----------------[referenced from ai/boss/ballos.cpp]---------------//
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//----------------[referenced from ai/boss/ballos.cpp]---------------//
Caret *effect(int x, int y, int effectno);
/* located in player.cpp */
//----------------[referenced from ai/boss/ballos.cpp]---------------//
void hurtplayer(int damage);
/* located in trig.cpp */
//----------------[referenced from ai/boss/ballos.cpp]---------------//
int xinertia_from_angle(uint8_t angle, int speed);
int yinertia_from_angle(uint8_t angle, int speed);
/* located in ai/ai.cpp */
//----------------[referenced from ai/boss/ballos.cpp]---------------//
void transfer_damage(Object *o, Object *target);
void DeleteObjectsOfType(int type);
void KillObjectsOfType(int type);
/* located in ai/sym/smoke.cpp */
//----------------[referenced from ai/boss/ballos.cpp]---------------//
void SmokeXY(int x, int y, int nclouds, int rangex, int rangey, Object *push_behind);
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
Object *SmokePuff(int x, int y);
/* located in ai/boss/ballos.cpp */
//----------------[referenced from ai/boss/ballos.cpp]---------------//
void ondeath_ballos(Object *o);
void ai_ballos_rotator(Object *o);
void aftermove_ballos_rotator(Object *o);
static void SetRotatorStates(int newstate);
static void spawn_impact_puffs(Object *o);
static void make_puff(int x, int y, int bd);
void ai_ballos_platform(Object *o);
/* located in sound/sound.cpp */
//----------------[referenced from ai/boss/ballos.cpp]---------------//
void sound(int snd);
/* located in common/stat.cpp */
//----------------[referenced from ai/boss/ballos.cpp]---------------//
void stat(const char *fmt, ...);
/* located in common/misc.cpp */
//----------------[referenced from ai/boss/ballos.cpp]---------------//
int random(int min, int max);
================================================
FILE: ai/boss/ballos.h
================================================
#ifndef _BALLOS_H
#define _BALLOS_H
#define NUM_EYES 2
enum TRIGDIR { LESS_THAN=0, GREATER_THAN=1 };
class BallosBoss : public StageBoss
{
public:
void OnMapEntry();
void Run();
void RunAftermove();
private:
void RunForm1(Object *o);
void RunForm2(Object *o);
void RunForm3(Object *o);
void RunComeDown(Object *o);
void RunDefeated(Object *o);
void run_eye(int index);
void place_eye(int index);
void SetEyeStates(int newstate);
bool passed_xcoord(bool ltgt, int xcoord, bool reset=false);
bool passed_ycoord(bool ltgt, int ycoord, bool reset=false);
Object *main;
Object *body;
Object *eye[NUM_EYES];
Object *shield; // top shield to cover eyes from above
};
#endif
================================================
FILE: ai/boss/core.cpp
================================================
#include "../stdai.h"
#include "../almond/almond.h"
#include "core.h"
#include "core.fdh"
/* ------------------------------------------------------------------------------------------ */
/* CODE FOR THE CORE BOSS (ALMOND) */
/* ------------------------------------------------------------------------------------------ */
// these are the meanings of the various pieces inside pieces[] array
#define MC1 0 // minicores 1 through 5
#define MC2 1
#define MC3 2
#define MC4 3
#define MC5 4
#define CFRONT 5 // front half of the core body
#define CBACK 6 // back half of the core body
// states for the core
#define CORE_SLEEP 10
#define CORE_CLOSED 200
#define CORE_OPEN 210
#define CORE_GUST 220
// and the states for the minicores
#define MC_SLEEP 0
#define MC_THRUST 10
#define MC_CHARGE_FIRE 20
#define MC_FIRE 30
#define MC_FIRED 40
#define MC_RETREAT 50
// makes the core open his mouth and handles flashing red when hit
#define OPEN_MOUTH \
{ \
RunOpenMouth(); \
}
// makes the core close his mouth
#define CLOSE_MOUTH \
{ \
pieces[CFRONT]->frame = 2; \
pieces[CBACK]->frame = 0; \
}
INITFUNC(AIRoutines)
{
ONTICK(OBJ_MINICORE, ai_minicore);
ONTICK(OBJ_MINICORE_SHOT, ai_minicore_shot);
AFTERMOVE(OBJ_CORE_BACK, ai_core_back);
AFTERMOVE(OBJ_CORE_FRONT, ai_core_front);
ONTICK(OBJ_CORE_GHOSTIE, ai_core_ghostie);
ONTICK(OBJ_CORE_BLAST, ai_core_blast);
}
/*
void c------------------------------() {}
*/
// called at the entry to the Core room.
// initilize all the pieces of the Core boss.
void CoreBoss::OnMapEntry(void)
{
stat("CoreBoss::OnMapEntry");
o = CreateObject(0, 0, OBJ_CORE_CONTROLLER);
game.stageboss.object = o;
o->state = 10;
o->flags = (FLAG_SHOW_FLOATTEXT | FLAG_IGNORE_SOLID | FLAG_SCRIPTONDEATH);
o->id2 = 1000;
o->x = (1207 << CSF);
o->y = (212 << CSF);
o->xinertia = o->yinertia = 0;
o->hp = 650;
o->sprite = SPR_CORESHOOTMARKER;
// spawn all the pieces in the correct z-order
pieces[3] = CreateMinicore(o);
pieces[4] = CreateMinicore(o);
pieces[CFRONT] = CreateObject(0, 0, OBJ_CORE_FRONT);
pieces[CBACK] = CreateObject(0, 0, OBJ_CORE_BACK);
pieces[0] = CreateMinicore(o);
pieces[1] = CreateMinicore(o);
pieces[2] = CreateMinicore(o);
// set up the front piece
pieces[CFRONT]->sprite = SPR_CORE_FRONT;
pieces[CFRONT]->state = CORE_SLEEP;
pieces[CFRONT]->linkedobject = o;
pieces[CFRONT]->flags |= (FLAG_IGNORE_SOLID | FLAG_INVULNERABLE);
pieces[CFRONT]->frame = 2; // mouth closed
// set up our back piece
pieces[CBACK]->sprite = SPR_CORE_BACK;
pieces[CBACK]->state = CORE_SLEEP;
pieces[CBACK]->linkedobject = o;
pieces[CBACK]->flags |= (FLAG_IGNORE_SOLID | FLAG_INVULNERABLE);
pieces[CBACK]->frame = 0;
// set the positions of all the minicores
pieces[0]->x = (o->x - 0x1000);
pieces[0]->y = (o->y - 0x8000);
pieces[1]->x = (o->x + 0x2000);
pieces[1]->y = o->y;
pieces[2]->x = (o->x - 0x1000);
pieces[2]->y = (o->y + 0x8000);
pieces[3]->x = (o->x - 0x6000);
pieces[3]->y = (o->y + 0x4000);
pieces[4]->x = (o->x - 0x6000);
pieces[4]->y = (o->y - 0x4000);
this->hittimer = 0;
}
void CoreBoss::OnMapExit()
{
// ensure we are called no longer
game.stageboss.object = NULL;
o = NULL;
}
/*
void c------------------------------() {}
*/
void CoreBoss::Run()
{
bool do_thrust = false;
int i;
if (!o) return;
//stat("state = %d", o->state);
switch(o->state)
{
case CORE_SLEEP: break; // core is asleep
// Core's mouth is closed.
// Core targets player point but does not update it during the state.
// This is also the state set via BOA to awaken the core.
case CORE_CLOSED:
{
o->state = CORE_CLOSED+1;
o->timer = 0;
StopWaterStream();
o->xmark = player->x;
o->ymark = player->y;
}
case CORE_CLOSED+1:
{
// open mouth after 400 ticks
if (o->timer > 400)
{
if (++o->timer2 > 3)
{ // every 3rd time do gusting left and big core blasts
o->timer2 = 0;
o->state = CORE_GUST;
}
else
{
o->state = CORE_OPEN;
}
do_thrust = true;
}
}
break;
// Core's mouth is open.
// Core moves towards player, and updates the position throughout
// the state (is "aggressive" about seeking him).
// Core fires ghosties, and curly targets it.
case CORE_OPEN:
{
o->state = CORE_OPEN+1;
o->timer = 0;
// gonna open mouth, so save the current HP so we'll
// know how much damage we've taken this time.
o->savedhp = o->hp;
}
case CORE_OPEN+1:
{
o->xmark = player->x;
o->ymark = player->y;
// must call constantly for red-flashing when hit
OPEN_MOUTH;
// hint curly to target us
if ((o->timer % 64) == 1)
{
o->CurlyTargetHere();
}
// spawn ghosties
if (o->timer < 200)
{
if ((o->timer % 20)==0)
{
CreateObject(o->x + (random(-48, -16) << CSF), \
o->y + (random(-64, 64) << CSF), \
OBJ_CORE_GHOSTIE);
}
}
// close mouth when 400 ticks have passed or we've taken more than 200 damage
if (o->timer > 400 || (o->savedhp - o->hp) >= 200)
{
o->state = CORE_CLOSED;
CLOSE_MOUTH;
do_thrust = true;
}
}
break;
case CORE_GUST:
{
o->state = CORE_GUST+1;
o->timer = 0;
StartWaterStream();
}
case CORE_GUST+1:
{
// spawn water droplet effects and push player
Object *droplet = CreateObject(player->x + ((random(-50, 150)<y + (random(-160, 160)<dir = LEFT;
player->xinertia -= 0x20;
OPEN_MOUTH;
// spawn the big white blasts
if (o->timer==300 || o->timer==350 || o->timer==400)
{
EmFireAngledShot(pieces[CFRONT], OBJ_CORE_BLAST, 0, 3<timer > 400)
{
o->state = CORE_CLOSED;
CLOSE_MOUTH;
do_thrust = true;
}
}
break;
case 500: // defeated!!
{
StopWaterStream();
map.wlforcestate = WL_CALM;
o->state = 501;
o->timer = 0;
o->xinertia = o->yinertia = 0;
game.curlytarget.timeleft = 0;
CLOSE_MOUTH;
game.quaketime = 20;
SmokeXY(pieces[CBACK]->x, pieces[CBACK]->CenterY(), 20, 128, 64);
// tell all the MC's to retreat
for(i=0;i<5;i++)
{
pieces[i]->flags &= ~(FLAG_SHOOTABLE & FLAG_INVULNERABLE);
pieces[i]->state = MC_RETREAT;
}
}
case 501:
{
o->timer++;
if ((o->timer & 0x0f) != 0)
{
SmokeXY(pieces[CBACK]->x, pieces[CBACK]->CenterY(), 1, 64, 32);
}
if (o->timer & 2)
o->x -= (1 << CSF);
else
o->x += (1 << CSF);
#define CORE_DEATH_TARGET_X 0x7a000
#define CORE_DEATH_TARGET_Y 0x16000
o->xinertia += (o->x > CORE_DEATH_TARGET_X) ? -0x80 : 0x80;
o->yinertia += (o->y > CORE_DEATH_TARGET_Y) ? -0x80 : 0x80;
}
break;
case 600: // teleported away by Misery
{
o->xinertia = 0;
o->yinertia = 0;
o->state++;
//sound(SND_TELEPORT);
pieces[CFRONT]->clip_enable = pieces[CBACK]->clip_enable = 1;
o->timer = sprites[pieces[CFRONT]->sprite].h;
}
case 601:
{
pieces[CFRONT]->display_xoff = pieces[CBACK]->display_xoff = random(-8, 8);
pieces[CFRONT]->clipy2 = o->timer;
pieces[CBACK]->clipy2 = o->timer;
if (--o->timer < 0)
{
pieces[CFRONT]->invisible = true;
pieces[CBACK]->invisible = true;
// restore status bars
game.stageboss.object = NULL;
game.bossbar.object = NULL;
o->Delete(); o = NULL;
return;
}
}
break;
}
if (do_thrust)
{
// tell all the minicores to jump to a new position
for(i=0;i<5;i++)
{
pieces[i]->state = MC_THRUST;
}
quake(20);
sound(SND_CORE_THRUST);
}
// fire the minicores in any awake non-dead state
if (o->state >= CORE_CLOSED && o->state < 500)
{
o->timer++;
// fire off each minicore sequentially...
switch(o->timer)
{
case 80+0: pieces[0]->state = MC_CHARGE_FIRE; break;
case 80+30: pieces[1]->state = MC_CHARGE_FIRE; break;
case 80+60: pieces[2]->state = MC_CHARGE_FIRE; break;
case 80+90: pieces[3]->state = MC_CHARGE_FIRE; break;
case 80+120: pieces[4]->state = MC_CHARGE_FIRE; break;
}
// move main core towards a spot in front of target
o->xinertia += (o->x > (o->xmark + (160<yinertia += (o->y > o->ymark - (o->Height() / 2)) ? -4 : 4;
}
// set up our shootable status--you never actually hit the core (CFRONT),
// but if it's mouth is open, make us, the invisible controller object, shootable.
if (pieces[CFRONT]->frame==2)
{
o->flags &= ~FLAG_SHOOTABLE;
pieces[CFRONT]->flags |= FLAG_INVULNERABLE;
}
else
{
o->flags |= FLAG_SHOOTABLE;
pieces[CFRONT]->flags &= ~FLAG_INVULNERABLE;
}
LIMITX(0x80);
LIMITY(0x80);
}
/*
void c------------------------------() {}
*/
void CoreBoss::RunOpenMouth()
{
// flash red when struck, else stay in Mouth Open frame
pieces[CFRONT]->frame = 0;
pieces[CBACK]->frame = 0;
if (o->shaketime)
{
this->hittimer++;
if (this->hittimer & 2)
{
pieces[CFRONT]->frame = 1;
pieces[CBACK]->frame = 1;
}
}
else
{
this->hittimer = 0;
}
}
void CoreBoss::StartWaterStream(void)
{
// bring the water up if it's not already up, but don't keep it up
// if it's already been up on it's own because that's not fair
if (map.wlstate == WL_DOWN)
map.wlforcestate = WL_UP;
game.quaketime = 100;
StartStreamSound(400);
}
void CoreBoss::StopWaterStream(void)
{
// bring the water down again if it's not already
if (map.wlstate == WL_UP)
map.wlforcestate = WL_CYCLE;
StopLoopSounds();
}
/*
void c------------------------------() {}
*/
// the front (mouth) piece of the main core
void ai_core_front(Object *o)
{
Object *core = o->linkedobject;
if (!core) { o->Delete(); return; }
o->x = core->x - 0x4800;
o->y = core->y - 0x5e00;
}
// the back (unanimated) piece of the main core
void ai_core_back(Object *o)
{
Object *core = o->linkedobject;
if (!core) { o->Delete(); return; }
o->x = core->x + (0x5800 - (8 << CSF));
o->y = core->y - 0x5e00;
}
/*
void c------------------------------() {}
*/
static Object *CreateMinicore(Object *core)
{
Object *o;
o = CreateObject(0, 0, OBJ_MINICORE);
o->linkedobject = core;
o->flags = (FLAG_SHOOTABLE | FLAG_INVULNERABLE | FLAG_IGNORE_SOLID);
o->hp = 1000;
o->state = MC_SLEEP;
return o;
}
void ai_minicore(Object *o)
{
Object *core = o->linkedobject;
if (!core) { o->Delete(); return; }
switch(o->state)
{
case MC_SLEEP: // idle & mouth closed
o->frame = 2;
o->xmark = o->x;
o->ymark = o->y;
break;
case MC_THRUST: // thrust (move to random new pos)
o->state = MC_THRUST+1;
o->frame = 2;
o->timer = 0;
o->xmark = core->x + (random(-128, 32) << CSF);
o->ymark = core->y + (random(-64, 64) << CSF);
case MC_THRUST+1:
if (++o->timer > 50)
{
o->frame = 0;
}
break;
case MC_CHARGE_FIRE: // charging for fire
o->state = MC_CHARGE_FIRE+1;
o->timer = 0;
case MC_CHARGE_FIRE+1: // flash blue
o->timer++;
o->frame = ((o->timer >> 1) & 1);
if (o->timer > 20)
{
o->state = MC_FIRE;
}
break;
case MC_FIRE: // firing
o->state = MC_FIRE+1;
o->frame = 2; // close mouth again
o->timer = 0;
o->xmark = o->x + (random(24, 48) << CSF);
o->ymark = o->y + (random(-4, 4) << CSF);
case MC_FIRE+1:
if (++o->timer > 50)
{
o->state = MC_FIRED;
o->frame = 0;
}
else if (o->timer==1 || o->timer==3)
{
// fire at player at speed (2<state = MC_RETREAT+1;
o->frame = 2;
o->xinertia = o->yinertia = 0;
case MC_RETREAT+1: // retreat back into the abyss
o->xinertia += 0x20;
if (o->x > ((map.xsize*TILE_W)<Delete();
}
break;
}
if (o->state < MC_RETREAT)
{
// jump back when shot
if (o->shaketime)
{
o->xmark += 0x400;
}
o->x += (o->xmark - o->x) / 16;
o->y += (o->ymark - o->y) / 16;
}
// don't let them kill us
o->hp = 1000;
// invincible when mouth is closed
if (o->frame != 2)
o->flags &= ~FLAG_INVULNERABLE;
else
o->flags |= FLAG_INVULNERABLE;
}
void ai_minicore_shot(Object *o)
{
if (++o->timer2 > 150)
{
effect(o->CenterX(), o->CenterY(), EFFECT_FISHY);
o->Delete();
}
ai_animate2(o);
}
// shutter made noise when opening
// curly looks up at no 4
/*
void c------------------------------() {}
*/
void ai_core_ghostie(Object *o)
{
char hit = 0;
if (o->xinertia > 0 && o->blockr) hit = 1;
if (o->xinertia < 0 && o->blockl) hit = 1;
if (o->yinertia > 0 && o->blockd) hit = 1;
if (o->yinertia < 0 && o->blocku) hit = 1;
o->xinertia -= 0x20;
LIMITX(0x400);
if (hit)
{
effect(o->CenterX(), o->CenterY(), EFFECT_FISHY);
o->Delete();
}
ai_animate2(o);
}
void ai_core_blast(Object *o)
{
if (++o->timer > 200) o->Delete();
ANIMATE(2, 0, 1);
}
================================================
FILE: ai/boss/core.fdh
================================================
//hash:90a7f1af
//automatically generated by Makegen
/* located in game.cpp */
//-----------------[referenced from ai/boss/core.cpp]----------------//
void quake(int quaketime, int snd);
/* located in ObjManager.cpp */
//-----------------[referenced from ai/boss/core.cpp]----------------//
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//-----------------[referenced from ai/boss/core.cpp]----------------//
Caret *effect(int x, int y, int effectno);
/* located in trig.cpp */
//-----------------[referenced from ai/boss/core.cpp]----------------//
void EmFireAngledShot(Object *o, int objtype, int rand_variance, int speed);
/* located in ai/ai.cpp */
//-----------------[referenced from ai/boss/core.cpp]----------------//
void ai_animate2(Object *o);
/* located in ai/sym/smoke.cpp */
//-----------------[referenced from ai/boss/core.cpp]----------------//
void SmokeXY(int x, int y, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in ai/boss/core.cpp */
//-----------------[referenced from ai/boss/core.cpp]----------------//
void ai_core_front(Object *o);
void ai_core_back(Object *o);
static Object *CreateMinicore(Object *core);
void ai_minicore(Object *o);
void ai_minicore_shot(Object *o);
void ai_core_ghostie(Object *o);
void ai_core_blast(Object *o);
/* located in sound/sound.cpp */
//-----------------[referenced from ai/boss/core.cpp]----------------//
void sound(int snd);
void StartStreamSound(int freq);
void StopLoopSounds(void);
/* located in common/stat.cpp */
//-----------------[referenced from ai/boss/core.cpp]----------------//
void stat(const char *fmt, ...);
/* located in common/misc.cpp */
//-----------------[referenced from ai/boss/core.cpp]----------------//
int random(int min, int max);
================================================
FILE: ai/boss/core.h
================================================
#ifndef _COREBOSS_H
#define _COREBOSS_H
class CoreBoss : public StageBoss
{
public:
void OnMapEntry();
void OnMapExit();
void Run();
private:
void RunOpenMouth();
void StartWaterStream(void);
void StopWaterStream(void);
Object *o;
Object *pieces[8];
int hittimer;
};
#endif
================================================
FILE: ai/boss/heavypress.cpp
================================================
#include "../stdai.h"
#include "heavypress.h"
#include "heavypress.fdh"
// position in Hell (note this is the center position, because there is a draw point)
#define HELL_X (160<type].hurt_sound = SND_ENEMY_HURT_COOL;
objprop[o->type].shaketime = 8;
o->flags = (FLAG_SHOW_FLOATTEXT | FLAG_SCRIPTONDEATH | \
FLAG_SOLID_BRICK | FLAG_IGNORE_SOLID);
o->damage = 10;
o->hp = 700;
o->id2 = 1000; // defeated script
// setup bboxes
center_bbox = sprites[o->sprite].frame[0].dir[0].pf_bbox;
fullwidth_bbox = sprites[o->sprite].frame[2].dir[0].pf_bbox;
sprites[o->sprite].bbox = fullwidth_bbox;
}
/*
void c------------------------------() {}
*/
void HeavyPress::Run()
{
if (!o) return;
//AIDEBUG;
run_defeated();
run_passageway();
switch(o->state)
{
// fight begin (script-triggered)
case 100:
{
// get coordinates of the blocks to destroy as it's uncovered
uncover_left = (o->Left() >> CSF) / TILE_W;
uncover_right = (o->Right() >> CSF) / TILE_W;
uncover_y = ((o->Bottom() >> CSF) / TILE_H) + 1;
// create shielding objects for invincibility on either side
// don't use puppet 1 because Deleet's use that when they explode.
shield_left = CreateObject(o->x, o->y, OBJ_HEAVY_PRESS_SHIELD);
shield_left->sprite = SPR_BBOX_PUPPET_2;
sprites[shield_left->sprite].bbox = fullwidth_bbox;
sprites[shield_left->sprite].bbox.x2 = center_bbox.x1 - 1;
shield_right = CreateObject(o->x, o->y, OBJ_HEAVY_PRESS_SHIELD);
shield_right->sprite = SPR_BBOX_PUPPET_3;
sprites[shield_right->sprite].bbox = fullwidth_bbox;
sprites[shield_right->sprite].bbox.x1 = center_bbox.x2 + 1;
// then switch to small pfbox where we're only hittable in the center
o->frame = 0;
sprites[o->sprite].bbox = center_bbox;
o->flags |= FLAG_SHOOTABLE;
o->flags &= ~FLAG_INVULNERABLE;
o->state = 101;
o->timer = -100; // pause a moment before Butes come
}
case 101:
{ // fire lightning
CreateObject(o->x, o->y+0x7800, OBJ_HP_LIGHTNING);
o->state = 102;
}
case 102:
{
// spawn butes on alternating sides
switch(o->timer++)
{
case 0:
case 160:
CreateObject(MAPX(17), MAPY(15), OBJ_BUTE_FALLING)->dir = UP;
break;
case 80:
case 240:
CreateObject(MAPX(3), MAPY(15), OBJ_BUTE_FALLING)->dir = UP;
break;
case 298:
// fire lightning next frame
o->state = 101;
o->timer = 0;
break;
}
// uncover as it's damaged
if (o->hp < (uncover_y * 70) && uncover_y > 1)
{
uncover_y--;
sound(SND_BLOCK_DESTROY);
for(int x=uncover_left;x<=uncover_right;x++)
map_ChangeTileWithSmoke(x, uncover_y, 0, 4);
}
}
break;
}
// flashing when hit. note, setting frame to 0 would mess up the
// defeated sequence, except that shaketime is always expired by the time
// the eye is opened, and this way we can still flash on the last shot.
if (o->shaketime)
o->frame = (o->shaketime & 2) ? 3 : 0;
}
void HeavyPress::run_defeated()
{
switch(o->state)
{
// defeated (set by ondeath script, after a brief pause)
case 500:
{
o->flags &= ~(FLAG_SHOOTABLE | FLAG_INVULNERABLE);
o->state = 501;
o->timer = 0;
o->frame = 0;
if (shield_left) { shield_left->Delete(); shield_left = NULL; }
if (shield_right) { shield_right->Delete(); shield_right = NULL; }
sprites[o->sprite].bbox = fullwidth_bbox;
// get rid of enemies--the butes can stay, though.
KillObjectsOfType(OBJ_HP_LIGHTNING);
KillObjectsOfType(OBJ_ROLLING);
}
case 501:
{
o->timer++;
if ((o->timer % 16) == 0)
{
sound(SND_BLOCK_DESTROY);
SmokePuff(o->x + random(-60<y + random(-40<timer)
{
case 95: o->frame = 1; break; // partially open
case 98: o->frame = 2; break; // fully open
case 101:
{
o->state = 502; // fall
o->damage = 127;
o->flags &= ~FLAG_SOLID_BRICK;
}
break;
}
}
break;
// falling (haven't hit floor yet)
case 502:
{
// hit floor: bounce. The floor tiles are not
// solid to NPC's so we can't use blockd.
if (o->y > HELL_FLOOR)
{
o->state = 503;
o->yinertia = -0x200;
// kill floor
int y = (o->Bottom() >> CSF) / TILE_H;
for(int x=uncover_left-1;x<=uncover_right+1;x++)
{
map_ChangeTileWithSmoke(x, y, 0, 1, true);
sound(SND_BLOCK_DESTROY);
}
if (o->y > HELL_BOTTOM)
o->state = 0;
}
}
case 503: // falling, and hit floor already
{
o->yinertia += 0x40;
}
break;
}
}
// states for when it's in the Passageway
void HeavyPress::run_passageway()
{
switch(o->state)
{
// "dead"/smoking on Passageway floor
// note they may also be coming back from Statue Room.
// script-triggered.
case 20:
{
o->state = 21;
o->x = PWAY_X;
o->y = PWAY_BOTTOM;
o->flags &= ~(FLAG_SHOOTABLE | FLAG_INVULNERABLE | FLAG_SOLID_BRICK);
o->damage = 0;
}
case 21:
{
if ((++o->timer % 16) == 0)
{
int x = random(o->Left(), o->Right());
int y = random(o->Top(), o->Bottom());
SmokePuff(x, y);
effect(x, y, EFFECT_BOOMFLASH);
}
}
break;
// falling through Passageway when you jump down hole in post-defeat scene.
// script-triggered.
case 30:
{
o->state = 31;
o->frame = 2; // eye open
COPY_PFBOX; // ensure that we are using the full-width bbox
o->x = PWAY_X;
o->y = PWAY_TOP;
}
case 31:
{
o->y += (4 << CSF);
if (o->y >= PWAY_BOTTOM)
{
o->y = PWAY_BOTTOM;
sound(SND_MISSILE_HIT);
o->frame = 0;
for(int i=0;i<5;i++)
SmokePuff(random(o->Left(), o->Right()), o->Bottom());
o->state = 20; // continue smoking
}
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_hp_lightning(Object *o)
{
switch(o->state)
{
case 0:
{
sound(SND_TELEPORT);
o->sprite = SPR_HP_CHARGE;
o->state = 1;
}
case 1:
{
ANIMATE(0, 0, 2);
if (++o->timer > 50)
{
o->state = 10;
o->animtimer = 0;
o->frame = 3;
o->damage = 10;
o->sprite = SPR_HP_LIGHTNING;
sound(SND_LIGHTNING_STRIKE);
// smoke on floor where it struck
SmokeXY(o->CenterX(), o->Bottom() - (7<frame > 6)
o->Delete();
}
break;
}
}
================================================
FILE: ai/boss/heavypress.fdh
================================================
//hash:e63ba074
//automatically generated by Makegen
/* located in ObjManager.cpp */
//--------------[referenced from ai/boss/heavypress.cpp]-------------//
Object *CreateObject(int x, int y, int type);
/* located in map.cpp */
//--------------[referenced from ai/boss/heavypress.cpp]-------------//
void map_ChangeTileWithSmoke(int x, int y, int newtile, int nclouds, bool boomflash, Object *push_behind);
/* located in caret.cpp */
//--------------[referenced from ai/boss/heavypress.cpp]-------------//
Caret *effect(int x, int y, int effectno);
/* located in ai/ai.cpp */
//--------------[referenced from ai/boss/heavypress.cpp]-------------//
void KillObjectsOfType(int type);
/* located in ai/hell/ballos_priest.cpp */
//--------------[referenced from ai/boss/heavypress.cpp]-------------//
static void run_defeated(Object *o);
/* located in ai/sym/smoke.cpp */
//--------------[referenced from ai/boss/heavypress.cpp]-------------//
Object *SmokePuff(int x, int y);
void SmokeXY(int x, int y, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in ai/boss/heavypress.cpp */
//--------------[referenced from ai/boss/heavypress.cpp]-------------//
void ai_hp_lightning(Object *o);
/* located in sound/sound.cpp */
//--------------[referenced from ai/boss/heavypress.cpp]-------------//
void sound(int snd);
/* located in common/misc.cpp */
//--------------[referenced from ai/boss/heavypress.cpp]-------------//
int random(int min, int max);
================================================
FILE: ai/boss/heavypress.h
================================================
#ifndef _HEAVYPRESS_H
#define _HEAVYPRESS_H
class HeavyPress : public StageBoss
{
public:
void OnMapEntry();
void Run();
private:
void run_defeated();
void run_passageway();
Object *o;
Object *shield_left, *shield_right;
int uncover_left, uncover_right;
int uncover_y;
SIFRect fullwidth_bbox;
SIFRect center_bbox;
};
#endif
================================================
FILE: ai/boss/ironhead.cpp
================================================
#include "../stdai.h"
#include "ironhead.h"
#include "ironhead.fdh"
#define ARENA_TOP 2
#define ARENA_BOTTOM 13
#define IRONH_SPAWN_FISHIES 100
#define IRONH_SWIM 250
#define IRONH_DEFEATED 1000
INITFUNC(AIRoutines)
{
ONDEATH(OBJ_IRONH, ondeath_ironhead);
ONTICK(OBJ_IRONH_FISHY, ai_ironh_fishy);
ONTICK(OBJ_IRONH_SHOT, ai_ironh_shot);
ONTICK(OBJ_BRICK_SPAWNER, ai_brick_spawner);
ONTICK(OBJ_IRONH_BRICK, ai_ironh_brick);
ONTICK(OBJ_IKACHAN_SPAWNER, ai_ikachan_spawner);
ONTICK(OBJ_IKACHAN, ai_ikachan);
ONTICK(OBJ_MOTION_WALL, ai_motion_wall);
objprop[OBJ_IRONH].hurt_sound = SND_ENEMY_HURT_COOL;
}
/*
void c------------------------------() {}
*/
void IronheadBoss::OnMapEntry()
{
o = CreateObject(0, 0, OBJ_IRONH);
o->damage = 10;
o->hp = 400;
o->state = IRONH_SPAWN_FISHIES;
game.stageboss.object = o;
this->hittimer = 0;
}
void IronheadBoss::OnMapExit()
{
o = NULL;
game.stageboss.object = NULL;
}
/*
void c------------------------------() {}
*/
void IronheadBoss::Run(void)
{
if (!o) return;
switch(o->state)
{
case IRONH_SPAWN_FISHIES:
{
o->timer = 0;
o->state++;
}
case IRONH_SPAWN_FISHIES+1: // wave of fishies comes in
{
if (++o->timer > 50)
{
o->timer = 0;
o->state = IRONH_SWIM;
}
if ((o->timer & 3)==0)
{
CreateObject((random(15, 18) * TILE_W) << CSF, \
(random(ARENA_TOP, ARENA_BOTTOM) * TILE_H) << CSF, \
OBJ_IRONH_FISHY);
}
}
break;
case IRONH_SWIM: // swimming attack
{
o->state++;
if (o->dir==RIGHT)
{ // coming up on player from left
o->x = 0x1e000;
o->y = player->y;
}
else
{ // returning from right side of screen
o->x = 0x5a000;
o->y = (random(ARENA_TOP, ARENA_BOTTOM) * TILE_H) << CSF;
}
o->xmark = o->x;
o->ymark = o->y;
o->yinertia = random(-0x200, 0x200);
o->xinertia = random(-0x200, 0x200);
o->flags |= FLAG_SHOOTABLE;
}
case IRONH_SWIM+1:
{
ANIMATE(2, 0, 7);
if (o->dir==RIGHT)
{
o->xmark += 0x400;
}
else
{
o->xmark -= 0x200;
o->ymark += (o->ymark < player->y) ? 0x200: -0x200;
}
//debugXline(o->xmark, 255,0,0);
//debugYline(o->ymark, 0,255,0);
o->xinertia += (o->x > o->xmark) ? -8 : 8;
o->yinertia += (o->y > o->ymark) ? -8 : 8;
LIMITY(0x200);
if (o->dir==RIGHT)
{
if (o->x > 0x5a000)
{
o->dir = LEFT;
o->state = IRONH_SPAWN_FISHIES;
}
}
else
{
if (o->x < 0x22000)
{
o->dir = RIGHT;
o->state = IRONH_SPAWN_FISHIES;
}
}
if (o->dir==LEFT)
{
// fire bullets at player when retreating
switch(++o->timer)
{
case 300:
case 310:
case 320:
{
Object *shot = SpawnObjectAtActionPoint(o, OBJ_IRONH_SHOT);
shot->xinertia = (random(-3, 0) << CSF);
shot->yinertia = (random(-3, 3) << CSF);
sound(SND_EM_FIRE);
}
break;
}
}
}
break;
case IRONH_DEFEATED:
{
sound(SND_EXPL_SMALL);
o->state = IRONH_DEFEATED+1;
o->flags &= ~FLAG_SHOOTABLE;
o->frame = 8;
o->damage = 0;
o->xmark = o->x;
o->ymark = o->y;
o->xinertia = o->yinertia = 0;
o->timer = 0;
KillObjectsOfType(OBJ_IRONH_FISHY);
KillObjectsOfType(OBJ_IRONH_BRICK);
KillObjectsOfType(OBJ_BRICK_SPAWNER);
game.quaketime = 20;
for(int i=0;i<32;i++)
ironh_smokecloud(o);
}
case IRONH_DEFEATED+1: // retreat back to left...
{
o->xmark -= (1<x = o->xmark + (random(-1, 1) << CSF);
o->y = o->ymark + (random(-1, 1) << CSF);
o->timer++;
if ((o->timer & 3)==0) ironh_smokecloud(o);
}
break;
}
// show pink "hit" frame when he's taking damage
o->sprite = SPR_IRONH;
if (o->shaketime)
{
this->hittimer++;
if (this->hittimer & 2)
{
o->sprite = SPR_IRONH_HURT;
}
}
else
{
this->hittimer = 0;
}
}
static void ironh_smokecloud(Object *o)
{
Object *smoke;
smoke = CreateObject(o->CenterX() + (random(-128, 128)<CenterY() + (random(-64, 64)<xinertia = random(-128, 128);
smoke->yinertia = random(-128, 128);
}
void ondeath_ironhead(Object *o)
{
StartScript(1000);
}
/*
void c------------------------------() {}
*/
void ai_ironh_fishy(Object *o)
{
switch(o->state)
{
case 0:
{
o->state = 10;
o->animtimer = 0;
o->yinertia = random(-0x200, 0x200);
o->xinertia = 0x800;
}
case 10: // harmless fishy
{
ANIMATE(2, 0, 1);
if (o->xinertia < 0)
{
o->damage = 3;
o->state = 20;
}
}
break;
case 20: // puffer fish
{
ANIMATE(2, 2, 3);
if (o->x < (48<Delete();
}
break;
}
if (o->blocku) o->yinertia = 0x200;
if (o->blockd) o->yinertia = -0x200;
o->xinertia -= 0x0c;
}
void ai_ironh_shot(Object *o)
{
if (!o->state)
{
if (++o->timer > 20)
{
o->state = 1;
o->xinertia = o->yinertia = 0;
o->timer2 = 0;
}
}
else
{
o->xinertia += 0x20;
}
ANIMATE(0, 0, 2);
if (++o->timer2 > 100 && !o->onscreen)
{
o->Delete();
}
if ((o->timer2 & 3)==1) sound(SND_IRONH_SHOT_FLY);
}
void ai_brick_spawner(Object *o)
{
Object *brick;
if (!o->state)
{
o->state = 1;
o->timer = random(0, 200);
}
if (!o->timer)
{ // time to spawn a block
o->state = 0;
brick = CreateObject(o->x, o->y + (random(-20, 20) << CSF), OBJ_IRONH_BRICK);
brick->dir = o->dir;
}
else o->timer--;
}
void ai_ironh_brick(Object *o)
{
if (!o->state)
{
int r = random(0, 9);
if (r == 9)
{
o->sprite = SPR_IRONH_BIGBRICK;
}
else
{
o->sprite = SPR_IRONH_BRICK;
o->frame = r;
}
o->xinertia = random(0x100, 0x200);
o->xinertia *= (o->dir == LEFT) ? -2 : 2;
o->yinertia = random(-0x200, 0x200);
o->state = 1;
}
// bounce off the walls
if (o->yinertia < 0 && o->y <= (16<CenterX(), o->y, EFFECT_BONKPLUS);
o->yinertia = -o->yinertia;
}
if (o->yinertia > 0 && (o->Bottom() >= (239<CenterX(), o->Bottom(), EFFECT_BONKPLUS);
o->yinertia = -o->yinertia;
}
if ((o->xinertia < 0 && (o->x < -0x2000)) ||\
(o->x > (map.xsize * TILE_W) << CSF))
{
o->Delete();
}
}
/*
void c------------------------------() {}
*/
void ai_ikachan_spawner(Object *o)
{
switch(o->state)
{
case 0:
{
// oops player got hurt--no ikachans for you!
// the deletion of the object causes the flag matching it's id2 to be set,
// which is how the scripts know not to give the alien medal.
if (player->hurt_time != 0)
o->Delete();
}
break;
case 10: // yay spawn ikachans!
{
o->timer++;
if ((o->timer & 3) == 1)
{
CreateObject(o->x, o->y + ((random(0, 13) * TILE_H) << CSF), OBJ_IKACHAN);
}
}
break;
}
}
void ai_ikachan(Object *o)
{
switch(o->state)
{
case 0:
{
o->state = 1;
o->timer = random(3, 20);
}
case 1: // he pushes ahead
{
if (--o->timer <= 0)
{
o->state = 2;
o->timer = random(10, 50);
o->frame = 1;
o->xinertia = 0x600;
}
}
break;
case 2: // after a short time his tentacles look less whooshed-back
{
if (--o->timer <= 0)
{
o->state = 3;
o->timer = random(40, 50);
o->frame = 2;
o->yinertia = random(-0x100, 0x100);
}
}
break;
case 3: // gliding
{
if (--o->timer <= 0)
{
o->state = 1;
o->timer = 0;
o->frame = 0;
}
o->xinertia -= 0x10;
}
break;
}
if (o->x > 720<Delete();
}
void ai_motion_wall(Object *o) // the walls at the top and bottom of the arena
{
o->x -= (6 << CSF);
if (o->x < (((19 * TILE_W) - 8) << CSF))
o->x += (SCREEN_WIDTH + 32) << CSF;
}
================================================
FILE: ai/boss/ironhead.fdh
================================================
//hash:c8dc1e1c
//automatically generated by Makegen
/* located in ObjManager.cpp */
//---------------[referenced from ai/boss/ironhead.cpp]--------------//
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//---------------[referenced from ai/boss/ironhead.cpp]--------------//
Caret *effect(int x, int y, int effectno);
/* located in tsc.cpp */
//---------------[referenced from ai/boss/ironhead.cpp]--------------//
ScriptInstance *StartScript(int scriptno, int pageno);
/* located in ai/ai.cpp */
//---------------[referenced from ai/boss/ironhead.cpp]--------------//
Object *SpawnObjectAtActionPoint(Object *o, int otype);
void KillObjectsOfType(int type);
/* located in ai/boss/ironhead.cpp */
//---------------[referenced from ai/boss/ironhead.cpp]--------------//
static void ironh_smokecloud(Object *o);
void ondeath_ironhead(Object *o);
void ai_ironh_fishy(Object *o);
void ai_ironh_shot(Object *o);
void ai_brick_spawner(Object *o);
void ai_ironh_brick(Object *o);
void ai_ikachan_spawner(Object *o);
void ai_ikachan(Object *o);
void ai_motion_wall(Object *o);
/* located in sound/sound.cpp */
//---------------[referenced from ai/boss/ironhead.cpp]--------------//
void sound(int snd);
/* located in common/misc.cpp */
//---------------[referenced from ai/boss/ironhead.cpp]--------------//
int random(int min, int max);
================================================
FILE: ai/boss/ironhead.h
================================================
#ifndef _IRONHEAD_H
#define _IRONHEAD_H
class IronheadBoss : public StageBoss
{
public:
void OnMapEntry();
void OnMapExit();
void Run();
private:
Object *o;
int hittimer;
};
#endif
================================================
FILE: ai/boss/omega.cpp
================================================
#include "../stdai.h"
#include "omega.h"
#include "omega.fdh"
#define OMEGA_RISE_HEIGHT 48
#define OMEGA_SINK_DEPTH 60
#define OMEGA_WAIT_TIME 7
#define OMEGA_SPEED (1<hp = omg.lasthp = 400;
game.stageboss.object->flags |= FLAG_SHOW_FLOATTEXT;
game.stageboss.object->flags &= ~FLAG_SOLID_MUSHY;
game.stageboss.object->sprite = SPR_OMG_CLOSED;
objprop[OBJ_OMEGA_BODY].shaketime = 0; // we do our own shaketime
pieces[LEFTLEG]->dir = LEFT;
pieces[RIGHTLEG]->dir = RIGHT;
pieces[LEFTSTRUT]->dir = LEFT;
pieces[RIGHTSTRUT]->dir = RIGHT;
omg.leg_descend = LEGD_MIN;
pieces[LEFTLEG]->sprite = pieces[RIGHTLEG]->sprite = SPR_OMG_LEG_INAIR;
game.stageboss.object->x = ((217 * TILE_W) + 5) << CSF;
game.stageboss.object->y = ((14 * TILE_H) - 5) << CSF;
omg.orgx = game.stageboss.object->x;
omg.orgy = game.stageboss.object->y;
omg.shaketimer = 0;
}
void OmegaBoss::OnMapExit(void)
{
if (game.stageboss.object)
game.stageboss.object->Delete();
}
/*
void c------------------------------() {}
*/
void OmegaBoss::Run(void)
{
Object *&o = game.stageboss.object;
if (omg.defeated)
return;
switch(o->state)
{
case 0: break; // waiting for trigger by script
case OMG_WAIT: // waits for a moment then go to omg.nextstate
{
o->state++;
omg.timer = 0;
}
case OMG_WAIT+1:
{
if (++omg.timer >= OMEGA_WAIT_TIME)
{
omg.timer = 0;
o->state = omg.nextstate;
}
}
break;
case OMG_APPEAR:
{
omg.timer = 0;
o->frame = 0;
o->state = OMG_MOVE;
omg.movedir = -OMEGA_SPEED;
o->flags |= FLAG_SOLID_MUSHY;
}
case OMG_MOVE: // rising up/going back into ground
{
o->frame = 0;
o->y += omg.movedir;
game.quaketime = 2;
omg.timer++;
if ((omg.timer & 3) == 0) sound(SND_QUAKE);
if (omg.timer >= omg.movetime)
{
if (omg.movedir < 0)
{ // was rising out of ground
omg.nextstate = OMG_JAWS_OPEN;
o->state = OMG_WAIT;
}
else
{ // was going back into ground
omg.timer = 0;
o->state = OMG_UNDERGROUND;
o->flags &= ~(FLAG_SOLID_MUSHY | FLAG_SOLID_BRICK);
}
}
}
break;
case OMG_JAWS_OPEN: // jaws opening
{
o->state++;
omg.animtimer = 0;
sound(SND_JAWS);
o->sprite = SPR_OMG_OPENED; // select "open" bounding box
}
case OMG_JAWS_OPEN+1:
{
omg.animtimer++;
if (omg.animtimer > 2)
{
omg.animtimer = 0;
o->frame++;
if (o->frame==3)
{
o->state = OMG_FIRE;
omg.firecounter = 0;
o->flags |= FLAG_SHOOTABLE;
}
}
}
break;
case OMG_FIRE: // throwing out red stuff
{
omg.firecounter++;
if (omg.firecounter > omg.startfiring && omg.firecounter < omg.stopfiring)
{
if ((omg.firecounter % omg.firefreq)==0)
{
Object *shot;
sound(SND_EM_FIRE);
shot = SpawnObjectAtActionPoint(o, OBJ_OMEGA_SHOT);
shot->xinertia = random(-omg.shotxspd, omg.shotxspd);
shot->yinertia = -0x333;
if (omg.form==2 || random(0, 9) < 8)
{
shot->sprite = SPR_OMG_BULLET_NORMAL;
shot->flags = FLAG_SHOOTABLE;
}
else
{
shot->sprite = SPR_OMG_BULLET_HARD;
shot->flags = (FLAG_SHOOTABLE | FLAG_INVULNERABLE);
}
shot->timer = (random(0, 7) >= 4) ? random(300, 400):0;
shot->damage = 4;
}
}
else if (omg.firecounter >= omg.endfirestate || sound_is_playing(SND_MISSILE_HIT))
{ // snap jaws shut
omg.animtimer = 0;
o->state = OMG_JAWS_CLOSE;
sound(SND_JAWS);
}
}
break;
case OMG_JAWS_CLOSE: // jaws closing
{
omg.animtimer++;
if (omg.animtimer > 2)
{
omg.animtimer = 0;
o->frame--;
if (o->frame == 0)
{
sound_stop(SND_JAWS);
sound(SND_BLOCK_DESTROY);
o->sprite = SPR_OMG_CLOSED; // select "closed" bounding box
o->flags &= ~FLAG_SHOOTABLE;
o->damage = 0;
if (omg.form == 1)
{ // form 1: return to sand
o->state = OMG_WAIT;
omg.nextstate = OMG_MOVE;
omg.movedir = OMEGA_SPEED;
omg.movetime = OMEGA_SINK_DEPTH;
}
else
{ // form 2: jump
sound(SND_FUNNY_EXPLODE);
if (o->x < player->x) o->xinertia = 0xC0;
else o->xinertia = -0xC0;
o->state = OMG_JUMP;
o->yinertia = -0x5FF;
omg.orgy = o->y;
}
}
}
// hurt player if he was standing in the middle when the jaws shut
if (player->riding == o)
{
hurtplayer(OMEGA_DAMAGE);
}
}
break;
case OMG_UNDERGROUND: // underground waiting to reappear
{
if (++omg.timer >= 120)
{
omg.timer = 0;
o->state = OMG_APPEAR;
o->x = omg.orgx + (random(-64, 64) << CSF);
o->y = omg.orgy;
omg.movetime = OMEGA_RISE_HEIGHT;
// switch to jumping out of ground when we get low on life
if (omg.form==1 && o->hp <= HP_TRIGGER_POINT)
{
o->flags |= FLAG_SOLID_MUSHY;
omg.form = 2;
omg.firefreq = 5;
omg.shotxspd = 0x155;
omg.startfiring = 0;
omg.stopfiring = 30;
omg.endfirestate = 50;
omg.movetime = OMEGA_RISE_HEIGHT+3;
}
}
}
break;
case OMG_JUMP: // init for jump
{
omg.orgy = o->y;
o->state++;
omg.timer = 0;
}
case OMG_JUMP+1: // jumping
{
o->yinertia += 0x24;
if (o->yinertia > 0x5ff) o->yinertia = 0x5ff;
if (o->yinertia > 0)
{ // coming down
pieces[LEFTLEG]->sprite = pieces[RIGHTLEG]->sprite = SPR_OMG_LEG_ONGROUND;
// retract legs a little when we hit the ground
if (pieces[LEFTLEG]->blockd || pieces[RIGHTLEG]->blockd)
{
o->xinertia = 0;
omg.leg_descend -= o->yinertia;
if (++omg.timer >= 3)
{
o->yinertia = 0;
o->state = OMG_JAWS_OPEN;
}
}
// --- squash player if we land on him -------------
// if top of player is higher than bottom of our bounding box
// but bottom of player's bounding box is not...
if (player->blockd)
{
int omg_bottom = o->y + (sprites[o->sprite].solidbox.y2 << CSF);
if (player->y <= omg_bottom)
{
if (player->y + (sprites[player->sprite].solidbox.y2 << CSF) >= omg_bottom)
{
if (hitdetect(o, player)) // easy way to verify the X's are lined up
{ // SQUISH!
hurtplayer(OMEGA_DAMAGE);
}
}
}
}
}
else
{ // jumping up; extend legs
omg.leg_descend = (omg.orgy - o->y) + LEGD_MIN;
if (omg.leg_descend > LEGD_MAX) omg.leg_descend = LEGD_MAX;
pieces[LEFTLEG]->sprite = pieces[RIGHTLEG]->sprite = SPR_OMG_LEG_INAIR;
}
}
break;
/// victory
case OMG_EXPLODING:
{
omg.timer = 0;
o->state++;
}
case OMG_EXPLODING+1:
{
int x, y;
o->xinertia = o->yinertia = 0;
x = o->CenterX() + (random(-48, 48)<CenterY() + (random(-48, 24)< 100)
{
omg.timer = 0;
starflash.Start(o->CenterX(), o->CenterY());
o->state = OMG_EXPLODED;
}
else if (omg.timer==24)
{
StartScript(210);
}
}
break;
case OMG_EXPLODED:
{
game.quaketime = 40;
if (++omg.timer > 50)
{
o->Delete();
for(int i=0;iDelete();
omg.defeated = true;
return;
}
}
break;
}
// implement shaking when shot
// we do it manually instead of used the usual shared code
// because we want all the pieces to shake at once
if (o->hp != omg.lasthp && !omg.shaketimer)
{
omg.shaketimer = 3;
// why did I write this? anyway, I'm sure it's important
if (o->x > player->x) o->display_xoff = -1;
else o->display_xoff = 1;
omg.lasthp = o->hp;
}
if (omg.shaketimer)
{
int xoff = -o->display_xoff;
if (!--omg.shaketimer) xoff = 0;
o->display_xoff = xoff;
pieces[LEFTLEG]->display_xoff = xoff;
pieces[RIGHTLEG]->display_xoff = xoff;
pieces[LEFTSTRUT]->display_xoff = xoff;
pieces[RIGHTSTRUT]->display_xoff = xoff;
}
if (o->state)
{
o->blockl |= pieces[LEFTLEG]->blockl;
o->blockr |= pieces[RIGHTLEG]->blockr;
pieces[LEFTLEG]->x = o->x - (4 << CSF); pieces[LEFTLEG]->y = o->y + omg.leg_descend;
pieces[RIGHTLEG]->x = o->x + (38 << CSF); pieces[RIGHTLEG]->y = o->y + omg.leg_descend;
pieces[LEFTSTRUT]->x = o->x + (9 << CSF); pieces[LEFTSTRUT]->y = o->y + (27 << CSF);
pieces[RIGHTSTRUT]->x = o->x + (43 << CSF); pieces[RIGHTSTRUT]->y = o->y + (27 << CSF);
}
}
void ondeath_omega_body(Object *o)
{
o->flags &= ~FLAG_SHOOTABLE;
KillObjectsOfType(OBJ_OMEGA_SHOT);
game.stageboss.SetState(OMG_EXPLODING);
}
/*
void c------------------------------() {}
*/
void ai_omega_shot(Object *o)
{
o->nxflags |= NXFLAG_FOLLOW_SLOPE;
o->yinertia += 5;
if (o->blockd) o->yinertia = -0x100;
if (o->blockl || o->blockr) o->xinertia = -o->xinertia;
if (o->blocku) o->yinertia = -o->yinertia;
if (++o->animtimer > 2) { o->frame ^= 1; o->animtimer = 0; }
if (++o->timer > 750)
{
effect(o->CenterX(), o->CenterY(), EFFECT_FISHY);
o->Delete();
}
}
================================================
FILE: ai/boss/omega.fdh
================================================
//hash:9b689842
//automatically generated by Makegen
/* located in ObjManager.cpp */
//-----------------[referenced from ai/boss/omega.cpp]---------------//
Object *CreateObject(int x, int y, int type);
bool hitdetect(Object *o1, Object *o2);
/* located in caret.cpp */
//-----------------[referenced from ai/boss/omega.cpp]---------------//
Caret *effect(int x, int y, int effectno);
/* located in player.cpp */
//-----------------[referenced from ai/boss/omega.cpp]---------------//
void hurtplayer(int damage);
/* located in tsc.cpp */
//-----------------[referenced from ai/boss/omega.cpp]---------------//
ScriptInstance *StartScript(int scriptno, int pageno);
/* located in ai/ai.cpp */
//-----------------[referenced from ai/boss/omega.cpp]---------------//
Object *SpawnObjectAtActionPoint(Object *o, int otype);
void KillObjectsOfType(int type);
/* located in ai/sym/smoke.cpp */
//-----------------[referenced from ai/boss/omega.cpp]---------------//
Object *SmokePuff(int x, int y);
/* located in ai/boss/omega.cpp */
//-----------------[referenced from ai/boss/omega.cpp]---------------//
void ondeath_omega_body(Object *o);
void ai_omega_shot(Object *o);
/* located in sound/sound.cpp */
//-----------------[referenced from ai/boss/omega.cpp]---------------//
void sound(int snd);
bool sound_is_playing(int snd);
void sound_stop(int snd);
/* located in common/misc.cpp */
//-----------------[referenced from ai/boss/omega.cpp]---------------//
int random(int min, int max);
================================================
FILE: ai/boss/omega.h
================================================
#ifndef _OMEGA_H
#define _OMEGA_H
class OmegaBoss : public StageBoss
{
public:
void OnMapEntry();
void OnMapExit();
void Run();
private:
Object *pieces[4];
struct
{
int timer;
int animtimer;
int movedir, movetime;
int nextstate;
int form;
int firefreq, startfiring, stopfiring, endfirestate, shotxspd;
int firecounter;
int leg_descend;
int orgx, orgy;
int shaketimer;
int lasthp;
bool defeated;
} omg;
};
#endif
================================================
FILE: ai/boss/sisters.cpp
================================================
#include "../stdai.h"
#include "sisters.h"
#include "sisters.fdh"
// mainstates
#define STATE_CIRCLE_RIGHT 100 // circling right
#define STATE_CIRCLE_LEFT 110 // circling left
#define STATE_MEGAFIRING 120 // runs pause and circling during low-hp megafire
#define STATE_DEFEATED 1000 // script-triggered; must be constant
#define STATE_DEFEATED_CRASH 1010
#define STATE_STARFLASH 1020
// head states
#define STATE_HEAD_CLOSED 10 // closed, but periodically opens by itself and fires
#define STATE_HEAD_OPEN 20 // mouth open, can be shot
#define STATE_HEAD_FIRE 30 // actually firing
#define STATE_HEAD_MEGAFIRE 40 // firing a whole lot during low-hp
#define STATE_HEAD_BIT_TONGUE 50 // bit tongue after got shot
#define STATE_HEAD_DEFEATED 100 // defeated, eyes closed
// body states
#define STATE_BODY_NOMOVE 10 // do nothing but animate
#define STATE_BODY_FACE_PLAYER 20 // follow angle set by main and face player
#define STATE_BODY_FACE_CENTER 30 // follow angle set by main and face center
#define STATE_BODY_LOCK_DIR 40 // follow angle set by main but don't change direction
#define SISTERS_HP 500 // total HP
#define SISTERS_ATTACK2_HP 300 // HP below which we can do the lots-of-fire attack
#define SISTERS_DAMAGE 10 // how much damage you can take if you run into one
// coordinates of per-frame bboxes for each frame of the head object.
// these are all for the right-facing frame and are automatically flipped-over
// at runtime if the dragon is facing left.
// I would like to make this a feature of the .sif at a later date that could be
// enabled on a per-sprite basis via a checkbox in sprprop.
static struct
{
int x1, y1, x2, y2;
uint32_t flags;
}
head_bboxes[] =
{
{ 15, 1, 38, 26, FLAG_INVULNERABLE }, // closed
{ 15, 4, 36, 28, FLAG_INVULNERABLE }, // partway open
{ 14, 6, 31, 27, FLAG_SHOOTABLE }, // open (shootable)
{ 16, 6, 37, 26, FLAG_SHOOTABLE }, // bit tongue (shootable)
{ 17, 6, 38, 25, 0 } // eyes closed (shots pass through)
};
/*
void c------------------------------() {}
*/
void SistersBoss::OnMapEntry()
{
int i;
/*stat("%d %d %d %d",
sprites[SPR_SISTERS_HEAD].bbox.x1,
sprites[SPR_SISTERS_HEAD].bbox.y1,
sprites[SPR_SISTERS_HEAD].bbox.x2,
sprites[SPR_SISTERS_HEAD].bbox.y2
); exit(1);*/
main = CreateObject(((10*TILE_W))<invisible = true;
for(i=0;isprite = SPR_SISTERS_BODY;
body[i]->damage = SISTERS_DAMAGE;
}
for(i=0;ihp = 1000;
head[i]->damage = SISTERS_DAMAGE;
// we give each dragon a different but identical-looking head sprite
// so that we can hack their bboxes individually.
head[i]->sprite = SPR_SISTERS_HEAD_1 + i;
}
objprop[OBJ_SISTERS_HEAD].shaketime = 8;
objprop[OBJ_SISTERS_HEAD].hurt_sound = SND_ENEMY_HURT_COOL;
mainangle = 0;
#ifdef _480X272
main->xmark = 180 * 2;
main->ymark = 61 * 2;
#else
main->xmark = 180;
main->ymark = 61;
#endif
main->timer2 = random(700, 1200);
main->hp = 500;
main->id2 = 1000;
main->flags |= FLAG_SCRIPTONDEATH;
game.stageboss.object = main;
}
void SistersBoss::OnMapExit()
{
main = NULL;
game.stageboss.object = NULL;
}
/*
void c------------------------------() {}
*/
void SistersBoss::Run(void)
{
int i;
Object *o = main;
if (!o) return;
//debug("main->state: %d", o->state);
//debug("main->timer: %d", o->timer);
//DebugCrosshair(o->xmark, o->ymark, 255,255,255);
switch(o->state)
{
case 20: // fight begin (script-triggered)
{
#ifdef _480X272
main->xmark = 180;
main->ymark = 61;
#endif
if (++o->timer > 68)
{
o->xmark = 112; // bodies zoom onto screen via force of their interpolation
o->timer = 0;
o->state = STATE_CIRCLE_RIGHT; // main begins turning angle
SetHeadStates(STATE_HEAD_CLOSED); // periodically opens/fires by itself
SetBodyStates(STATE_BODY_FACE_PLAYER); // enable body movement
}
}
break;
case STATE_CIRCLE_RIGHT:
{
o->timer++;
if (o->timer < 100) mainangle += 1;
else if (o->timer < 120) mainangle += 2;
else if (o->timer < o->timer2) mainangle += 4;
else if (o->timer < o->timer2 + 40) mainangle += 2;
else if (o->timer < o->timer2 + 60) mainangle += 1;
else
{
o->timer = 0;
o->state = STATE_CIRCLE_LEFT;
o->timer2 = random(400, 700);
}
}
break;
case STATE_CIRCLE_LEFT:
{
o->timer++;
if (o->timer < 20) mainangle -= 1;
else if (o->timer < 60) mainangle -= 2;
else if (o->timer < o->timer2) mainangle -= 4;
else if (o->timer < o->timer2 + 40) mainangle -= 2;
else if (o->timer < o->timer2 + 60) mainangle -= 1;
else
{
if (o->hp < SISTERS_ATTACK2_HP)
{
o->state = STATE_MEGAFIRING;
SetHeadStates(STATE_HEAD_MEGAFIRE);
o->timer = 0;
}
else
{
o->state = STATE_CIRCLE_RIGHT;
o->timer2 = random(400, 700);
o->timer = 0;
}
}
}
break;
// runs the circling while the heads are doing their low-hp "megafire" state.
// first they stop completely, then spin around and around clockwise for a while.
case STATE_MEGAFIRING:
{
if (++o->timer > 100)
{
o->state++;
o->timer = 0;
}
}
break;
case STATE_MEGAFIRING+1:
{
o->timer++;
if (o->timer < 100) mainangle += 1;
else if (o->timer < 120) mainangle += 2;
else if (o->timer < 500) mainangle += 4;
else if (o->timer < 540) mainangle += 2;
else if (o->timer < 560) mainangle += 1;
else
{
o->state = STATE_CIRCLE_LEFT;
SetHeadStates(STATE_HEAD_CLOSED);
o->timer = 0;
}
}
break;
// defeated!! make big smoke and pause a second
// this state is entered via a damage = 0;
body[i]->damage = 0;
}
SetHeadStates(STATE_HEAD_DEFEATED);
SetBodyStates(STATE_BODY_FACE_CENTER);
o->state++;
o->timer = 0;
}
case STATE_DEFEATED+1:
{
if (++o->timer > 100)
{
o->state = STATE_DEFEATED_CRASH;
o->timer = 0;
}
SpawnScreenSmoke(1);
}
break;
// the two dragons crash into each other
case STATE_DEFEATED_CRASH:
{
mainangle += 4;
if (o->xmark > 8) o->xmark--;
if (o->ymark > 0) o->ymark--;
if (++o->timer == 40)
SetBodyStates(STATE_BODY_LOCK_DIR);
if (o->ymark == 0)
{
if (hitdetect(head[0], head[1]) || \
hitdetect(head[0], body[1]) || \
hitdetect(head[1], body[0]))
{
starflash.Start(o->CenterX(), o->CenterY());
sound(SND_EXPLOSION1);
o->state = STATE_STARFLASH;
o->timer = 0;
}
else
{
o->xmark -= 2;
SetBodyStates(STATE_BODY_LOCK_DIR); // lock direction facing
}
}
}
break;
// big starflash after dragons hit each other
case STATE_STARFLASH:
{
if (++o->timer > 30)
{
KillObjectsOfType(OBJ_DRAGON_ZOMBIE_SHOT);
KillObjectsOfType(OBJ_SPIKE_SMALL);
for(i=0;iDelete();
body[i]->Delete();
}
main->Delete();
main = NULL;
return;
}
}
break;
}
while(mainangle >= 256*4) mainangle -= 256*4;
while(mainangle <= -256*4) mainangle += 256*4;
for(i=0;ixmark << CSF);
int yoff = yinertia_from_angle(angle, main->ymark << CSF);
// figure out where we are supposed to be
int desired_x = (main->x + xoff) - (main->Width() / 2);
int desired_y = (main->y + yoff) - (main->Height() / 2);
// motion
if (o->state == 0)
{ // this places them offscreen before the fight
o->x = desired_x;
o->y = desired_y;
o->state = STATE_BODY_NOMOVE;
}
else if (o->state != STATE_BODY_NOMOVE)
{ // smooth interpolation, they stay in this state throughout the fight
o->x += (desired_x - o->x) / 8;
o->y += (desired_y - o->y) / 8;
}
// set direction facing
if (o->state != STATE_BODY_LOCK_DIR)
{
if (o->state == STATE_BODY_FACE_CENTER)
{
if (o->CenterX() > main->CenterX()) o->dir = LEFT;
else o->dir = RIGHT;
}
else
{
FACEPLAYER;
}
}
ANIMATE(2, 0, 2);
}
void SistersBoss::run_head(int index)
{
Object *o = head[index];
// stay connected to body
o->dir = body[index]->dir;
o->x = body[index]->x + ((o->dir==RIGHT) ? (4 << CSF) : -(4 << CSF));
o->y = body[index]->y - (4 << CSF);
// link hp to main object
if (o->hp < 1000)
{
main->DealDamage(1000 - o->hp);
o->hp = 1000;
}
// FSM
switch(o->state)
{
case 0:
{
o->state = 1;
o->flags |= (FLAG_SHOOTABLE | FLAG_INVULNERABLE);
}
break;
case STATE_HEAD_CLOSED:
{
o->frame = 0;
o->timer = random(100, 200);
o->state++;
}
case STATE_HEAD_CLOSED+1:
{
if (--o->timer <= 0)
{
o->state = STATE_HEAD_OPEN;
o->timer = 0;
}
}
break;
// open mouth and prepare to fire
case STATE_HEAD_OPEN:
{
o->timer = 0;
o->timer2 = 0;
o->state++;
}
case STATE_HEAD_OPEN+1:
{
o->timer++;
if (o->timer == 3) o->frame = 1; // mouth partially open--about to fire!!
if (o->timer == 6) o->frame = 2; // mouth fully open
if (o->timer > 150)
{ // begin firing if they haven't hit us by now
o->state = STATE_HEAD_FIRE;
o->timer = 0;
}
// need at least 2 hits to get her to close mouth
if (o->shaketime) o->timer2++;
if (o->timer2 > 10)
{
sound(SND_ENEMY_HURT);
SmokeClouds(o, 4, 2, 2);
o->state = STATE_HEAD_BIT_TONGUE;
o->timer = 0;
o->frame = 3;
}
}
break;
// firing (normal)
case STATE_HEAD_FIRE:
{
if ((++o->timer % 8) == 1)
{
EmFireAngledShot(o, OBJ_DRAGON_ZOMBIE_SHOT, 6, 0x200);
sound(SND_SNAKE_FIRE);
}
if (o->timer > 50)
o->state = STATE_HEAD_CLOSED;
}
break;
// firing a WHOLE LOT during low-hp status
case STATE_HEAD_MEGAFIRE:
{
o->state++;
o->timer = 0;
o->frame = 0;
}
case STATE_HEAD_MEGAFIRE+1:
{
o->timer++;
if (o->timer == 3) o->frame = 1;
if (o->timer == 6) o->frame = 2;
if (o->timer > 20)
{
if ((o->timer % 32) == 1)
{
EmFireAngledShot(o, OBJ_DRAGON_ZOMBIE_SHOT, 6, 0x200);
sound(SND_SNAKE_FIRE);
}
}
}
break;
// mouth closed bit tongue after got shot
case STATE_HEAD_BIT_TONGUE:
{
if (++o->timer > 100)
{
o->state = STATE_HEAD_CLOSED;
o->timer = 0;
}
}
break;
case STATE_HEAD_DEFEATED:
o->frame = 4; // eyes closed
break;
}
head_set_bbox(index);
}
// select an appropriate bbox for the current frame and hack it onto our sprite.
// I did this because the heads move around quite a bit in the different frames.
void SistersBoss::head_set_bbox(int index)
{
SIFSprite *sprite = &sprites[SPR_SISTERS_HEAD_1 + index];
Object *o = head[index];
int frame = o->frame;
if (o->dir == LEFT)
{ // use mirror image if dragon facing left
int wd = (head_bboxes[frame].x2 - head_bboxes[frame].x1);
sprite->bbox.x1 = sprite->w - head_bboxes[frame].x1 - wd;
sprite->bbox.x2 = sprite->bbox.x1 + (wd - 1);
}
else
{
sprite->bbox.x1 = head_bboxes[frame].x1;
sprite->bbox.x2 = head_bboxes[frame].x2;
}
sprite->bbox.y1 = head_bboxes[frame].y1;
sprite->bbox.y2 = head_bboxes[frame].y2;
o->flags &= ~(FLAG_SHOOTABLE | FLAG_INVULNERABLE);
o->flags |= head_bboxes[frame].flags;
}
/*
void c------------------------------() {}
*/
void SistersBoss::SpawnScreenSmoke(int count)
{
for(int i=0;istate = newstate;
}
void SistersBoss::SetBodyStates(int newstate)
{
for(int i=0;istate = newstate;
}
================================================
FILE: ai/boss/sisters.fdh
================================================
//hash:90d72648
//automatically generated by Makegen
/* located in ObjManager.cpp */
//----------------[referenced from ai/boss/sisters.cpp]--------------//
Object *CreateObject(int x, int y, int type);
bool hitdetect(Object *o1, Object *o2);
/* located in trig.cpp */
//----------------[referenced from ai/boss/sisters.cpp]--------------//
int xinertia_from_angle(uint8_t angle, int speed);
int yinertia_from_angle(uint8_t angle, int speed);
void EmFireAngledShot(Object *o, int objtype, int rand_variance, int speed);
/* located in ai/ai.cpp */
//----------------[referenced from ai/boss/sisters.cpp]--------------//
void KillObjectsOfType(int type);
/* located in ai/sym/smoke.cpp */
//----------------[referenced from ai/boss/sisters.cpp]--------------//
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
Object *SmokePuff(int x, int y);
/* located in sound/sound.cpp */
//----------------[referenced from ai/boss/sisters.cpp]--------------//
void sound(int snd);
/* located in common/misc.cpp */
//----------------[referenced from ai/boss/sisters.cpp]--------------//
int random(int min, int max);
================================================
FILE: ai/boss/sisters.h
================================================
#ifndef _SISTERS_H
#define _SISTERS_H
// although you will need to add additional copies of the head sprites
// for it to work properly, just try setting this number to something
// like 10 and running the fight!
#define NUM_SISTERS 2
class SistersBoss : public StageBoss
{
public:
void OnMapEntry();
void OnMapExit();
void Run();
private:
void run_head(int index);
void head_set_bbox(int index);
void run_body(int index);
void SetHeadStates(int newstate);
void SetBodyStates(int newstate);
void SpawnScreenSmoke(int count);
int mainangle;
Object *main;
Object *head[NUM_SISTERS];
Object *body[NUM_SISTERS];
};
#endif
================================================
FILE: ai/boss/undead_core.cpp
================================================
#include "../stdai.h"
#include "undead_core.h"
#include "undead_core.fdh"
static struct
{
SIFPoint offset; // offset from main object
SIFRect rect; // actual bbox rect
}
core_bboxes[] =
{
{ { 0, -32 }, { -40, -16, 40, 16 } }, // upper
{ { 28, 0 }, { -36, -24, 36, 24 } }, // back/main body
{ { 4, 32 }, { -44, -8, 44, 8 } }, // lower
{ { -28, 4 }, { -20, -20, 20, 20 } } // shoot target
};
enum CORE_STATES
{
CR_FightBegin = 20, // scripted
CR_FaceClosed = 200,
CR_FaceSkull = 210,
CR_FaceTeeth = 220,
CR_FaceDoom = 230,
CR_Defeated = 500, // scripted
CR_Exploding = 1000
};
enum FACE_STATES
{
FC_Closed = 0,
FC_Skull = 1,
FC_Teeth = 2,
FC_Mouth = 3
};
enum ROTR_STATES
{
RT_Spin_Closed = 10,
RT_Spin_Open = 20,
RT_Spin_Slow_Closed = 30,
RT_Spin_Fast_Closed = 40
};
/*
void c------------------------------() {}
*/
INITFUNC(AIRoutines)
{
ONSPAWN(OBJ_UD_MINICORE_IDLE, onspawn_ud_minicore_idle);
ONTICK(OBJ_UDMINI_PLATFORM, ai_udmini_platform);
ONTICK(OBJ_UD_PELLET, ai_ud_pellet);
ONTICK(OBJ_UD_SMOKE, ai_ud_smoke);
ONTICK(OBJ_UD_SPINNER, ai_ud_spinner);
ONTICK(OBJ_UD_SPINNER_TRAIL, ai_ud_spinner_trail);
ONTICK(OBJ_UD_BLAST, ai_ud_blast);
}
/*
void c------------------------------() {}
*/
/*
Main core body:
non-shootable when closed
invulnerable when open
starsolid's appear just behind the little dots
when you shoot the face the starsolid hits at just past his nose.
when face is open it does block the face from shooting below,
but there is still a spot that you can hurt it from below.
four always-dark minicores that spin around it, they also seem
to be switching their z-order.
*/
void UDCoreBoss::OnMapEntry()
{
Object *o;
// main object
o = CreateObject(0, 0, OBJ_UDCORE_MAIN);
main = o;
game.stageboss.object = o;
o->sprite = SPR_NULL;//SPR_MARKER;
objprop[o->type].hurt_sound = SND_CORE_HURT;
o->hp = 700;
o->x = (592 << CSF);
o->y = (120 << CSF);
o->id2 = 1000; // defeated script
o->flags = (FLAG_SHOW_FLOATTEXT | FLAG_IGNORE_SOLID | FLAG_SCRIPTONDEATH);
// create rear rotators
rotator[2] = create_rotator(0, 1);
rotator[3] = create_rotator(0x80, 1);
// create front & back
front = CreateObject(0, 0, OBJ_UDCORE_FRONT);
back = CreateObject(0, 0, OBJ_UDCORE_BACK);
// create face
face = CreateObject(0, 0, OBJ_UDCORE_FACE);
face->state = FC_Closed;
// create front rotators
rotator[0] = create_rotator(0, 0);
rotator[1] = create_rotator(0x80, 0);
// initilize bboxes
for(int i=0;isprite = SPR_BBOX_PUPPET_1 + i;
bbox[i]->hp = 1000;
sprites[bbox[i]->sprite].bbox = core_bboxes[i].rect;
}
//o->BringToFront();
}
void UDCoreBoss::OnMapExit()
{
main = NULL;
game.stageboss.object = NULL;
}
/*
void c------------------------------() {}
*/
void UDCoreBoss::Run(void)
{
Object *o = main;
if (!o) return;
if (RunDefeated())
return;
switch(o->state)
{
// fight begin (scripted)
case CR_FightBegin:
{
o->state = CR_FaceSkull;
o->dir = LEFT;
SetRotatorStates(RT_Spin_Slow_Closed);
SpawnFaceSmoke();
}
break;
// face closed
case CR_FaceClosed:
{
o->state++;
o->timer = 0;
face->state = FC_Closed;
front->frame = 2; // closed
back->frame = 0; // not orange
set_bbox_shootable(false);
SetRotatorStates(RT_Spin_Closed);
SpawnFaceSmoke();
}
case CR_FaceClosed+1:
{
o->timer++;
if (o->dir == RIGHT || o->frame > 0 || o->hp < 200)
{
if (o->timer > 200)
{
o->timer2++;
sound(SND_CORE_THRUST);
// select attack mode
if (o->hp < 200)
{
o->state = CR_FaceDoom;
}
else if (o->timer2 > 2)
{
o->state = CR_FaceTeeth;
}
else
{
o->state = CR_FaceSkull;
}
}
}
}
break;
// face open/skull
case CR_FaceSkull:
{
o->state++;
o->timer = 0;
face->state = FC_Skull;
SpawnFaceSmoke();
o->savedhp = o->hp;
set_bbox_shootable(true);
}
case CR_FaceSkull+1:
{
o->timer++;
RunHurtFlash(o->timer);
if (o->timer < 300)
{
if ((o->timer % 120) == 1)
{
SpawnPellet(UP);
}
if ((o->timer % 120) == 61)
{
SpawnPellet(DOWN);
}
}
if (o->timer > 400 || (o->savedhp - o->hp) > 50)
{
o->state = CR_FaceClosed;
}
}
break;
// face open/teeth
case CR_FaceTeeth:
{
o->state++;
o->timer = 0;
face->state = FC_Teeth;
SpawnFaceSmoke();
SetRotatorStates(RT_Spin_Open);
game.quaketime = 100;
o->savedhp = o->hp;
set_bbox_shootable(true);
}
case CR_FaceTeeth+1:
{
o->timer++;
RunHurtFlash(o->timer);
// fire rotators
if ((o->timer % 40) == 1)
{
int i = random(0, 3);
int x = rotator[i]->x - (16<y;
sound(SND_FUNNY_EXPLODE);
CreateSpinner(x, y);
}
if (o->timer > 400 || (o->savedhp - o->hp) > 150 || o->hp < 200)
{
o->state = CR_FaceClosed;
}
}
break;
// face open/mouth: blasts of doom
case CR_FaceDoom:
{
o->state++;
o->timer = 0;
face->state = FC_Mouth;
SpawnFaceSmoke();
SetRotatorStates(RT_Spin_Fast_Closed);
sound(SND_FUNNY_EXPLODE);
// spawn a whole bunch of crazy spinners from the face
CreateSpinner(face->x - (16<y);
CreateSpinner(face->x, face->y - (16<x, face->y + (16<savedhp = o->hp;
set_bbox_shootable(true);
}
case CR_FaceDoom+1:
{
o->timer++;
RunHurtFlash(o->timer);
if ((o->timer % 120) == 1)
SpawnPellet(UP);
if ((o->timer % 120) == 61)
SpawnPellet(DOWN);
}
break;
}
// move back and forth
if (o->state >= CR_FightBegin && o->state < CR_Defeated)
{
if (o->x < MAPX(12))
o->dir = RIGHT;
if (o->x > MAPX(map.xsize - 4))
o->dir = LEFT;
XACCEL(4);
}
// spawn minicore platforms
switch(o->state)
{
case CR_FaceClosed+1:
case CR_FaceTeeth+1:
case CR_FaceSkull+1:
case CR_FaceDoom+1:
{
// while I don't think there's any way to get her there without
// a map editor, if you put Curly in the Black Space core room,
// she WILL fight the core, just as she did the first time.
if (o->state != 221 && (o->timer % 100) == 1)
bbox[BB_TARGET]->CurlyTargetHere();
o->timer3++;
// upper platforms
if (o->timer3 == 75)
{
CreateObject(MAPX(map.xsize) + 40, \
MAPY(3 + random(-3, 0)), OBJ_UDMINI_PLATFORM);
}
// lower platforms
if (o->timer3 == 150)
{
o->timer3 = 0;
CreateObject(MAPX(map.xsize) + 40, \
MAPY(10 + random(-1, 3)), OBJ_UDMINI_PLATFORM);
break;
}
}
break;
}
LIMITX(0x80);
LIMITY(0x80);
}
void UDCoreBoss::RunAftermove()
{
int i;
Object *o = main;
if (!o) return;
run_face(face);
run_front(front);
run_back(back);
for(i=0;i<4;i++)
run_rotator(rotator[i]);
move_bboxes();
}
// spawn smoke puffs from face that come when face opens/closes
void UDCoreBoss::SpawnFaceSmoke()
{
quake(20);
for(int i=0;i<8;i++)
{
int x = face->x + random(-16<CenterY();
Object *s = SmokePuff(x, y);
s->xinertia = random(-0x200, 0x200);
s->yinertia = random(-0x100, 0x100);
}
}
// spit a "pellet" shot out of the face. That's what I'm calling the flaming lava-rock
// type things that are thrown out and trail along the ceiling or floor.
void UDCoreBoss::SpawnPellet(int dir)
{
int y = main->y;
if (dir == UP)
y -= (16 << CSF);
else
y += (16 << CSF);
CreateObject(main->x - (32<dir = dir;
}
void UDCoreBoss::RunHurtFlash(int timer)
{
if (main->shaketime && (timer & 2))
{
front->frame = 1;
back->frame = 1;
}
else
{
front->frame = 0;
back->frame = 0;
}
}
/*
void c------------------------------() {}
*/
bool UDCoreBoss::RunDefeated()
{
Object *o = main;
switch(o->state)
{
// defeated (descending)
case CR_Defeated:
{
o->state++;
o->timer = 0;
o->xinertia = 0;
o->yinertia = 0;
face->state = FC_Closed;
front->frame = 0; // front closed
back->frame = 0; // not flashing
SetRotatorStates(RT_Spin_Slow_Closed);
game.quaketime = 20;
SmokeXY(o->x, o->y, 100, 128, 64);
KillObjectsOfType(OBJ_UDMINI_PLATFORM);
set_bbox_shootable(false);
}
case CR_Defeated+1:
{
SmokeXY(o->x, o->y, 1, 64, 32);
o->xinertia = 0x40;
o->yinertia = 0x80;
if (++o->timer > 200)
{
o->state = CR_Exploding;
o->xinertia = 0;
o->yinertia = 0;
o->timer = 0;
}
}
break;
// defeated (exploding)
case CR_Exploding:
{
quake(100, 0);
o->timer++;
if ((o->timer % 8) == 0)
sound(SND_MISSILE_HIT);
int x = o->x + random(-72<y + random(-64<timer > 100)
{
sound(SND_EXPLOSION1);
starflash.Start(o->x, o->y);
o->state++;
o->timer = 0;
}
}
break;
case CR_Exploding+1:
{
game.quaketime = 40;
if (++o->timer > 50)
{
KillObjectsOfType(OBJ_MISERY_MISSILE);
front->Delete();
back->Delete();
face->Delete();
for(int i=0;iDelete();
for(int i=0;iDelete();
main->Delete();
main = NULL;
return 1;
}
}
break;
}
return 0;
}
/*
void c------------------------------() {}
*/
void UDCoreBoss::run_face(Object *o)
{
o->sprite = SPR_UD_FACES;
o->invisible = false;
switch(o->state)
{
// to "show" the closed face, we go invisible and the
// face area of the main core shows through.
case FC_Closed: o->invisible = true; break;
case FC_Skull: o->frame = 0; break;
case FC_Teeth: o->frame = 1; break;
// mouth blasts of doom. Once started, it's perpetual blasting
// until told otherwise.
case FC_Mouth:
{
o->state++;
o->timer = 100;
}
case FC_Mouth+1:
{
if (++o->timer > 300)
o->timer = 0;
if (o->timer > 250)
{
if ((o->timer % 16) == 1)
sound(SND_QUAKE);
if ((o->timer % 16) == 7)
{
CreateObject(o->x, o->y, OBJ_UD_BLAST);
sound(SND_LIGHTNING_STRIKE);
}
}
if (o->timer == 200)
sound(SND_CORE_CHARGE);
if (o->timer >= 200 && (o->timer & 1))
o->frame = 3; // mouth lit
else
o->frame = 2; // mouth norm
}
break;
}
o->x = main->x - (36 << CSF);
o->y = main->y - (4 << CSF);
}
void UDCoreBoss::run_front(Object *o)
{
// 0 open (should make a face visible at the same time to go into the gap)
// 1 open/hurt
// 2 closed
switch(o->state)
{
case 0:
{
o->sprite = SPR_UD_FRONT;
o->state = 1;
o->frame = 2;
}
case 1:
{
o->x = main->x - (36<y = main->y;
}
break;
}
}
void UDCoreBoss::run_back(Object *o)
{
// 0 normal
// 1 hurt
switch(o->state)
{
case 0:
{
o->sprite = SPR_UD_BACK;
o->state = 1;
o->frame = 0;
}
case 1:
{
o->x = main->x + (44<y = main->y;
}
break;
}
}
/*
void c------------------------------() {}
*/
// "front" refers to whether they are doing the front (left) or rear (right)
// half of the arc; the ones marked "front" are actually BEHIND the core.
Object *UDCoreBoss::create_rotator(int angle, int front)
{
Object *o = CreateObject(0, 0, OBJ_UDMINI_ROTATOR);
o->angle = angle;
o->substate = front;
return o;
}
// the rotators are 4 minicores that spin around the main core during the battle
// and have pseudo-3D effects. They also shoot the spinners during the teeth-face phase.
//
// instead of having the cores constantly rearranging their Z-Order as they pass
// in front and behind the core, an optical illusion is used. 2 cores are always
// in front and 2 are always behind. Each set of two cores covers only half the full
// circle. When a core in the front set reaches the top, it warps back to the bottom
// just as a core in the back set reaches the bottom and warps back to the top.
// Thus, they swap places and the core appears to continue around the circle using
// the different z-order of the one that was just swapped-in.
void UDCoreBoss::run_rotator(Object *o)
{
//debug("rotr s%d", o->state);
switch(o->state)
{
case 0:
{
o->sprite = SPR_UD_ROTATOR;
o->flags &= ~FLAG_SHOOTABLE;
o->hp = 1000;
}
break;
case RT_Spin_Closed:
{
o->frame = 0;
o->angle += 2;
}
break;
// used when firing spinners in Teeth face
// (it's easier to coordinate if spinners are actually spawned by core
// and just positioned next to us)
case RT_Spin_Open:
{
o->frame = 1;
o->angle += 2;
}
break;
case RT_Spin_Slow_Closed:
{
o->frame = 0;
o->angle++;
}
break;
case RT_Spin_Fast_Closed:
{
o->frame = 0;
o->angle += 4;
}
break;
}
// each "side" covers half the rotation angle
int angle = (o->angle / 2);
if (o->substate)
{ // front (left) half of arc
angle += 0x40;
}
else
{ // back (right) half of arc
angle += 0xC0;
}
o->x = (main->x - (8<y = main->y + yinertia_from_angle(angle, (80<state = newstate;
}
/*
void c------------------------------() {}
*/
// extra bbox puppets/shoot targets
// only one, located at the face, is shootable, the other 3 are invulnerable shields.
void UDCoreBoss::move_bboxes()
{
for(int i=0;ix = main->x + (core_bboxes[i].offset.x << CSF);
bbox[i]->y = main->y + (core_bboxes[i].offset.y << CSF);
}
transfer_damage(bbox[BB_TARGET], main);
}
// sets up bboxes for the Core entering shootable or non-shootable mode.
void UDCoreBoss::set_bbox_shootable(bool enable)
{
uint32_t body_flags, target_flags;
int i;
// in shootable mode target can be hit and shields are up.
// in non-shootable mode (when face is closed) nothing can be hit.
if (enable)
{
body_flags = FLAG_INVULNERABLE;
target_flags = FLAG_SHOOTABLE;
}
else
{
body_flags = 0;
target_flags = 0;
}
for(i=0;iflags &= ~(FLAG_SHOOTABLE | FLAG_INVULNERABLE);
if (i == BB_TARGET)
bbox[i]->flags |= target_flags;
else
bbox[i]->flags |= body_flags;
}
}
/*
void c------------------------------() {}
*/
// minicores by entrance seen before fight
void onspawn_ud_minicore_idle(Object *o)
{
if (o->dir == RIGHT)
o->flags &= ~FLAG_SOLID_BRICK;
}
// these are the ones you can ride
void ai_udmini_platform(Object *o)
{
switch(o->state)
{
case 0:
{
o->state = 1;
o->ymark = o->y;
o->xinertia = -0x200;
o->yinertia = 0x100;
if (random(0, 1)) o->yinertia = -o->yinertia;
}
case 1:
{
if (o->x < -(64 << CSF))
o->Delete();
if (o->y > o->ymark) o->yinertia -= 0x10;
if (o->y < o->ymark) o->yinertia += 0x10;
LIMITY(0x100);
// when player jumps on them, they open up and start
// moving their Y to align with the core.
if (player->riding == o)
{
o->ymark = MAPY(9);
o->frame = 2;
}
else if (o->flags & FLAG_SOLID_BRICK) // don't reset frame if dimmed
{
o->frame = 0;
}
// don't try to squish the player into anything, rather, dim and go non-solid.
// our bbox is set slightly larger than our solidbox so that we can detect if
// the player is near.
if (hitdetect(o, player))
{
if ((player->blockl && player->Right() < o->CenterX()) || \
(o->yinertia > 0 && player->blockd && player->Top() >= o->CenterY() - (1<yinertia < 0 && player->blocku && player->Bottom() < o->CenterY()))
{
o->flags &= ~FLAG_SOLID_BRICK;
o->frame = 1;
}
}
}
break;
}
}
/*
void c------------------------------() {}
*/
// falling lava-rock thing from Skull face
void ai_ud_pellet(Object *o)
{
switch(o->state)
{
case 0:
{
o->sprite = SPR_UD_PELLET;
o->xinertia = -0x200;
o->state = 1;
}
case 1: // falling
{
if (o->dir == UP)
{
o->yinertia -= 0x20;
LIMITY(0x5ff);
if (o->blocku)
o->state = 2;
}
else if (o->dir == DOWN)
{
o->yinertia += 0x20;
LIMITY(0x5ff);
if (o->blockd)
o->state = 2;
}
ANIMATE(3, 0, 1);
}
break;
case 2: // hit ground/ceiling
{
sound(SND_MISSILE_HIT);
o->xinertia = (o->x > player->x) ? -0x400 : 0x400;
o->yinertia = 0;
o->state = 3;
o->timer = 0;
o->flags |= FLAG_IGNORE_SOLID;
o->sprite = SPR_UD_BANG;
o->x -= (4 << CSF);
o->y -= (4 << CSF);
}
case 3:
{
ANIMATE(0, 0, 2);
if ((++o->timer % 3) == 1)
{
Object *smoke = CreateObject(o->CenterX(), o->CenterY(), OBJ_UD_SMOKE);
if (o->dir == UP)
smoke->yinertia = 0x400;
else
smoke->yinertia = -0x400;
smoke->x += o->xinertia;
}
if (o->CenterX() < (16<CenterX() > (MAPX(map.xsize) - (16<Delete();
}
}
break;
}
}
void ai_ud_smoke(Object *o)
{
switch(o->state)
{
case 0:
{
o->xinertia = random(-4, 4) << CSF;
o->state = 1;
}
case 1:
{
o->xinertia *= 20; o->xinertia /= 21;
o->yinertia *= 20; o->yinertia /= 21;
ANIMATE_FWD(1);
if (o->frame > sprites[o->sprite].nframes)
o->Delete();
}
break;
}
}
/*
void c------------------------------() {}
*/
static void CreateSpinner(int x, int y)
{
CreateObject(x, y, OBJ_UD_SPINNER);
CreateObject(x, y, OBJ_UD_SPINNER)->angle = 0x80;
}
// spinny thing shot by rotators during Teeth phase.
// they come in pairs.
void ai_ud_spinner(Object *o)
{
if (o->x < 0 || o->x > MAPX(map.xsize))
{
effect(o->CenterX(), o->CenterY(), EFFECT_BOOMFLASH);
o->Delete();
return;
}
switch(o->state)
{
case 0:
{
o->xmark = o->x;
o->ymark = o->y;
o->state = 1;
}
case 1:
{
o->angle += 24;
o->speed -= 0x15;
o->xmark += o->speed;
o->x = o->xmark + xinertia_from_angle(o->angle, (4<y = o->ymark + yinertia_from_angle(o->angle, (6<x, o->y, OBJ_UD_SPINNER_TRAIL);
o->BringToFront();
}
break;
}
}
void ai_ud_spinner_trail(Object *o)
{
o->frame++;
if (o->frame > 2)
o->Delete();
}
/*
void c------------------------------() {}
*/
void ai_ud_blast(Object *o)
{
o->xinertia = -0x1000;
o->frame ^= 1;
SmokePuff(o->CenterX() + (random(0, 16) << CSF), \
o->CenterY() + (random(-16, 16) << CSF));
if (o->x < -0x4000)
o->Delete();
}
================================================
FILE: ai/boss/undead_core.fdh
================================================
//hash:446a3fc0
//automatically generated by Makegen
/* located in game.cpp */
//--------------[referenced from ai/boss/undead_core.cpp]------------//
void quake(int quaketime, int snd);
/* located in ObjManager.cpp */
//--------------[referenced from ai/boss/undead_core.cpp]------------//
Object *CreateObject(int x, int y, int type);
bool hitdetect(Object *o1, Object *o2);
/* located in caret.cpp */
//--------------[referenced from ai/boss/undead_core.cpp]------------//
Caret *effect(int x, int y, int effectno);
/* located in trig.cpp */
//--------------[referenced from ai/boss/undead_core.cpp]------------//
int xinertia_from_angle(uint8_t angle, int speed);
int yinertia_from_angle(uint8_t angle, int speed);
/* located in ai/ai.cpp */
//--------------[referenced from ai/boss/undead_core.cpp]------------//
void KillObjectsOfType(int type);
void transfer_damage(Object *o, Object *target);
/* located in ai/sym/smoke.cpp */
//--------------[referenced from ai/boss/undead_core.cpp]------------//
Object *SmokePuff(int x, int y);
void SmokeXY(int x, int y, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in ai/boss/undead_core.cpp */
//--------------[referenced from ai/boss/undead_core.cpp]------------//
void onspawn_ud_minicore_idle(Object *o);
void ai_udmini_platform(Object *o);
void ai_ud_pellet(Object *o);
void ai_ud_smoke(Object *o);
static void CreateSpinner(int x, int y);
void ai_ud_spinner(Object *o);
void ai_ud_spinner_trail(Object *o);
void ai_ud_blast(Object *o);
/* located in ai/boss/ballos.cpp */
//--------------[referenced from ai/boss/undead_core.cpp]------------//
static void SetRotatorStates(int newstate);
/* located in sound/sound.cpp */
//--------------[referenced from ai/boss/undead_core.cpp]------------//
void sound(int snd);
/* located in common/misc.cpp */
//--------------[referenced from ai/boss/undead_core.cpp]------------//
int random(int min, int max);
================================================
FILE: ai/boss/undead_core.h
================================================
#ifndef _UNDEADCORE_BOSS_H
#define _UNDEADCORE_BOSS_H
#define NUM_ROTATORS 4
enum BBoxes { BB_UPPER, BB_BACK, BB_LOWER, BB_TARGET, NUM_BBOXES };
enum UD_Faces
{
FACE_SKULL,
FACE_TEETH,
FACE_MOUTH,
FACE_MOUTH_LIT,
FACE_NONE
};
class UDCoreBoss : public StageBoss
{
public:
void OnMapEntry();
void OnMapExit();
void Run();
void RunAftermove();
private:
bool RunDefeated();
void SpawnFaceSmoke();
void SpawnPellet(int dir);
void RunHurtFlash(int timer);
void run_front(Object *o);
void run_face(Object *o);
void run_back(Object *o);
void move_bboxes();
void set_bbox_shootable(bool enable);
Object *create_rotator(int angle, int front);
void run_rotator(Object *o);
void SetRotatorStates(int newstate);
Object *main;
Object *front, *back;
Object *face;
Object *rotator[NUM_ROTATORS];
Object *bbox[NUM_BBOXES];
};
#endif
================================================
FILE: ai/boss/x.cpp
================================================
#include "../stdai.h"
#include "x.h"
#include "x.fdh"
#define STATE_X_APPEAR 1 // script-triggered: must stay constant
#define STATE_X_FIGHT_BEGIN 10 // script-triggered: must stay constant
#define STATE_X_TRAVEL 20
#define STATE_X_BRAKE 30
#define STATE_X_OPEN_DOORS 40
#define STATE_X_FIRE_TARGETS 50
#define STATE_X_FIRE_FISHIES 60
#define STATE_X_CLOSE_DOORS 70
#define STATE_X_EXPLODING 80
#define STATE_DOOR_OPENING 10 // makes the doors open
#define STATE_DOOR_OPENING_PARTIAL 20 // makes the doors open part-way
#define STATE_DOOR_CLOSING 30 // closes the doors
#define STATE_DOOR_FINISHED 40 // doors are finished moving
#define STATE_TREAD_STOPPED 20
#define STATE_TREAD_RUN 30
#define STATE_TREAD_BRAKE 40
#define STATE_FISHSPAWNER_FIRE 10
#define STATE_TARGET_FIRE 10
#define DOORS_OPEN_DIST (32 << CSF) // how far the doors open
#define DOORS_OPEN_FISHY_DIST (20 << CSF) // how far the doors open during fish-missile phase
// the treads start moving at slightly different times
// which we change direction, etc.
static const int tread_turnon_times[] = { 4, 8, 10, 12 };
INITFUNC(AIRoutines)
{
ONTICK(OBJ_X_FISHY_MISSILE, ai_x_fishy_missile);
ONTICK(OBJ_X_DEFEATED, ai_x_defeated);
ONDEATH(OBJ_X_TARGET, ondeath_x_target);
ONDEATH(OBJ_X_MAINOBJECT, ondeath_x_mainobject);
}
void XBoss::OnMapEntry(void)
{
stat("XBoss::OnMapEntry()");
memset(&X, 0, sizeof(X));
memset(&body, 0, sizeof(body));
memset(&treads, 0, sizeof(treads));
memset(&internals, 0, sizeof(internals));
memset(&doors, 0, sizeof(doors));
memset(&targets, 0, sizeof(targets));
memset(&fishspawners, 0, sizeof(fishspawners));
npieces = 0;
mainobject = CreateObject(0, 0, OBJ_X_MAINOBJECT);
mainobject->sprite = SPR_NULL;
game.stageboss.object = mainobject;
}
void XBoss::OnMapExit()
{
// we'll let the map loader code handle deleting all our pieces.
// here's just a good-form failsafe to ensure XBoss::Run() runs no more.
mainobject = NULL;
game.stageboss.object = NULL;
}
/*
void c------------------------------() {}
*/
void XBoss::Run()
{
Object *o = mainobject;
int i;
if (!mainobject) return;
if (o->state == 0 || (!X.initilized && o->state != STATE_X_APPEAR))
{
o->hp = 1;
o->x = -(SCREEN_WIDTH << CSF);
return;
}
switch(o->state)
{
// script triggered us to initilize/appear
// (there is a hvtrigger, right before player first walks by us
// and sees us inactive, which sends us this ANP).
case STATE_X_APPEAR:
{
if (!X.initilized)
{
Init();
X.initilized = true;
}
}
break;
// script has triggered the fight to begin
case STATE_X_FIGHT_BEGIN:
{
o->timer = 0;
o->state++;
}
case STATE_X_FIGHT_BEGIN+1:
{
if (++o->timer > 100)
{
FACEPLAYER;
o->timer = 0;
o->state = STATE_X_TRAVEL;
}
}
break;
// starts the treads and moves us in the currently-facing direction
case STATE_X_TRAVEL:
{
// count number of times we've traveled, we brake
// and attack every third time.
o->timer2++;
o->timer = 0;
o->state++;
}
case STATE_X_TRAVEL+1:
{
o->timer++;
// trigger the treads to start moving,
// and put them slightly out of sync with each-other.
for(int i=0;i<4;i++)
{
if (o->timer == tread_turnon_times[i])
{
treads[i]->state = STATE_TREAD_RUN;
treads[i]->dir = o->dir;
}
}
if (o->timer > 120)
{
// time to attack? we attack every 3rd travel
// if so skid to a stop, that's the first step.
if (o->timer2 >= 3)
{
o->timer2 = 0;
o->dir ^= 1;
o->state = STATE_X_BRAKE;
o->timer = 0;
}
else
{
// passed player? skid and turn around.
if ((o->dir == RIGHT && o->x > player->x) || \
(o->dir == LEFT && o->x < player->x))
{
o->dir ^= 1;
o->state = STATE_X_TRAVEL;
}
}
}
}
break;
// skidding to a stop in preparation to attack
case STATE_X_BRAKE:
{
o->timer = 0;
o->state++;
}
case STATE_X_BRAKE+1:
{
o->timer++;
// trigger the treads to start braking,
// and put them slightly out of sync with each-other.
for(int i=0;i<4;i++)
{
if (o->timer == tread_turnon_times[i])
{
treads[i]->state = STATE_TREAD_BRAKE;
treads[i]->dir = o->dir;
}
}
if (o->timer > 50)
{
o->state = STATE_X_OPEN_DOORS;
o->timer = 0;
}
}
break;
// doors opening to attack
case STATE_X_OPEN_DOORS:
{
o->timer = 0;
o->savedhp = o->hp;
// select type of attack depending on where we are in the battle
if (!AllTargetsDestroyed())
{
SetStates(doors, 2, STATE_DOOR_OPENING);
o->state = STATE_X_FIRE_TARGETS;
}
else
{
SetStates(doors, 2, STATE_DOOR_OPENING_PARTIAL);
o->state = STATE_X_FIRE_FISHIES;
}
}
break;
// firing targets (early battle)
case STATE_X_FIRE_TARGETS:
{
if (doors[0]->state == STATE_DOOR_FINISHED)
{
doors[0]->state = 0;
SetStates(targets, 4, STATE_TARGET_FIRE);
}
if (++o->timer > 300 || AllTargetsDestroyed())
{
o->state = STATE_X_CLOSE_DOORS;
o->timer = 0;
}
}
break;
// firing fishy missiles (late battle)
case STATE_X_FIRE_FISHIES:
{
if (doors[0]->state == STATE_DOOR_FINISHED)
{
doors[0]->state = 0;
SetStates(fishspawners, 4, STATE_FISHSPAWNER_FIRE);
internals->flags |= FLAG_SHOOTABLE;
}
if (++o->timer > 300 || (o->savedhp - o->hp) > 200)
{
o->state = STATE_X_CLOSE_DOORS;
o->timer = 0;
}
}
break;
// doors closing after attack
case STATE_X_CLOSE_DOORS:
{
o->timer = 0;
o->state++;
SetStates(doors, 2, STATE_DOOR_CLOSING);
}
case STATE_X_CLOSE_DOORS+1:
{
if (doors[0]->state == STATE_DOOR_FINISHED)
{
doors[0]->state = 0;
// just turn off everything for both types of attacks;
// turning off the attack type that wasn't enabled isn't harmful.
SetStates(targets, 4, 0);
SetStates(fishspawners, 4, 0);
internals->flags &= ~FLAG_SHOOTABLE;
}
if (++o->timer > 50)
{
FACEPLAYER;
o->state = STATE_X_TRAVEL;
o->timer = 0;
}
}
break;
// exploding
case STATE_X_EXPLODING:
{
SetStates(fishspawners, 4, 0);
KillObjectsOfType(OBJ_X_FISHY_MISSILE);
StartScript(1000);
o->timer = 0;
o->state++;
}
case STATE_X_EXPLODING+1:
{
game.quaketime = 2;
o->timer++;
if ((o->timer % 8) == 0)
sound(SND_ENEMY_HURT_BIG);
SmokePuff(o->CenterX() + (random(-72, 72) << CSF),
o->CenterY() + (random(-64, 64) << CSF));
if (o->timer > 100)
{
starflash.Start(o->CenterX(), o->CenterY());
sound(SND_EXPLOSION1);
o->timer = 0;
o->state++;
}
}
break;
case STATE_X_EXPLODING+2:
{
game.quaketime = 40;
if (++o->timer > 50)
{
CreateObject(o->x, o->y - (24 << CSF), OBJ_X_DEFEATED);
DeleteMonster();
return;
}
}
break;
}
// call AI for all tread pieces
for(i=0;i<4;i++)
{
run_tread(i);
run_fishy_spawner(i);
}
}
// moved this to aftermove so xinertia on treads is already applied
// when we calculate the main object position.
void XBoss::RunAftermove()
{
Object *o = mainobject;
int i;
if (!mainobject || mainobject->state == 0 || !X.initilized)
return;
// main object pulled along as treads move
int tread_center = (treads[UL]->x + treads[UR]->x + \
treads[LL]->x + treads[LR]->x) / 4;
o->x += (tread_center - o->x) / 16;
run_internals();
for(i=0;i<4;i++)
{
run_body(i);
run_target(i);
}
for(i=0;i<2;i++)
{
run_door(i);
}
}
void ondeath_x_mainobject(Object *internals)
{
// do nothing really, this function is just there to override
// the default so we are not destroyed--our 0 HP level will
// be noticed in run_internals() and trigger the defeat sequence.
internals->flags &= ~FLAG_SHOOTABLE;
}
/*
void c------------------------------() {}
*/
void XBoss::run_tread(int index)
{
Object *o = treads[index];
switch(o->state)
{
case 0:
{
o->flags |= (FLAG_SOLID_BRICK | FLAG_INVULNERABLE | FLAG_NOREARTOPATTACK);
o->state = STATE_TREAD_STOPPED;
}
case STATE_TREAD_STOPPED:
{
o->frame = 0;
o->damage = 0;
o->flags &= ~FLAG_BOUNCY;
}
break;
case STATE_TREAD_RUN:
{
o->flags |= FLAG_BOUNCY;
o->timer = 0;
o->frame = 2;
o->animtimer = 0;
o->state++;
}
case STATE_TREAD_RUN+1:
{
ANIMATE(0, 2, 3);
XACCEL(0x20);
if (++o->timer > 30)
{
o->flags &= ~FLAG_BOUNCY;
o->frame = 0;
o->animtimer = 0;
o->state++;
}
}
break;
case STATE_TREAD_RUN+2:
{
ANIMATE(1, 0, 1);
XACCEL(0x20);
o->timer++;
}
break;
case STATE_TREAD_BRAKE:
{
o->frame = 2;
o->animtimer = 0;
o->flags |= FLAG_BOUNCY;
o->state++;
}
case STATE_TREAD_BRAKE+1:
{
ANIMATE(0, 2, 3);
XACCEL(0x20);
if ((o->dir == RIGHT && o->xinertia > 0) || \
(o->dir == LEFT && o->xinertia < 0))
{
o->xinertia = 0;
o->state = STATE_TREAD_STOPPED;
}
}
break;
}
// make motor noise
switch(o->state)
{
case STATE_TREAD_RUN+1:
case STATE_TREAD_BRAKE+1:
{
if (o->timer & 1)
sound(SND_MOTOR_SKIP);
}
break;
case STATE_TREAD_RUN+2:
{
if ((o->timer % 4) == 1)
sound(SND_MOTOR_RUN);
}
break;
}
// determine if player is in a position where he could get run over.
if (o->state > STATE_TREAD_STOPPED && o->xinertia != 0)
{
if (abs(player->y - o->CenterY()) <= (5 << CSF))
o->damage = 10;
else
o->damage = 0;
}
else
{
o->damage = 0;
}
LIMITX(0x400);
}
void XBoss::run_body(int i)
{
// set body position based on main object position and
// our linked tread position. first get the center point we should be at...
body[i]->x = (mainobject->x + treads[i]->x) / 2;
body[i]->y = (mainobject->y + treads[i]->y) / 2;
// ...and place our center pixel at those coordinates.
int dx = (sprites[body[i]->sprite].w / 2) - 8;
int dy = (sprites[body[i]->sprite].h / 2) - 8;
body[i]->x -= dx << CSF;
body[i]->y -= dy << CSF;
// tweaks
if (i == UL || i == LL)
{
body[i]->x -= (6 << CSF);
}
else
{
body[i]->x += (7 << CSF);
}
if (i == LL || i == LR)
{
body[i]->y += (8 << CSF);
}
}
void XBoss::run_internals()
{
internals->x = mainobject->x;
internals->y = mainobject->y;
// select frame
if (internals->shaketime & 2)
{
internals->frame = 1;
}
else
{
internals->frame = (mainobject->state < 10) ? 2 : 0;
}
// link damage to main object
if (internals->hp < 1000)
{
mainobject->DealDamage(1000 - internals->hp);
internals->hp = 1000;
}
// trigger explosion sequence when monster defeated
if (mainobject->hp <= 0 && mainobject->state < STATE_X_EXPLODING)
{
mainobject->shaketime = 150;
mainobject->state = STATE_X_EXPLODING;
}
}
void XBoss::run_door(int index)
{
Object *o = doors[index];
switch(o->state)
{
// doors opening all the way
case STATE_DOOR_OPENING:
{
o->xmark += (1 << CSF);
if (o->xmark >= DOORS_OPEN_DIST)
{
o->xmark = DOORS_OPEN_DIST;
o->state = STATE_DOOR_FINISHED;
}
}
break;
// doors opening partially for fish-missile launchers to fire
case STATE_DOOR_OPENING_PARTIAL:
{
o->xmark += (1 << CSF);
if (o->xmark >= DOORS_OPEN_FISHY_DIST)
{
o->xmark = DOORS_OPEN_FISHY_DIST;
o->state = STATE_DOOR_FINISHED;
}
}
break;
// doors closing
case STATE_DOOR_CLOSING:
{
o->xmark -= (1 << CSF);
if (o->xmark <= 0)
{
o->xmark = 0;
o->state = STATE_DOOR_FINISHED;
}
}
break;
// this is a signal to the main object that the doors
// are finished with the last command.
case STATE_DOOR_FINISHED:
break;
}
// set position relative to main object.
// doors open in opposite directions.
if (o->dir == LEFT) o->x = (mainobject->x - o->xmark);
else o->x = (mainobject->x + o->xmark);
o->y = mainobject->y;
}
void XBoss::run_fishy_spawner(int index)
{
Object *o = fishspawners[index];
switch(o->state)
{
case STATE_FISHSPAWNER_FIRE:
{
o->timer = 20 + (index * 20);
o->state++;
}
case STATE_FISHSPAWNER_FIRE+1:
{
if (o->timer)
{
o->timer--;
break;
}
// keep appropriate position relative to main object
// UL UR LL LR
static const int xoffs[] = { -64 <x = (mainobject->x + xoffs[index]);
o->y = (mainobject->y + yoffs[index]);
Object *missile = CreateObject(o->x, o->y, OBJ_X_FISHY_MISSILE);
missile->dir = index;
sound(SND_EM_FIRE);
o->timer = 120;
}
break;
}
}
void XBoss::run_target(int index)
{
Object *o = targets[index];
// has this target been destroyed?
// (we don't really kill the object until the battle is over,
// to avoid having to deal with dangling pointers).
if (o->invisible)
return;
switch(o->state)
{
case 0:
o->flags &= ~FLAG_SHOOTABLE;
o->frame &= 3;
o->state = 1;
break;
case STATE_TARGET_FIRE:
{
o->timer = 40 + (index * 10);
o->flags |= FLAG_SHOOTABLE;
o->state++;
}
case STATE_TARGET_FIRE+1:
{
if (--o->timer <= 16)
{
// flash shortly before firing
if (o->timer & 2) o->frame |= 4;
else o->frame &= 3;
if (o->timer <= 0)
{
o->timer = 40;
EmFireAngledShot(o, OBJ_GAUDI_FLYING_SHOT, 2, 0x500);
sound(SND_EM_FIRE);
}
}
}
break;
}
// keep appropriate position on internals
// UL UR LL LR
static const int xoffs[] = { -22 <x = internals->x + xoffs[index];
o->y = internals->y + yoffs[index];
}
void ondeath_x_target(Object *o)
{
SmokeClouds(o, 8, 8, 8);
sound(SND_LITTLE_CRASH);
o->flags &= ~FLAG_SHOOTABLE;
o->invisible = true;
}
/*
void c------------------------------() {}
*/
void XBoss::Init()
{
int i;
mainobject->hp = 700;
mainobject->state = 1;
mainobject->x = (128 * TILE_W) << CSF;
mainobject->y = (200 << CSF);
mainobject->flags = FLAG_IGNORE_SOLID;
// put X behind the flying gaudis
mainobject->PushBehind(lowestobject);
// create body pieces
for(i=3;i>=0;i--)
{
body[i] = CreatePiece(0, 0, OBJ_X_BODY);
body[i]->dir = (i == UL || i == LL) ? LEFT : RIGHT;
body[i]->frame = (i == LL || i == LR) ? 1 : 0;
}
// create treads
for(i=0;i<4;i++)
{
int x = (i == UL || i == LL) ? 0xf8000 : 0x108000;
int y = (i == UL || i == UR) ? 0x12000 : (0x20000 - (16 << CSF));
int sprite = (i == UL || i == UR) ? SPR_X_TREAD_UPPER : SPR_X_TREAD_LOWER;
treads[i] = CreateTread(x, y, sprite);
treads[i]->smushdamage = 10;
}
// create internals
internals = CreatePiece(0, 0, OBJ_X_INTERNALS);
internals->hp = 1000;
internals->flags &= ~FLAG_SHOW_FLOATTEXT;
// create targets
for(i=0;i<4;i++)
{
targets[i] = CreatePiece(0, 0, OBJ_X_TARGET);
targets[i]->sprite = SPR_X_TARGETS;
targets[i]->frame = i;
targets[i]->hp = 60;
targets[i]->flags &= ~FLAG_SHOW_FLOATTEXT;
}
// create fishy-missile shooters
for(i=0;i<4;i++)
{
fishspawners[i] = CreatePiece(0, 0, OBJ_X_FISHY_SPAWNER);
fishspawners[i]->sprite = SPR_NULL;
fishspawners[i]->invisible = true;
fishspawners[i]->flags = 0;
}
// create doors
for(i=0;i<2;i++)
{
doors[i] = CreatePiece(0, 0, OBJ_X_DOOR);
doors[i]->sprite = SPR_X_DOOR;
doors[i]->dir = i;
}
sprites[SPR_X_DOOR].frame[0].dir[LEFT].drawpoint.x = 40;
sprites[SPR_X_DOOR].frame[0].dir[LEFT].drawpoint.y = 16;
sprites[SPR_X_DOOR].frame[0].dir[RIGHT].drawpoint.x = -9;
sprites[SPR_X_DOOR].frame[0].dir[RIGHT].drawpoint.y = 16;
}
// create an object and record it as a piece of the monster
// so we can delete all the pieces later via DeleteMonster().
Object *XBoss::CreatePiece(int x, int y, int object)
{
Object *piece = CreateObject(x, y, object);
piecelist[npieces++] = piece;
piece->PushBehind(mainobject);
return piece;
}
// create an object of type OBJ_X_TREAD and give it the specified sprite.
Object *XBoss::CreateTread(int x, int y, int sprite)
{
Object *tread = CreatePiece(x, y, OBJ_X_TREAD);
tread->sprite = sprite;
return tread;
}
// delete all pieces of the monster
void XBoss::DeleteMonster()
{
for(int i=0;iDelete();
mainobject->Delete();
mainobject = NULL;
game.stageboss.object = NULL;
}
// return true if all the targets behind the doors have been destroyed.
bool XBoss::AllTargetsDestroyed()
{
for(int i=0;i<4;i++)
{
if (!targets[i]->invisible)
return false;
}
return true;
}
/*
void c------------------------------() {}
*/
// sets state on an array on objects
void XBoss::SetStates(Object *objects[], int nobjects, int state)
{
for(int i=0;istate = state;
}
// sets direction on an array on objects
void XBoss::SetDirs(Object *objects[], int nobjects, int dir)
{
for(int i=0;idir = dir;
}
/*
void c------------------------------() {}
*/
void ai_x_fishy_missile(Object *o)
{
if (o->state == 0)
{
static const int angle_for_dirs[] = { 160, 224, 96, 32 };
o->angle = angle_for_dirs[o->dir];
o->dir = RIGHT;
o->state = 1;
}
vector_from_angle(o->angle, 0x400, &o->xinertia, &o->yinertia);
int desired_angle = GetAngle(o->x, o->y, player->x, player->y);
if (o->angle >= desired_angle)
{
if ((o->angle - desired_angle) < 128)
{
o->angle--;
}
else
{
o->angle++;
}
}
else
{
if ((o->angle - desired_angle) < 128)
{
o->angle++;
}
else
{
o->angle--;
}
}
// smoke trails
if (++o->timer2 > 2)
{
o->timer2 = 0;
Caret *c = effect(o->ActionPointX(), o->ActionPointY(), EFFECT_SMOKETRAIL_SLOW);
c->xinertia = -o->xinertia >> 2;
c->yinertia = -o->yinertia >> 2;
}
o->frame = (o->angle + 16) / 32;
if (o->frame > 7) o->frame = 7;
}
// this is the cat that falls out after you defeat him
void ai_x_defeated(Object *o)
{
o->timer++;
if ((o->timer % 4) == 0)
{
SmokeClouds(o, 1, 16, 16);
}
switch(o->state)
{
case 0:
{
SmokeClouds(o, 8, 16, 16);
o->state = 1;
}
case 1:
{
if (o->timer > 50)
{
o->state = 2;
o->xinertia = -0x100;
}
// three-position shake
o->x += (o->timer & 2) ? (1 << CSF) : -(1 << CSF);
}
break;
case 2:
{
o->yinertia += 0x40;
if (o->y > (map.ysize * TILE_H) << CSF) o->Delete();
}
break;
}
}
================================================
FILE: ai/boss/x.fdh
================================================
//hash:b9080605
//automatically generated by Makegen
/* located in ObjManager.cpp */
//-------------------[referenced from ai/boss/x.cpp]-----------------//
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//-------------------[referenced from ai/boss/x.cpp]-----------------//
Caret *effect(int x, int y, int effectno);
/* located in tsc.cpp */
//-------------------[referenced from ai/boss/x.cpp]-----------------//
ScriptInstance *StartScript(int scriptno, int pageno);
/* located in trig.cpp */
//-------------------[referenced from ai/boss/x.cpp]-----------------//
void EmFireAngledShot(Object *o, int objtype, int rand_variance, int speed);
void vector_from_angle(uint8_t angle, int speed, int *xs, int *ys);
uint8_t GetAngle(int curx, int cury, int tgtx, int tgty);
/* located in ai/ai.cpp */
//-------------------[referenced from ai/boss/x.cpp]-----------------//
void KillObjectsOfType(int type);
/* located in ai/sym/smoke.cpp */
//-------------------[referenced from ai/boss/x.cpp]-----------------//
Object *SmokePuff(int x, int y);
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in ai/boss/x.cpp */
//-------------------[referenced from ai/boss/x.cpp]-----------------//
void ondeath_x_mainobject(Object *internals);
void ondeath_x_target(Object *o);
void ai_x_fishy_missile(Object *o);
void ai_x_defeated(Object *o);
/* located in sound/sound.cpp */
//-------------------[referenced from ai/boss/x.cpp]-----------------//
void sound(int snd);
/* located in common/stat.cpp */
//-------------------[referenced from ai/boss/x.cpp]-----------------//
void stat(const char *fmt, ...);
/* located in common/misc.cpp */
//-------------------[referenced from ai/boss/x.cpp]-----------------//
int random(int min, int max);
================================================
FILE: ai/boss/x.h
================================================
#ifndef _XBOSS_H
#define _XBOSS_H
enum XBDir
{
UL, UR, LL, LR
};
class XBoss : public StageBoss
{
public:
void OnMapEntry();
void OnMapExit();
void Run();
void RunAftermove();
private:
void run_tread(int index);
void run_body(int index);
void run_door(int index);
void run_target(int index);
void run_fishy_spawner(int index);
void run_internals();
bool AllTargetsDestroyed();
void Init();
Object *CreateTread(int x, int y, int sprite);
Object *CreatePiece(int x, int y, int type);
void SetStates(Object *objects[], int nobjects, int state);
void SetDirs(Object *objects[], int nobjects, int dir);
void DeleteMonster();
Object *mainobject;
Object *body[4];
Object *treads[4];
Object *internals;
Object *doors[2];
Object *targets[4];
Object *fishspawners[4];
Object *piecelist[24];
int npieces;
struct
{
bool initilized;
} X;
};
#endif
================================================
FILE: ai/egg/egg.cpp
================================================
#include "../stdai.h"
#include "../weed/weed.fdh"
#include "egg.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_CRITTER_HOPPING_GREEN, ai_critter);
ONTICK(OBJ_BASIL, ai_basil);
ONTICK(OBJ_BEHEMOTH, ai_behemoth);
ONTICK(OBJ_BEETLE_GREEN, ai_beetle_horiz);
ONTICK(OBJ_BEETLE_FREEFLY, ai_beetle_freefly);
ONTICK(OBJ_GIANT_BEETLE, ai_giant_beetle);
ONTICK(OBJ_GIANT_BEETLE_SHOT, ai_generic_angled_shot);
ONTICK(OBJ_FORCEFIELD, ai_forcefield);
ONTICK(OBJ_EGG_ELEVATOR, ai_egg_elevator);
}
/*
void c------------------------------() {}
*/
void ai_basil(Object *o)
{
switch(o->state)
{
case 0:
o->x = player->x;
o->state = (o->dir == LEFT) ? 1 : 2;
break;
case 1:
{
o->xinertia -= 0x40;
if (o->blockl || ((player->x - o->x) >= (192 << CSF)))
{
if (o->blockl) o->xinertia = 0;
o->state = 2;
}
}
break;
case 2:
{
o->xinertia += 0x40;
if (o->blockr || ((o->x - player->x) >= (192 << CSF)))
{
if (o->blockr) o->xinertia = 0;
o->state = 1;
}
}
break;
}
if (o->xinertia > 0x80) o->dir = RIGHT;
if (o->xinertia < -0x80) o->dir = LEFT;
ANIMATE(1, 0, 2);
LIMITX(0x5ff);
}
void ai_behemoth(Object *o)
{
if (o->blockl) o->dir = RIGHT;
if (o->blockr) o->dir = LEFT;
switch(o->state)
{
case 0:
{
o->nxflags |= NXFLAG_THUD_ON_RIDING;
o->damage = 1;
}
case 1: // walking happily
{
XMOVE(0x100);
ANIMATE(8, 0, 3);
if (o->shaketime)
{
o->frame = 4;
o->state = 2;
o->timer = 0;
}
}
break;
case 2: // grimace/hit
{
o->xinertia *= 7;
o->xinertia /= 8;
if (++o->timer > 40)
{
// player still picking on him?
if (o->shaketime)
{
o->state = 3;
o->frame = 6;
o->animtimer = 0;
o->timer = 0;
o->damage = 5;
}
else
{
o->state = 1;
o->animtimer = 0;
}
}
}
break;
case 3: // charge!
{
XMOVE(0x400);
ANIMATE(5, 5, 6);
if (++o->timer > 200)
o->state = 0;
}
break;
}
o->yinertia += 0x40;
LIMITY(0x5ff);
}
/*
void c------------------------------() {}
*/
void ai_beetle_horiz(Object *o)
{
enum { FLYING = 0, ON_WALL = 1 };
if (o->state == FLYING)
{
if (++o->animtimer == 2)
{
o->animtimer = 0;
o->animframe ^= 1;
}
o->frame = (o->animframe + 1);
if (o->dir == RIGHT)
{
o->xinertia += 0x50;
if (o->xinertia > 0x32c) o->xinertia = 0x32c;
if (o->blockr)
{
o->dir = LEFT;
o->state = ON_WALL;
o->frame = 0;
o->xinertia = 0;
}
}
else
{
o->xinertia -= 0x50;
if (o->xinertia < -0x32c) o->xinertia = -0x32c;
if (o->blockl)
{
o->dir = RIGHT;
o->state = ON_WALL;
o->frame = 0;
o->xinertia = 0;
}
}
}
else
{ // waiting on wall
if (abs(o->y - player->y) < (12<dir == RIGHT && (player->x > o->x)) || \
(o->dir == LEFT && (player->x < o->x)))
{
o->animframe = 0;
o->state = FLYING;
}
}
}
}
void ai_beetle_freefly(Object *o)
{
switch(o->state)
{
case 0:
{
o->invisible = true;
o->flags &= ~(FLAG_SHOOTABLE | FLAG_SOLID_MUSHY);
o->damage = 0;
o->nxflags |= NXFLAG_SLOW_WHEN_HURT;
o->state = 1;
}
case 1:
{
// has player made it to our position yet?
// (we are invisible right now, our position on the map
// is a marker for when we should fly onto the screen)
if (pdistlx(TILE_W << CSF))
{
o->flags |= (FLAG_SHOOTABLE | FLAG_SOLID_MUSHY);
o->damage = 2;
o->invisible = false;
o->ymark = o->y;
o->yinertia = -0x100;
o->state = 2;
// come on screen
if (o->dir == LEFT)
{
o->x = player->x + (256 << CSF);
o->xinertia = -0x2FF;
}
else
{
o->x = player->x - (256 << CSF);
o->xinertia = 0x2FF;
}
}
}
break;
case 2:
{
FACEPLAYER;
ANIMATE(1, 0, 1);
XACCEL(0x10);
// sinusoidal flight
if (o->y > o->ymark)
o->yinertia -= 0x10;
else
o->yinertia += 0x10;
LIMITX(0x2FF);
LIMITY(0x100);
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_giant_beetle(Object *o)
{
switch(o->state)
{
case 0:
o->invisible = true;
o->flags &= ~FLAG_SHOOTABLE;
o->damage = 0;
o->xmark = o->x;
o->ymark = o->y;
o->timer2 = o->dir;
o->nxflags |= NXFLAG_SLOW_WHEN_HURT;
o->state = 1;
case 1:
{
if (pdistlx(TILE_W << CSF))
{
o->flags |= FLAG_SHOOTABLE;
o->damage = 6;
o->invisible = false;
o->yinertia = -0x100;
o->state = 2;
o->timer = 0;
if (o->dir == LEFT)
{
o->x = player->x + (256 << CSF);
o->xinertia = -0x2FF;
}
else
{
o->x = player->x - (256 << CSF);
o->xinertia = 0x2FF;
}
}
}
break;
case 2:
{
FACEPLAYER;
XACCEL(0x10);
if (o->blockl) o->xinertia = 0x200;
if (o->blockr) o->xinertia = -0x200;
// sinusoidal flight
if (o->y > o->ymark)
o->yinertia -= 0x08;
else
o->yinertia += 0x08;
LIMITX(0x2FF);
LIMITY(0x100);
// if player runs too far away from us reset to our
// waiting state and original position.
if (!pdistlx((SCREEN_WIDTH + 80) << CSF))
{
o->state = 0;
o->xinertia = 0;
o->yinertia = 0;
o->x = o->xmark;
//o->y = o->ymark;
o->dir = o->timer2;
}
// animate wings. must do it this way instead of
// using ANIMATE(), so that the frame>1 is only checked
// when animtimer overflows, else flashing-before-fire
// will get messed up.
if (++o->animtimer > 1)
{
o->animtimer = 0;
if (++o->frame > 1)
o->frame = 0;
}
if (++o->timer >= 150)
{
// flashing before fire
if (o->frame == 1)
o->frame = 2;
// after a bit of flashing, fire
if (o->timer >= 158)
{
if (pdistlx(0x14000))
{
sound(SND_EM_FIRE);
EmFireAngledShot(o, OBJ_GIANT_BEETLE_SHOT, 2, 0x400);
}
o->timer = 0;
}
}
}
break;
}
}
/*
void c------------------------------() {}
*/
// lift in Egg Observation Room
void ai_egg_elevator(Object *o)
{
// assume not moving
o->yinertia = 0;
switch(o->state)
{
case 0:
{
// set wrong in npc.tbl, at least for our engine
o->flags &= ~FLAG_SOLID_MUSHY;
o->flags |= FLAG_SOLID_BRICK;
o->state = 1;
} // fall thru
case 1:
case 3:
case 5:
case 7:
{
if (++o->timer > 150)
{
o->timer = 0;
o->state++;
}
}
break;
case 2:
case 4:
case 6:
case 8:
{
if (++o->timer > (TILE_H * 4))
{
o->timer = 0;
if (++o->state > 8)
o->state = 1;
}
else
{
o->yinertia = \
(o->state > 5) ? 0x200 : -0x200;
ANIMATE(1, 0, 1);
}
}
break;
}
}
void ai_forcefield(Object *o)
{
// need to reinforce these or you can walk through the
// spawned forcefield that blocks exit from Igor battle
o->flags |= (FLAG_SOLID_BRICK | FLAG_INVULNERABLE);
ai_animate1(o);
}
================================================
FILE: ai/egg/egg.fdh
================================================
//hash:b9ee0abd
//automatically generated by Makegen
/* located in trig.cpp */
//------------------[referenced from ai/egg/egg.cpp]-----------------//
void EmFireAngledShot(Object *o, int objtype, int rand_variance, int speed);
/* located in ai/ai.cpp */
//------------------[referenced from ai/egg/egg.cpp]-----------------//
void ai_animate1(Object *o);
/* located in ai/egg/egg.cpp */
//------------------[referenced from ai/egg/egg.cpp]-----------------//
void ai_basil(Object *o);
void ai_behemoth(Object *o);
void ai_beetle_horiz(Object *o);
void ai_beetle_freefly(Object *o);
void ai_giant_beetle(Object *o);
void ai_egg_elevator(Object *o);
void ai_forcefield(Object *o);
/* located in sound/sound.cpp */
//------------------[referenced from ai/egg/egg.cpp]-----------------//
void sound(int snd);
================================================
FILE: ai/egg/egg2.cpp
================================================
#include "../stdai.h"
#include "../weed/weed.fdh"
#include "egg.fdh"
#include "egg2.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_CRITTER_HOPPING_AQUA, ai_critter);
ONTICK(OBJ_BEETLE_FREEFLY_2, ai_beetle_freefly);
ONTICK(OBJ_GIANT_BEETLE_2, ai_giant_beetle);
ONTICK(OBJ_DRAGON_ZOMBIE, ai_dragon_zombie);
ONTICK(OBJ_DRAGON_ZOMBIE_SHOT, ai_generic_angled_shot);
ONTICK(OBJ_FALLING_SPIKE_SMALL, ai_falling_spike_small);
ONTICK(OBJ_FALLING_SPIKE_LARGE, ai_falling_spike_large);
ONTICK(OBJ_COUNTER_BOMB, ai_counter_bomb);
ONTICK(OBJ_COUNTER_BOMB_NUMBER, ai_counter_bomb_number);
}
/*
void c------------------------------() {}
*/
void ai_dragon_zombie(Object *o)
{
if (o->hp < 950 && o->state < 50)
{
sound(SND_BIG_CRASH);
SmokeClouds(o, 8, 4, 4);
o->SpawnPowerups();
o->flags &= ~FLAG_SHOOTABLE;
o->damage = 0;
o->frame = 5; // dead
o->state = 50; // dead
}
switch(o->state)
{
case 0:
case 1: // ready
{
ANIMATE(30, 0, 1);
if (--o->timer < 0) // can fire again yet?
{
if (pdistlx(112 << CSF)) // player in range?
{
o->state = 2;
o->timer = 0;
}
}
}
break;
case 2: // flashing, prepare to fire
{
FACEPLAYER;
o->timer++;
o->frame = (o->timer & 2) ? 2 : 3;
if (o->timer > 30)
o->state = 3;
}
break;
case 3:
{
o->state = 4;
o->timer = 0;
o->frame = 4;
// save point we'll fire at--these enemies don't update
// the position of their target for each shot
o->xmark = player->x;
o->ymark = player->y;
}
case 4:
{
o->timer++;
if (o->timer < 40 && (o->timer % 8) == 1)
{
Object *fire = SpawnObjectAtActionPoint(o, OBJ_DRAGON_ZOMBIE_SHOT);
ThrowObject(fire, o->xmark, o->ymark, 6, 0x600);
sound(SND_SNAKE_FIRE);
}
if (o->timer > 60)
{
o->state = 1;
o->frame = 0;
o->timer = random(100, 200); // random time till can fire again
}
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_falling_spike_small(Object *o)
{
switch(o->state)
{
case 0:
{
o->xmark = o->x;
if (pdistlx(12 << CSF))
o->state = 1;
}
break;
case 1: // shaking
{
if (++o->animtimer >= 12)
o->animtimer = 0;
o->x = o->xmark;
if (o->animtimer >= 6) o->x += (1 << CSF);
if (++o->timer > 30)
{
o->state = 2; // fall
o->frame = 1; // slightly brighter frame at top
}
}
break;
case 2: // falling
{
o->yinertia += 0x20;
LIMITY(0xC00);
if (o->blockd)
{
if (!player->inputs_locked) // no sound in ending cutscene
sound(SND_BLOCK_DESTROY);
SmokeClouds(o, 4, 2, 2);
effect(o->CenterX(), o->CenterY(), EFFECT_BOOMFLASH);
o->Delete();
}
}
break;
}
}
void ai_falling_spike_large(Object *o)
{
switch(o->state)
{
case 0:
{
o->xmark = o->x;
if (pdistlx(12 << CSF))
o->state = 1;
}
break;
case 1: // shaking
{
if (++o->animtimer >= 12)
o->animtimer = 0;
o->x = o->xmark;
if (o->animtimer >= 6) // scuttle:: big spikes shake in the other direction
o->x -= (1 << CSF);
if (++o->timer > 30)
{
o->state = 2; // fall
o->frame = 1; // slightly brighter frame at top
}
}
break;
case 2: // falling
{
o->yinertia += 0x20;
LIMITY(0xC00);
if (o->Bottom() < player->Bottom())
{ // could fall on player
o->flags &= ~FLAG_SOLID_BRICK;
o->damage = 127; // ouch!
}
else
{ // player could only touch side from this position
o->flags |= FLAG_SOLID_BRICK;
o->damage = 0;
}
// damage NPC's as well (it kills that one Dragon Zombie)
Object *enemy;
FOREACH_OBJECT(enemy)
{
if ((enemy->flags & FLAG_SHOOTABLE) && \
o->Bottom() >= enemy->CenterY() && hitdetect(o, enemy))
{
if (!(enemy->flags & FLAG_INVULNERABLE))
enemy->DealDamage(127);
}
}
if (++o->timer > 8 && o->blockd)
{
o->flags |= FLAG_SOLID_BRICK;
o->damage = 0;
o->yinertia = 0;
o->state = 3; // fall complete
o->timer = 0;
sound(SND_BLOCK_DESTROY);
SmokeClouds(o, 4, 2, 2);
effect(o->CenterX(), o->y + (sprites[o->sprite].block_d[0].y << CSF),
EFFECT_STARSOLID);
}
}
break;
case 3: // hit ground
{
if (++o->timer > 4)
{ // make it destroyable
o->flags |= FLAG_SHOOTABLE;
o->flags &= ~FLAG_INVULNERABLE;
o->state = 4;
}
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_counter_bomb(Object *o)
{
/*debug("state: %d", o->state);
debug("timer: %d", o->timer);
debug("timer2: %d", o->timer2);*/
switch(o->state)
{
case 0:
{
o->state = 1;
o->ymark = o->y;
o->timer = random(0, 50);
o->timer2 = 0;
}
case 1:
{ // desync if multiple enemies
if (--o->timer < 0)
{
o->timer = 0;
o->state = 2;
o->yinertia = 0x300;
}
}
break;
case 2: // ready
{
if (pdistlx(80 << CSF) || o->shaketime)
{
o->state = 3;
o->timer = 0;
}
}
break;
case 3: // counting down...
{
if (--o->timer < 0)
{
if (o->timer2 < 5)
{
Object *number = CreateObject(o->CenterX() + (8 << CSF), \
o->y + (16 << CSF), \
OBJ_COUNTER_BOMB_NUMBER);
number->frame = o->timer2++;
o->timer = 60;
}
else
{
// expand bounding box to cover explosion area
o->x = o->CenterX();
o->y = o->CenterY();
o->invisible = true;
o->sprite = SPR_BBOX_PUPPET_1;
sprites[o->sprite].bbox.x1 = -128;
sprites[o->sprite].bbox.y1 = -100;
sprites[o->sprite].bbox.x2 = 128;
sprites[o->sprite].bbox.y2 = 100;
o->damage = 30;
o->yinertia = 0;
o->state = 4;
// make kaboom
sound(SND_EXPLOSION1);
quake(20);
SmokeXY(o->CenterX(), o->CenterY(), 100, 128, 100);
return;
}
}
}
break;
case 4: // exploding (one frame only to give time for bbox to damage player)
o->Delete();
return;
}
ANIMATE(4, 0, 2);
if (o->state == 2 || o->state == 3)
{
o->yinertia += (o->y > o->ymark) ? -0x10 : 0x10;
LIMITY(0x100);
}
}
void ai_counter_bomb_number(Object *o)
{
switch(o->state)
{
case 0:
{
sound(SND_COMPUTER_BEEP);
o->state = 1;
}
case 1:
{
o->x += (1 << CSF);
if (++o->timer > 8)
{
o->state = 2;
o->timer = 0;
}
}
break;
case 2:
{
if (++o->timer > 30)
o->Delete();
}
break;
}
}
================================================
FILE: ai/egg/egg2.fdh
================================================
//hash:88c9cad7
//automatically generated by Makegen
/* located in game.cpp */
//------------------[referenced from ai/egg/egg2.cpp]----------------//
void quake(int quaketime, int snd);
/* located in ObjManager.cpp */
//------------------[referenced from ai/egg/egg2.cpp]----------------//
bool hitdetect(Object *o1, Object *o2);
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//------------------[referenced from ai/egg/egg2.cpp]----------------//
Caret *effect(int x, int y, int effectno);
/* located in trig.cpp */
//------------------[referenced from ai/egg/egg2.cpp]----------------//
void ThrowObject(Object *o, int destx, int desty, int rand_variance, int speed);
/* located in ai/ai.cpp */
//------------------[referenced from ai/egg/egg2.cpp]----------------//
Object *SpawnObjectAtActionPoint(Object *o, int otype);
/* located in ai/egg/egg2.cpp */
//------------------[referenced from ai/egg/egg2.cpp]----------------//
void ai_dragon_zombie(Object *o);
void ai_falling_spike_small(Object *o);
void ai_falling_spike_large(Object *o);
void ai_counter_bomb(Object *o);
void ai_counter_bomb_number(Object *o);
/* located in ai/sym/smoke.cpp */
//------------------[referenced from ai/egg/egg2.cpp]----------------//
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
void SmokeXY(int x, int y, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in sound/sound.cpp */
//------------------[referenced from ai/egg/egg2.cpp]----------------//
void sound(int snd);
/* located in common/misc.cpp */
//------------------[referenced from ai/egg/egg2.cpp]----------------//
int random(int min, int max);
================================================
FILE: ai/egg/igor.cpp
================================================
#include "../stdai.h"
#include "igor.fdh"
#define IGOR_DEFEAT_FRAME 12
INITFUNC(AIRoutines)
{
ONTICK(OBJ_NPC_IGOR, ai_npc_igor);
ONTICK(OBJ_BOSS_IGOR, ai_boss_igor);
ONTICK(OBJ_IGOR_SHOT, ai_generic_angled_shot);
ONTICK(OBJ_BOSS_IGOR_DEFEATED, ai_boss_igor_defeated);
}
/*
void c------------------------------() {}
*/
// cutscene igor
void ai_npc_igor(Object *o)
{
switch(o->state)
{
case 0: // init, standing/panting
o->xinertia = 0;
o->frame = 0;
o->animtimer = 0;
o->state = 1;
case 1:
ANIMATE(5, 0, 1);
break;
case 2: // walking
o->state = 3;
o->frame = 2;
o->animtimer = 0;
case 3:
ANIMATE(3, 2, 5);
XMOVE(0x200);
break;
case 4: // punch
o->xinertia = 0;
o->state = 5;
o->timer = 0;
case 5:
o->frame = 6;
if (++o->timer > 10)
{
o->timer = 0;
o->state = 6;
sound(SND_EXPL_SMALL);
}
break;
case 6:
o->frame = 7;
if (++o->timer > 8)
{
o->state = 0;
o->frame = 0;
}
break;
case 7:
o->state = 1;
break;
}
o->yinertia += 0x40;
LIMITY(0x5FF);
}
/*
void c------------------------------() {}
*/
// boss-fight igor
void ai_boss_igor(Object *o)
{
enum
{
STATE_INIT = 0,
STATE_STAND,
STATE_BEGIN_ATTACK,
STATE_WALK,
STATE_JUMPING,
STATE_LANDED,
STATE_PUNCH,
STATE_PUNCH_2,
STATE_PUNCH_3,
STATE_MOUTH_BLAST,
STATE_MOUTH_BLAST_2
};
switch(o->state)
{
case STATE_INIT:
{
o->damage = 0;
o->xinertia = 0;
o->state = STATE_STAND;
o->frame = 0;
o->animtimer = 0;
}
case STATE_STAND:
{
ANIMATE(5, 0, 1);
if (++o->timer > 50)
{
o->state = STATE_BEGIN_ATTACK;
}
}
break;
case STATE_BEGIN_ATTACK:
{
o->state = STATE_WALK;
o->frame = 2;
o->animtimer = 0;
o->timer = 0;
FACEPLAYER;
o->igor.fireattack = false;
// when health is less than halfway, then use
// the mouth blast attack every third time.
if (++o->timer2 >= 3 && \
o->hp <= (objprop[o->type].initial_hp / 2))
{
o->timer2 = 0;
o->igor.fireattack = true;
o->dir ^= 1; // walk away from player
}
} // fall thru
case STATE_WALK:
{
ANIMATE(3, 2, 5);
XMOVE(0x200);
if (o->igor.fireattack)
{ // begin mouth-blast attack
if (++o->timer > 16)
{
o->state = STATE_MOUTH_BLAST;
o->xinertia = 0;
o->frame = 10;
}
}
else
{
if (o->dir == LEFT)
{
if (o->x <= player->x + player->Width())
o->state = STATE_PUNCH;
}
else
{
if (o->x + o->Width() >= player->x)
o->state = STATE_PUNCH;
}
// if we don't reach him after a while, do a jump
if (++o->timer > 50)
{
o->frame = 10;
o->yinertia = -0x400;
o->state = STATE_JUMPING;
o->timer = 0;
o->xinertia *= 2;
o->xinertia /= 3;
o->damage = 2;
}
}
}
break;
case STATE_PUNCH:
{
o->xinertia = 0;
o->state = STATE_PUNCH_2;
o->frame = 6;
o->timer = 0;
}
case STATE_PUNCH_2:
{
if (++o->timer > 12)
{
sound(SND_EXPL_SMALL);
// sprite appears identical, but has a wider bounding box.
o->sprite = SPR_IGOR_PUNCHING;
o->damage = 5;
o->state = STATE_PUNCH_3;
o->frame = 7;
o->timer = 0;
}
}
break;
case STATE_PUNCH_3:
{
if (++o->timer > 10)
{
o->state = STATE_INIT;
o->frame = 0;
o->damage = 0;
// return to normal-size bounding box
o->sprite = SPR_IGOR;
}
}
break;
case STATE_JUMPING:
{
if (o->blockd)
{
sound(SND_QUAKE);
SmokeSide(o, 4, DOWN);
o->state = STATE_LANDED;
o->frame = 11;
o->timer = 0;
}
}
break;
case STATE_LANDED:
{
o->xinertia = 0;
if (++o->timer > 10)
{
o->state = STATE_INIT;
o->frame = 0;
o->damage = 0;
}
}
break;
case STATE_MOUTH_BLAST:
{
FACEPLAYER;
o->timer = 0;
o->state++;
}
case STATE_MOUTH_BLAST_2:
{
o->timer++;
// flash mouth
o->frame = 8;
if (o->timer > 50 && (o->timer & 2))
o->frame = 9;
// fire shots
if (o->timer > 100)
{
if ((o->timer % 6) == 1)
{
sound(SND_BLOCK_DESTROY);
Object *shot = SpawnObjectAtActionPoint(o, OBJ_IGOR_SHOT);
int angle = (o->dir == LEFT) ? 136 : 248;
angle += random(-16, 16);
ThrowObjectAtAngle(shot, angle, 0x580);
}
if (o->timer > 132) // fires 6 shots
{
o->state = STATE_INIT;
o->timer = 0;
}
}
}
break;
}
o->yinertia += 0x40;
LIMITY(0x5ff);
}
void ai_boss_igor_defeated(Object *o)
{
switch(o->state)
{
case 0:
{
o->xinertia = 0;
o->yinertia = 0;
o->flags &= ~FLAG_SHOOTABLE;
o->frame = IGOR_DEFEAT_FRAME;
FACEPLAYER;
sound(SND_BIG_CRASH);
SmokeBoomUp(o);
o->timer = 0;
o->state = 1;
}
break;
case 1:
{
if ((++o->timer % 5) == 0)
smoke_puff(o, false);
o->display_xoff = 0;
if (o->timer & 2)
o->display_xoff = -1;
if (o->timer > 100)
{
o->xmark = o->x;
o->ymark = o->y;
o->timer = 0;
o->state = 2;
}
}
break;
case 2:
{
if ((++o->timer % 9) == 0)
smoke_puff(o, false);
// alternate between big and small sprites
// (frenzied/not-frenzied forms)
if (o->timer & 2)
{
o->sprite = SPR_IGOR_DEFEATED;
o->frame = 0;
if (o->dir == LEFT)
o->x = o->xmark + (12 << CSF);
else
o->x = o->xmark + (2 << CSF);
o->y = o->ymark + (12 << CSF);
}
else
{
o->sprite = SPR_IGOR;
o->frame = IGOR_DEFEAT_FRAME;
o->x = o->xmark;
o->y = o->ymark;
}
if (o->timer > 150)
{
o->state = 3;
o->frame = 0;
o->timer = 0;
}
}
break;
case 3:
{
if (++o->timer > 50)
{
o->timer = 0;
o->frame++;
if (o->frame >= 2)
o->state = 4;
}
if (o->frame == 0 && (o->timer % 16) == 0)
smoke_puff(o, false);
}
break;
case 4: break;
}
o->yinertia += 0x40;
LIMITY(0x5ff);
}
static void smoke_puff(Object *o, bool initial)
{
Object *smoke;
smoke = CreateObject(o->CenterX() + random(-16<CenterY() + random(-16<xinertia = random(-0x155, 0x155);
smoke->yinertia = random(-0x600, 0);
}
else
{
smoke->xinertia = random(-0x600, 0x600);
smoke->yinertia = random(-0x600, 0x600);
}
}
================================================
FILE: ai/egg/igor.fdh
================================================
//hash:2a6475dd
//automatically generated by Makegen
/* located in ObjManager.cpp */
//------------------[referenced from ai/egg/igor.cpp]----------------//
Object *CreateObject(int x, int y, int type);
/* located in trig.cpp */
//------------------[referenced from ai/egg/igor.cpp]----------------//
void ThrowObjectAtAngle(Object *o, uint8_t angle, int speed);
/* located in ai/ai.cpp */
//------------------[referenced from ai/egg/igor.cpp]----------------//
Object *SpawnObjectAtActionPoint(Object *o, int otype);
/* located in ai/egg/igor.cpp */
//------------------[referenced from ai/egg/igor.cpp]----------------//
void ai_npc_igor(Object *o);
void ai_boss_igor(Object *o);
void ai_boss_igor_defeated(Object *o);
static void smoke_puff(Object *o, bool initial);
/* located in ai/sym/smoke.cpp */
//------------------[referenced from ai/egg/igor.cpp]----------------//
void SmokeSide(Object *o, int nclouds, int dir);
void SmokeBoomUp(Object *o);
/* located in sound/sound.cpp */
//------------------[referenced from ai/egg/igor.cpp]----------------//
void sound(int snd);
/* located in common/misc.cpp */
//------------------[referenced from ai/egg/igor.cpp]----------------//
int random(int min, int max);
================================================
FILE: ai/final_battle/balcony.cpp
================================================
#include "../stdai.h"
#include "balcony.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_HELICOPTER, ai_helicopter);
ONTICK(OBJ_HELICOPTER_BLADE, ai_helicopter_blade);
ONTICK(OBJ_IGOR_BALCONY, ai_igor_balcony);
ONTICK(OBJ_FALLING_BLOCK, ai_falling_block);
ONTICK(OBJ_FALLING_BLOCK_SPAWNER, ai_falling_block_spawner);
}
/*
void c------------------------------() {}
*/
void ai_helicopter(Object *o)
{
Object *b;
switch(o->state)
{
case 0: // stopped
{
b = CreateObject(o->x + (26<y - (9<sprite = SPR_HELICOPTER_BLADE_1;
b->linkedobject = o;
b = CreateObject(o->x - (4<y - (4<sprite = SPR_HELICOPTER_BLADE_2;
b->linkedobject = o;
o->state = 1;
}
break;
case 20: // blades running
break;
case 30: // blades running, spawn momorin
{
CreateObject(o->x + (45<y + (34<dir = LEFT;
o->dir = RIGHT; // open hatch
o->state = 31;
}
break;
case 40: // blades running, spawn momorin, santa, and chako (from credits)
{
CreateObject(o->x + (47<y + (34<dir = LEFT;
CreateObject(o->x + (34<y + (34<dir = LEFT;
CreateObject(o->x + (21<y + (34<dir = LEFT;
o->dir = RIGHT; // open hatch
o->state = 41;
}
break;
}
}
void ai_helicopter_blade(Object *o)
{
switch(o->state)
{
case 0:
case 1:
{
if (o->linkedobject && o->linkedobject->state >= 20)
o->state = 10;
}
break;
case 10:
{
ANIMATE(0, 0, 3);
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_igor_balcony(Object *o)
{
if (!pdistlx(SCREEN_WIDTH<state = 1;
}
switch(o->state)
{
case 0:
{
o->state = 1;
}
case 1:
{
ANIMATE(20, 0, 1);
if ((pdistlx(112<shaketime)
{
o->state = 10;
}
}
break;
case 10: // walking towards player
{
o->state = 11;
o->frame = 0;
o->animtimer = 0;
FACEPLAYER;
}
case 11:
{
ANIMATE(4, 2, 5);
XMOVE(0x200);
if ((o->dir == RIGHT && o->blockr) || \
(o->dir == LEFT && o->blockl) || \
pdistlx(64<xinertia = 0;
o->state = 20;
o->timer = 0;
}
}
break;
case 20: // prepare to jump...
{
o->frame = 11; // jump-prepare frame
if (++o->timer > 10)
{
o->state = 21;
o->yinertia = -0x5ff;
XMOVE(0x200);
sound(SND_IGOR_JUMP);
}
}
break;
case 21: // jumping
{
o->frame = 10; // in-air frame
if (o->blockd && o->yinertia >= 0)
{
quake(20);
o->xinertia = 0;
o->state = 22;
o->timer = 0;
o->frame = 11;
}
}
break;
case 22: // landed
{
if (++o->timer > 30)
o->state = 30;
}
break;
case 30: // mouth-blast attack
{
o->state = 31;
o->timer = 0;
FACEPLAYER;
}
case 31:
{
o->timer++;
// flash mouth
o->frame = 8;
if (o->timer < 50 && (o->timer & 2))
o->frame = 9;
// fire shots
if (o->timer > 30)
{
if ((o->timer % 4) == 1)
{
sound(SND_BLOCK_DESTROY);
Object *shot = SpawnObjectAtActionPoint(o, OBJ_IGOR_SHOT);
int angle = (o->dir == LEFT) ? 136 : 248;
angle += random(-16, 16);
ThrowObjectAtAngle(shot, angle, 0x580);
}
}
if (o->timer > 82)
{
FACEPLAYER;
o->state = 10;
}
}
break;
}
o->yinertia += 0x33;
LIMITY(0x5ff);
}
/*
void c------------------------------() {}
*/
void ai_falling_block_spawner(Object *o)
{
switch(o->state)
{
// wait till player leaves "safe zone" at start of Balcony
// does nothing in Hell--you enter from the left.
case 0:
{
if (player->x < MAPX(map.xsize - 6))
{
o->state = 1;
o->timer = 24;
}
}
break;
case 1:
{
if (--o->timer < 0)
{
Object *block;
int x;
// blocks tend to follow behind the player--this goes along
// with the text that tells you to run so as not to get squashed.
if (player->equipmask & EQUIP_BOOSTER20)
{
x = (player->x + MAPX(4));
if (x < MAPX(26)) x = MAPX(26);
}
else
{
x = (player->x + MAPX(6));
if (x < MAPX(23)) x = MAPX(23);
}
if (x > MAPX(map.xsize - 10))
x = MAPX(map.xsize - 10);
if (player->equipmask & EQUIP_BOOSTER20)
{
x += ((random(-14, 14) * TILE_W) << CSF);
}
else
{
x += ((random(-11, 11) * TILE_H) << CSF);
}
block = CreateObject(x, (player->y - MAPY(14)), OBJ_FALLING_BLOCK);
block->dir = random(0, 1) ? LEFT : RIGHT; // small/big blocks
o->timer = random(9, 24);
}
}
break;
}
}
void ai_falling_block(Object *o)
{
o->damage = (player->Top() > o->CenterY()) ? 10 : 0;
//debug("Falling Block State %d", o->state);
switch(o->state)
{
case 0:
{
bool in_hell = (game.curmap == STAGE_HELL2);
switch(o->dir)
{
case LEFT: // large Hell or Balcony block
{
o->sprite = (in_hell) ? SPR_HELL_BLOCK_LARGE : SPR_BALCONY_BLOCK_LARGE;
o->flags |= (FLAG_INVULNERABLE | FLAG_IGNORE_SOLID);
o->state = 10;
}
break;
case RIGHT: // small Hell or Balcony block
{
o->sprite = (in_hell) ? SPR_HELL_BLOCK_SMALL : SPR_BALCONY_BLOCK_SMALL;
o->flags |= (FLAG_INVULNERABLE | FLAG_IGNORE_SOLID);
o->state = 10;
}
break;
case DOWN: // Misery-spawned block
{
o->state = 1;
o->timer = 0;
}
break;
}
o->dir = 0; // there is actually only one dir on sprite
}
break;
case 1: // just spawned by Misery--pause a moment
{
if (++o->timer > 3)
{
o->flags |= FLAG_INVULNERABLE;
o->state = 10;
}
}
break;
case 10: // falling
{ // allow to pass thru Hell/Balcony ceiling
if (o->y > 128<flags &= ~FLAG_IGNORE_SOLID;
o->state = 11;
}
}
case 11: // passed thru ceiling in Hell B2
{
o->yinertia += 0x40;
LIMITY(0x700);
if (o->blockd)
{
o->yinertia = -0x200;
o->flags |= FLAG_IGNORE_SOLID;
o->state = 20;
SmokeSide(o, 4, DOWN);
quake(10);
}
}
break;
case 20: // already bounced on ground, falling offscreen
{
o->yinertia += 0x40;
LIMITY(0x700);
if (o->y > ((map.ysize * TILE_H) << CSF))
{
o->Delete();
}
}
break;
}
}
================================================
FILE: ai/final_battle/balcony.fdh
================================================
//hash:3e8a2223
//automatically generated by Makegen
/* located in game.cpp */
//------------[referenced from ai/final_battle/balcony.cpp]----------//
void quake(int quaketime, int snd);
/* located in ObjManager.cpp */
//------------[referenced from ai/final_battle/balcony.cpp]----------//
Object *CreateObject(int x, int y, int type);
/* located in trig.cpp */
//------------[referenced from ai/final_battle/balcony.cpp]----------//
void ThrowObjectAtAngle(Object *o, uint8_t angle, int speed);
/* located in ai/ai.cpp */
//------------[referenced from ai/final_battle/balcony.cpp]----------//
Object *SpawnObjectAtActionPoint(Object *o, int otype);
/* located in ai/final_battle/balcony.cpp */
//------------[referenced from ai/final_battle/balcony.cpp]----------//
void ai_helicopter(Object *o);
void ai_helicopter_blade(Object *o);
void ai_igor_balcony(Object *o);
void ai_falling_block_spawner(Object *o);
void ai_falling_block(Object *o);
/* located in ai/sym/smoke.cpp */
//------------[referenced from ai/final_battle/balcony.cpp]----------//
void SmokeSide(Object *o, int nclouds, int dir);
/* located in sound/sound.cpp */
//------------[referenced from ai/final_battle/balcony.cpp]----------//
void sound(int snd);
/* located in common/misc.cpp */
//------------[referenced from ai/final_battle/balcony.cpp]----------//
int random(int min, int max);
================================================
FILE: ai/final_battle/doctor.cpp
================================================
#include "../stdai.h"
#include "doctor.h"
#include "doctor.fdh"
/*
From King's Table, here's the Doctor's first form.
He teleports around the room firing red wave shots at you with
the Red Crystal following him. After every fourth teleport, he
substitutes the wave attack for a aerial "explosion" of bouncy
red shots (OBJ_DOCTOR_BLAST).
*/
INITFUNC(AIRoutines)
{
ONTICK(OBJ_BOSS_DOCTOR, ai_boss_doctor);
AFTERMOVE(OBJ_RED_CRYSTAL, aftermove_red_crystal);
ONTICK(OBJ_DOCTOR_SHOT, ai_doctor_shot);
ONTICK(OBJ_DOCTOR_SHOT_TRAIL, ai_doctor_shot_trail);
ONTICK(OBJ_DOCTOR_BLAST, ai_doctor_blast);
ONTICK(OBJ_DOCTOR_CROWNED, ai_doctor_crowned);
}
/*
void c------------------------------() {}
*/
void ai_boss_doctor(Object *o)
{
//AIDEBUG;
/*if (o->state > 2 && o->state < 500)
{
o->state = 937;
StartScript(410);
return;
}*/
switch(o->state)
{
case 0:
{
o->y += (8 << CSF);
o->frame = 3;
o->state = 1;
o->BringToFront(); // make sure in front of doctor_crowned
crystal_tofront = true; // make sure front crystal is in front of us
}
break;
case 2: // transforming (script)
{
o->timer++;
o->frame = (o->timer & 2) ? 0 : 3;
if (o->timer > 50)
o->state = 10;
}
break;
case 10: // base state/falling (script)
{
o->yinertia += 0x80;
o->flags |= FLAG_SHOOTABLE;
o->damage = 3;
if (o->blockd)
{
o->state = 20;
o->timer = 0;
o->frame = 0;
o->savedhp = o->hp;
FACEPLAYER;
}
}
break;
// fire wave shot
case 20:
{
o->timer++;
if (o->timer < 50)
{
if ((o->hp - o->savedhp) > 20)
o->timer = 50;
}
if (o->timer == 50)
{ // arm across chest
FACEPLAYER;
o->frame = 4;
}
if (o->timer == 80)
{
Object *shot;
o->frame = 5; // arm cast out
shot = SpawnObjectAtActionPoint(o, OBJ_DOCTOR_SHOT);
shot->dir = o->dir;
shot->angle = 0;
shot = SpawnObjectAtActionPoint(o, OBJ_DOCTOR_SHOT);
shot->dir = o->dir;
shot->angle = 0x80;
sound(SND_FUNNY_EXPLODE);
}
if (o->timer == 120)
o->frame = 0; // arm down
if (o->timer > 130)
{
if ((o->hp - o->savedhp) > 50)
{
o->state = 100;
o->timer = 0;
}
if (o->timer > 160)
{
o->state = 100;
o->timer = 0;
}
}
}
break;
// big "explosion" blast
case 30:
{
o->state = 31;
o->timer = 0;
o->frame = 6;
o->xmark = o->x;
o->flags |= FLAG_SHOOTABLE;
}
case 31:
{
o->x = o->xmark;
if (++o->timer & 2) o->x += (1 << CSF);
if (o->timer > 50)
{
o->state = 32;
o->timer = 0;
o->frame = 7;
sound(SND_LIGHTNING_STRIKE);
for(int angle=8;angle<256;angle+=16)
{
Object *shot = SpawnObjectAtActionPoint(o, OBJ_DOCTOR_BLAST);
ThrowObjectAtAngle(shot, angle, 0x400);
}
}
}
break;
case 32: // after blast
{
if (++o->timer > 50)
o->state = 100;
}
break;
// teleport away
case 100:
{
o->state = 101;
o->flags &= ~FLAG_SHOOTABLE;
o->damage = 0;
dr_tp_out_init(o);
}
case 101:
{
if (dr_tp_out(o))
{
o->state = 102;
o->timer = 0;
o->invisible = true;
// decide where we're going to go now, so the red crystal
// can start moving towards it. But, it's important not to
// actually move until the last possible second, or we could
// drag our floattext along with us (and give away our position).
o->xmark = (random(5, 35) * TILE_W) << CSF;
o->ymark = (random(5, 7) * TILE_H) << CSF;
}
}
break;
case 102: // invisible: waiting to reappear
{
if (++o->timer > 40)
{
o->state = 103;
o->timer = 16;
o->frame = 2;
o->yinertia = 0;
o->x = o->xmark;
o->y = o->ymark;
FACEPLAYER;
}
}
break;
// tp back in
case 103:
{
o->state++;
dr_tp_in_init(o);
}
case 104:
{
if (dr_tp_in(o))
{
o->flags |= FLAG_SHOOTABLE;
o->damage = 3;
if (++o->timer2 >= 4)
{ // big explode
o->timer2 = 0;
o->state = 30;
}
else
{ // another wave shot
o->state = 10;
}
}
}
break;
// defeated!
case 500:
{
o->flags &= ~FLAG_SHOOTABLE;
o->frame = 6;
// fall to earth
o->yinertia += 0x10;
if (o->blockd && o->yinertia >= 0)
{
o->state = 501;
o->timer = 0;
o->xmark = o->x;
FACEPLAYER;
}
}
break;
case 501: // flashing (transforming into Doctor 2)
{
FACEPLAYER;
o->frame = 8;
o->x = o->xmark;
if (!(++o->timer & 2))
o->x += (1 << CSF);
}
break;
}
// enable per-frame bbox
COPY_PFBOX;
// set crystal follow position
if (o->state >= 10)
{
if (o->invisible) // teleporting
{
crystal_xmark = o->xmark;
crystal_ymark = o->ymark;
}
else
{
crystal_xmark = o->x;
crystal_ymark = o->y;
}
}
LIMITY(0x5ff);
}
/*
void c------------------------------() {}
*/
// wave shot
void ai_doctor_shot(Object *o)
{
if (o->x < 0 || o->x > ((map.xsize * TILE_W) << CSF))
{
o->Delete();
return;
}
switch(o->state)
{
case 0:
{
o->state = 1;
o->xmark = o->x;
o->ymark = o->y;
}
case 1:
{
// distance apart from each other
if (o->timer2 < 128)
o->timer2++;
// spin
o->angle += 6;
// travel
o->speed += (o->dir == LEFT) ? -0x15 : 0x15;
o->xmark += o->speed;
o->x = o->xmark + (xinertia_from_angle(o->angle, o->timer2<y = o->ymark + (yinertia_from_angle(o->angle, o->timer2<x, o->y, OBJ_DOCTOR_SHOT_TRAIL);
trail->sprite = SPR_DOCTOR_SHOT;
trail->frame = 1;
trail->PushBehind(o);
}
break;
}
}
void ai_doctor_shot_trail(Object *o)
{
ANIMATE_FWD(3);
if (o->frame > 3)
o->Delete();
}
// from his "explosion" attack
void ai_doctor_blast(Object *o)
{
// they're bouncy
if ((o->blockl && o->xinertia < 0) || \
(o->blockr && o->xinertia > 0))
{
o->xinertia = -o->xinertia;
}
if (o->blockd && o->yinertia > 0)
o->yinertia = -0x200;
if (o->blocku && o->yinertia < 0)
o->yinertia = 0x200;
ANIMATE(0, 0, 1);
if ((++o->timer % 4) == 1)
CreateObject(o->x, o->y, OBJ_DOCTOR_SHOT_TRAIL)->PushBehind(o);
if (o->timer > 250)
o->Delete();
}
/*
void c------------------------------() {}
*/
// The Doctor's red crystal.
// There are actually two, one is behind him and one is in front
// and they alternate visibility as they spin around him so it looks 3D.
//
// This function has to be an aftermove, otherwise, because one is in front
// and the other behind, one will be checking crystal_xmark before the Doctor
// updates it, and the other afterwards, and they will get out of sync.
void aftermove_red_crystal(Object *o)
{
ANIMATE(3, 0, 1);
switch(o->state)
{
case 0:
{
if (crystal_xmark != 0)
{
o->state = 1;
crystal_tofront = true;
}
}
break;
case 1:
{
o->xinertia += (o->x < crystal_xmark) ? 0x55 : -0x55;
o->yinertia += (o->y < crystal_ymark) ? 0x55 : -0x55;
LIMITX(0x400);
LIMITY(0x400);
if ((o->dir == LEFT && o->xinertia > 0) || \
(o->dir == RIGHT && o->xinertia < 0))
{
o->invisible = true;
}
else
{
o->invisible = false;
}
}
break;
}
if (crystal_tofront && o->dir == LEFT)
{
o->BringToFront();
crystal_tofront = false;
}
}
/*
void c------------------------------() {}
*/
// doctor as npc before fight
void ai_doctor_crowned(Object *o)
{
switch(o->state)
{
case 0:
{
// do this manually instead of a spawn point,
// cause he's gonna transform.
o->x -= (8 << CSF);
o->y -= (16 << CSF);
o->state = 1;
crystal_xmark = crystal_ymark = 0;
crystal_tofront = true;
}
case 1: // faces away
{
o->frame = 0;
}
break;
case 10: // goes "ho ho ho" (while still facing away)
{
o->frame = 0;
o->animtimer = 0;
o->timer = 0;
o->state = 11;
}
case 11:
{
ANIMATE(5, 0, 1);
// he has to show shrug frame exactly 6 times.
// ANIMATE(5) changes frame on every 6th tick
// so this is 6*6*nframes(2) = 72
if (++o->timer >= 72)
o->state = 1;
}
break;
case 20: // turns around (faces screen instead of away)
{
o->state = 21;
o->frame = 2;
}
break;
case 40: // arm up--presents red crystal
{
o->state = 41;
// spawn the red crystal
// one is for when it's behind him, the other is in front.
int x = o->x - (6 << CSF);
int y = o->y - (8 << CSF);
dr_create_red_crystal(x, y);
}
case 41:
{
o->frame = 4;
}
break;
case 50: // "ho ho ho" (while facing player)
{
o->frame = 4;
o->animtimer = 0;
o->timer = 0;
o->state = 51;
}
case 51:
{
ANIMATE(5, 4, 5);
if (++o->timer >= 72)
o->state = 41;
}
break;
}
}
================================================
FILE: ai/final_battle/doctor.fdh
================================================
//hash:40ec33bf
//automatically generated by Makegen
/* located in ObjManager.cpp */
//------------[referenced from ai/final_battle/doctor.cpp]-----------//
Object *CreateObject(int x, int y, int type);
/* located in trig.cpp */
//------------[referenced from ai/final_battle/doctor.cpp]-----------//
void ThrowObjectAtAngle(Object *o, uint8_t angle, int speed);
int xinertia_from_angle(uint8_t angle, int speed);
int yinertia_from_angle(uint8_t angle, int speed);
/* located in ai/ai.cpp */
//------------[referenced from ai/final_battle/doctor.cpp]-----------//
Object *SpawnObjectAtActionPoint(Object *o, int otype);
/* located in ai/final_battle/doctor.cpp */
//------------[referenced from ai/final_battle/doctor.cpp]-----------//
void ai_boss_doctor(Object *o);
void ai_doctor_shot(Object *o);
void ai_doctor_shot_trail(Object *o);
void ai_doctor_blast(Object *o);
void aftermove_red_crystal(Object *o);
void ai_doctor_crowned(Object *o);
/* located in ai/final_battle/doctor_common.cpp */
//------------[referenced from ai/final_battle/doctor.cpp]-----------//
void dr_tp_out_init(Object *o);
bool dr_tp_out(Object *o);
void dr_tp_in_init(Object *o);
bool dr_tp_in(Object *o);
Object *dr_create_red_crystal(int x, int y);
/* located in sound/sound.cpp */
//------------[referenced from ai/final_battle/doctor.cpp]-----------//
void sound(int snd);
/* located in common/misc.cpp */
//------------[referenced from ai/final_battle/doctor.cpp]-----------//
int random(int min, int max);
================================================
FILE: ai/final_battle/doctor.h
================================================
#ifndef _DOCTOR_H
#define _DOCTOR_H
extern int crystal_xmark, crystal_ymark;
extern bool crystal_tofront;
#endif
================================================
FILE: ai/final_battle/doctor_common.cpp
================================================
#include "../stdai.h"
#include "doctor_common.fdh"
int crystal_xmark, crystal_ymark;
bool crystal_tofront;
Object *dr_create_red_crystal(int x, int y)
{
Object *upper_xtal;
// we have to create these with the one which will bring itself to front
// already having higher zorder (create it 2nd), because the code to
// run aftermoves currently doesn't create a list first and so running
// BringToFront from an aftermove can cause it's AI to be executed twice.
CreateObject(x, y, OBJ_RED_CRYSTAL)->dir = RIGHT;
(upper_xtal = CreateObject(x, y, OBJ_RED_CRYSTAL))->dir = LEFT;
return upper_xtal;
}
/*
void c------------------------------() {}
*/
void dr_tp_out_init(Object *o)
{
o->ResetClip();
o->clip_enable = true;
sound(SND_TELEPORT);
o->shaketime = 0; // show any waiting damage numbers NOW
}
bool dr_tp_out(Object *o)
{
o->clipy1 += 2;
o->clipy2 -= 2;
if (o->clipy1 >= o->clipy2)
{
o->clip_enable = false;
o->invisible = true;
return true;
}
return false;
}
/*
void c------------------------------() {}
*/
void dr_tp_in_init(Object *o)
{
o->clipy1 = o->clipy2 = (sprites[o->sprite].h / 2);
o->clip_enable = true;
o->invisible = false;
}
bool dr_tp_in(Object *o)
{
o->clipy1 -= 2;
o->clipy2 += 2;
if (o->clipy1 <= 0 || o->clipy2 >= sprites[o->sprite].h)
{
o->clip_enable = false;
o->ResetClip();
return true;
}
return false;
}
================================================
FILE: ai/final_battle/doctor_common.fdh
================================================
//hash:aec4f409
//automatically generated by Makegen
/* located in ObjManager.cpp */
//---------[referenced from ai/final_battle/doctor_common.cpp]-------//
Object *CreateObject(int x, int y, int type);
/* located in ai/final_battle/doctor_common.cpp */
//---------[referenced from ai/final_battle/doctor_common.cpp]-------//
Object *dr_create_red_crystal(int x, int y);
void dr_tp_out_init(Object *o);
bool dr_tp_out(Object *o);
void dr_tp_in_init(Object *o);
bool dr_tp_in(Object *o);
/* located in sound/sound.cpp */
//---------[referenced from ai/final_battle/doctor_common.cpp]-------//
void sound(int snd);
================================================
FILE: ai/final_battle/doctor_frenzied.cpp
================================================
#include "../stdai.h"
#include "doctor.h"
#include "doctor_frenzied.fdh"
enum STATES
{
// 0-9 are used by in-game scripts during intro
// 500+ is triggered for defeat sequence
STATE_BASE = 10, // fall; once on ground for a moment pick next attack
STATE_JUMP = 20, // jumps at player
STATE_JUMP_WITH_GP = 30, // taller jump and enable "ground pound"
STATE_IN_AIR = 40, // in air
STATE_IN_AIR_WITH_GP = 50, // in air and will "ground pound" if passes over player
STATE_LANDED = 60, // landed from a jump
STATE_RED_DASH = 70, // red dash; try to hit player with elbow
STATE_MEGA_BATS = 80, // arms out & spawn mega bats
STATE_TELEPORT = 90, // teleport away and reappear over players head
STATE_DEFEATED = 500, // script constant
STATE_DISSOLVE = 510 // also scripted
};
#define DAMAGE_NORMAL 5
#define DAMAGE_RED_DASH 10
// the Doctor repeats this series of attacks over and over,
// when he reaches the -1, it starts over at the beginning.
static const int attack_pattern[] =
{
STATE_JUMP_WITH_GP,
STATE_TELEPORT,
STATE_RED_DASH,
STATE_JUMP,
STATE_JUMP,
STATE_RED_DASH,
STATE_TELEPORT,
STATE_MEGA_BATS,
STATE_JUMP_WITH_GP,
STATE_JUMP,
STATE_JUMP,
-1
};
INITFUNC(AIRoutines)
{
ONTICK(OBJ_BOSS_DOCTOR_FRENZIED, ai_boss_doctor_frenzied);
ONTICK(OBJ_DOCTOR_BAT, ai_doctor_bat);
}
/*
void c------------------------------() {}
*/
void ai_boss_doctor_frenzied(Object *o)
{
//AIDEBUG;
switch(o->state)
{
// fight begin/base state
case STATE_BASE:
{
o->flags |= FLAG_SHOOTABLE;
o->flags &= ~FLAG_INVULNERABLE;
o->xinertia = 0;
o->frame = 1;
o->timer = 0;
o->animtimer = 0;
o->savedhp = o->hp;
o->state++;
}
case STATE_BASE+1:
{
o->yinertia += 0x80;
FACEPLAYER;
// select frame
if (o->frame == 6) // arms out
{
// must have done "redsplode" attack; leave alone for the duration
}
else if (!o->blockd)
{ // falling
o->frame = 4;
}
else
{ // panting animation
ANIMATE(10, 1, 2);
// "redsplode" attack if possible
if ((o->savedhp - o->hp) > 20)
{
if (pdistlx(48<blockd)
do_redsplode(o);
}
}
// after a moment select next attack in the loop
if (++o->timer > 30 || (o->savedhp - o->hp) > 20)
{
o->state = attack_pattern[o->timer2];
o->timer = 0;
// move to next state
if (attack_pattern[++o->timer2] == -1)
o->timer2 = 0;
}
}
break;
}
run_jumps(o);
run_red_dash(o);
run_mega_bats(o);
run_teleport(o);
run_init(o);
run_defeat(o);
if (o->state < STATE_DISSOLVE)
run_red_drip(o);
// set crystal follow position
// still set it on first 2 DEFEATED states (falling to ground)
// but not after that (alert: this seems pretty damn bug prone, fixme)
if (o->state >= STATE_BASE && o->state <= STATE_DEFEATED+1)
{
if (o->invisible) // in middle of teleport: after tp out, before tp in
{
crystal_xmark = o->xmark;
crystal_ymark = o->ymark;
}
else
{
crystal_xmark = o->x;
crystal_ymark = o->y;
}
}
if (o->yinertia > 0x5ff)
o->yinertia = 0x5ff;
}
static void run_jumps(Object *o)
{
switch(o->state)
{
// jump at player
case STATE_JUMP:
{
o->frame = 3;
FACEPLAYER;
if (++o->timer > 20)
{
o->state = STATE_IN_AIR;
o->frame = 4;
o->animtimer = 0;
o->yinertia = -0x600;
XMOVE(0x400);
}
}
break;
// slight taller jump with no delay, and can "ground pound"
case STATE_JUMP_WITH_GP:
{
FACEPLAYER;
o->state = STATE_IN_AIR_WITH_GP;
o->frame = 4;
o->animtimer = 0;
o->yinertia = -0x800;
XMOVE(0x400);
}
break;
case STATE_IN_AIR: // in air (normal)
case STATE_IN_AIR_WITH_GP: // in air; can "ground pound" if we pass over player
{
ANIMATE(1, 4, 5);
o->yinertia += 0x40;
if (o->state == STATE_IN_AIR_WITH_GP)
{
if (pdistlx(8<y >= o->y)
{
o->xinertia = 0;
o->yinertia = 0x5ff;
o->state = STATE_IN_AIR;
}
}
else
{
FACEPLAYER;
}
if (o->blockd && o->yinertia > 0)
o->state = STATE_LANDED;
}
break;
// landed from jump
case STATE_LANDED:
{
o->frame = 3;
quake(10);
o->timer = 0;
o->state++;
}
case STATE_LANDED+1:
{
o->yinertia += 0x80;
o->xinertia *= 7;
o->xinertia /= 8;
if (++o->timer > 10)
o->state = STATE_BASE;
}
break;
}
}
/*
void c------------------------------() {}
*/
// flashing red elbow dash
static void run_red_dash(Object *o)
{
switch(o->state)
{
// prepare to dash
case STATE_RED_DASH:
{
o->frame = 3; // crouch down; look mean
o->flags |= (FLAG_SOLID_MUSHY | FLAG_INVULNERABLE);
o->timer = 0;
o->state++;
}
case STATE_RED_DASH+1:
{
if (++o->timer > 20)
{
o->frame = 7; // elbow-out dash frame
o->timer = 0;
o->state++;
sound(SND_FUNNY_EXPLODE);
XMOVE(0x5ff);
o->damage = DAMAGE_RED_DASH;
o->flags |= FLAG_NOREARTOPATTACK;
o->yinertia = 0; // he does not fall during dash
}
}
break;
// doing red dash
case STATE_RED_DASH+2:
{
// flash red
o->timer++;
o->frame = (o->timer & 2) ? 7 : 8;
// time to stop?
if ((o->blockl && o->xinertia < 0) || \
(o->blockr && o->xinertia > 0) || \
o->timer > 30)
{
if (o->timer > 30) // stopped because timeout
o->state++;
else // stopped because hit a wall
o->state = STATE_JUMP;
o->flags &= ~(FLAG_SOLID_MUSHY | FLAG_NOREARTOPATTACK | FLAG_INVULNERABLE);
o->damage = DAMAGE_NORMAL;
o->timer = 0;
}
}
break;
// dash ending due to timeout
case STATE_RED_DASH+3:
{
o->yinertia += 0x80;
o->frame = 3;
o->xinertia *= 7;
o->xinertia /= 8;
if (++o->timer > 10)
o->state = STATE_BASE;
}
break;
}
}
// arms thrust out, spawn oodles of bouncing bats
static void run_mega_bats(Object *o)
{
switch(o->state)
{
case STATE_MEGA_BATS:
{
o->state++;
o->timer = 0;
}
case STATE_MEGA_BATS+1:
{
o->frame = 6;
o->timer++;
if (o->timer > 20 && (o->timer % 3) == 1)
{
Object *bat = CreateObject(o->x + (8<y - (4<xinertia = random(0x400, 0x800);
bat->yinertia = random(-0x200, 0x200);
bat->dir = o->dir;
if (o->dir == LEFT)
{
bat->x -= (16 << CSF);
bat->xinertia = -bat->xinertia;
}
sound(SND_EM_FIRE);
}
if (o->timer > 90)
o->state = STATE_BASE;
}
break;
}
}
// teleport away and return
static void run_teleport(Object *o)
{
switch(o->state)
{
case STATE_TELEPORT:
{
o->flags &= ~FLAG_SHOOTABLE;
o->damage = 0;
o->state++;
dr_tp_out_init(o);
}
case STATE_TELEPORT+1:
{
if (dr_tp_out(o))
{
o->state++;
o->timer = 0;
// mark the location above player's head where we'll reappear
o->xmark = player->x;
o->ymark = player->y - (32<xmark < TP_X_MIN) o->xmark = TP_X_MIN;
if (o->xmark > TP_X_MAX) o->xmark = TP_X_MAX;
if (o->ymark < TP_Y_MIN) o->ymark = TP_Y_MIN;
}
}
break;
// invisible...waiting to reappear
case STATE_TELEPORT+2:
{
if (++o->timer > 40)
{
o->x = o->xmark;
o->y = o->ymark;
o->frame = 4;
FACEPLAYER;
o->state++;
}
}
break;
// reappear
case STATE_TELEPORT+3:
{
dr_tp_in_init(o);
o->yinertia = 0;
o->state++;
}
case STATE_TELEPORT+4:
{
if (dr_tp_in(o))
{
o->flags |= FLAG_SHOOTABLE;
o->damage = DAMAGE_NORMAL;
o->xinertia = 0;
o->yinertia = -0x200;
o->state = STATE_IN_AIR;
}
}
break;
}
}
/*
void c------------------------------() {}
*/
// initilization/transformation animation and "prepare to fight" states.
// this are of course all script-triggered and need to stay constant.
static void run_init(Object *o)
{
switch(o->state)
{
case 0:
{
// put ourselves at correct position over the other doctor
o->dir = (crystal_xmark > player->x) ? LEFT : RIGHT;
o->x = crystal_xmark + ((o->dir == RIGHT) ? (6<y = crystal_ymark;
// make sure we're front of other doctor
o->BringToFront();
// make sure front crystal is in front of us
crystal_tofront = true;
// because we moved our x/y directly
o->UpdateBlockStates(ALLDIRMASK);
o->state = 1;
}
case 1: // appearing/transforming
{
o->yinertia += 0x80;
o->timer++;
o->frame = (o->timer & 2) ? 0 : 3;
}
break;
// standing idle & panting
// this state doesn't seem to ever be used;
// AFAIK can only be triggered by modifying the script.
case 5:
{
o->frame = 1;
o->animtimer = 0;
o->state = 6;
}
case 6:
{
o->yinertia += 0x80;
ANIMATE(30, 1, 2);
}
break;
case 7: // prepare-to-fight pause
{
o->state = 8;
o->timer = 0;
o->frame = 3;
}
case 8:
{
o->yinertia += 0x40;
if (++o->timer > 40)
o->state = STATE_BASE;
}
break;
}
}
// defeated states and animation
static void run_defeat(Object *o)
{
switch(o->state)
{
// Defeated!
case STATE_DEFEATED:
{
KillObjectsOfType(OBJ_DOCTOR_BAT);
o->flags &= ~FLAG_SHOOTABLE;
o->damage = 0;
o->frame = 4;
o->xinertia = 0;
o->state++;
}
case STATE_DEFEATED+1: // wait till we hit ground
{
o->yinertia += 0x20;
if (o->blockd && o->yinertia > 0)
{
o->state++;
o->timer = 0;
o->xmark = o->x;
FACEPLAYER;
}
}
break;
// shaking (script tells us when to stop)
case STATE_DEFEATED+2:
{
o->frame = 9;
o->timer++;
o->x = o->xmark;
if (!(o->timer & 2)) o->x += (1 << CSF);
}
break;
// dissolve into red energy
// we already did this once before; think Pooh Black.
case STATE_DISSOLVE:
{
o->frame = 9;
o->x = o->xmark;
o->ResetClip();
o->clip_enable = true;
o->state++;
o->timer = 0;
}
case STATE_DISSOLVE+1:
{
o->timer++;
// shaking
o->x = o->xmark;
if (!(o->timer & 2)) o->x += (1 << CSF);
game.quaketime = 2;
// sound
if ((o->timer % 6) == 3)
sound(SND_FUNNY_EXPLODE);
// move energy spawn point
if (++o->timer2 >= 8)
{
o->timer2 = 0;
o->clipy1++;
if (o->clipy1 >= sprites[o->sprite].h)
o->invisible = true;
}
// spawn copious amount of energy
for(int i=0;i<3;i++)
{
int x, y;
x = o->x + (random(-16, 16) << CSF);
y = (o->y - o->DrawPointY()) + (o->clipy1 << CSF);
Object *drip = CreateObject(x, y, OBJ_RED_ENERGY);
drip->xinertia = random(-0x200, 0x200);
drip->yinertia = random(-0x400, 0);
drip->angle = DOWN;
// otherwise during the last few frames they'll get stuck in the floor
// (they still delete themselves once they hit the floor, just are
// able to come up out of it then back down during last few moments).
drip->flags |= FLAG_IGNORE_SOLID;
}
// he doesn't take up the entire height of the sprite,
// so we stop a little bit early.
if (o->clipy1 >= 44)
{
o->invisible = true;
o->frame = 0;
o->state++;
}
}
break;
// script: crystal up and away
case 520:
{
crystal_ymark = -(32 << CSF);
}
break;
}
}
/*
void c------------------------------() {}
*/
// this is a lesser-seen attack in which he pushes you away amongst
// a shower of red sparks. To trigger it, immediately after he lands
// you must walk directly up to him and deal more than 20 damage.
static void do_redsplode(Object *o)
{
// arms out full
o->frame = 6;
FACEPLAYER;
player->yinertia = -0x400;
player->xinertia = (o->x > player->x) ? -0x5ff : 0x5ff;
hurtplayer(5);
quake(10);
// big shower of red energy
for(int i=0;i<100;i++)
{
int x = o->x + (random(-16, 16) << CSF);
int y = o->y + (random(-16, 16) << CSF);
Object *spark = CreateObject(x, y, OBJ_RED_ENERGY);
spark->xinertia = random(-0x600, 0x600);
spark->yinertia = random(-0x600, 0x600);
spark->angle = DOWN;
}
}
/*
void c------------------------------() {}
*/
// the red energy that oozes off of him during most of the battle
static void run_red_drip(Object *o)
{
if (random(0, 3) == 2)
{
int x = o->x + (random(-16, 16) << CSF);
int y = o->y + (random(-8, 4) << CSF);
Object *drip = CreateObject(x, y, OBJ_RED_ENERGY);
drip->xinertia = o->xinertia;
drip->angle = DOWN;
}
}
/*
void c------------------------------() {}
*/
void ai_doctor_bat(Object *o)
{
ANIMATE(2, 0, 2);
if ((o->blockl && o->xinertia < 0) || \
(o->blockr && o->xinertia > 0))
{
o->dir ^= 1;
o->xinertia = -o->xinertia;
}
else if ((o->blocku && o->yinertia < 0) || \
(o->blockd && o->yinertia > 0))
{
o->yinertia = -o->yinertia;
}
}
================================================
FILE: ai/final_battle/doctor_frenzied.fdh
================================================
//hash:2211b55e
//automatically generated by Makegen
/* located in game.cpp */
//--------[referenced from ai/final_battle/doctor_frenzied.cpp]------//
void quake(int quaketime, int snd);
/* located in ObjManager.cpp */
//--------[referenced from ai/final_battle/doctor_frenzied.cpp]------//
Object *CreateObject(int x, int y, int type);
/* located in player.cpp */
//--------[referenced from ai/final_battle/doctor_frenzied.cpp]------//
void hurtplayer(int damage);
/* located in ai/ai.cpp */
//--------[referenced from ai/final_battle/doctor_frenzied.cpp]------//
void KillObjectsOfType(int type);
/* located in ai/final_battle/doctor_frenzied.cpp */
//--------[referenced from ai/final_battle/doctor_frenzied.cpp]------//
void ai_boss_doctor_frenzied(Object *o);
static void run_jumps(Object *o);
static void run_red_dash(Object *o);
static void run_mega_bats(Object *o);
static void run_teleport(Object *o);
static void run_init(Object *o);
static void run_defeat(Object *o);
static void do_redsplode(Object *o);
static void run_red_drip(Object *o);
void ai_doctor_bat(Object *o);
/* located in ai/final_battle/doctor_common.cpp */
//--------[referenced from ai/final_battle/doctor_frenzied.cpp]------//
void dr_tp_out_init(Object *o);
bool dr_tp_out(Object *o);
void dr_tp_in_init(Object *o);
bool dr_tp_in(Object *o);
/* located in sound/sound.cpp */
//--------[referenced from ai/final_battle/doctor_frenzied.cpp]------//
void sound(int snd);
/* located in common/misc.cpp */
//--------[referenced from ai/final_battle/doctor_frenzied.cpp]------//
int random(int min, int max);
================================================
FILE: ai/final_battle/final_misc.cpp
================================================
#include "../stdai.h"
#include "final_misc.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_MIMIGA_CAGED, ai_mimiga_caged);
ONTICK(OBJ_CHIE_CAGED, ai_mimiga_caged);
ONTICK(OBJ_CHACO_CAGED, ai_mimiga_caged);
ONTICK(OBJ_SANTA_CAGED, ai_mimiga_caged);
ONTICK(OBJ_DOCTOR_GHOST, ai_doctor_ghost);
ONTICK(OBJ_RED_ENERGY, ai_red_energy);
}
/*
void c------------------------------() {}
*/
// The Doctor in his red energy form.
// there is no "move" state, when he takes over Misery,
// the object is moved kind of unconventionally, using an state)
{
case 10:
{
o->state = 11;
o->timer = 0;
}
case 11:
{
Object *r = CreateObject(o->x, o->y+(128<angle = RIGHT;
r->linkedobject = o;
if (++o->timer > 150)
o->state++;
}
break;
case 20:
{
o->state = 21;
o->timer = 0;
}
case 21:
{
if (++o->timer > 250)
DeleteObjectsOfType(OBJ_RED_ENERGY);
}
break;
}
}
// red energy for doctor. In a completely different role,
// it's also used for the dripping blood from Ballos's final form.
void ai_red_energy(Object *o)
{
switch(o->angle)
{
case UP:
{
o->yinertia -= 0x40;
if (o->blocku && o->yinertia < 0) o->Delete();
}
break;
case DOWN:
{
o->yinertia += 0x40;
if (o->blockd && o->yinertia > 0) o->Delete();
if (++o->timer > 50)
o->Delete();
if (o->yinertia > 0x5ff)
o->yinertia = 0x5ff;
}
break;
case RIGHT:
{
if (!o->linkedobject) { o->Delete(); return; }
if (o->state == 0)
{
o->state = 1;
o->flags |= FLAG_IGNORE_SOLID;
o->xinertia = random(-0x600, 0x600);
o->yinertia = random(-0x600, 0x600);
// accel speed
o->speed = (512 / random(16, 51));
// x/y limit
int limit = random(0x80, 0x100);
o->timer2 = (limit * 2); // x limit
o->timer3 = (limit * 3); // y limit (form elongated sphere)
}
int tgtx = o->linkedobject->x + (4<x < tgtx) o->xinertia += o->speed;
else if (o->x > tgtx) o->xinertia -= o->speed;
if (o->y < o->linkedobject->y) o->yinertia += o->speed;
else if (o->y > o->linkedobject->y) o->yinertia -= o->speed;
LIMITX(o->timer2);
LIMITY(o->timer3);
}
}
o->frame = random(0, 1);
}
/*
void c------------------------------() {}
*/
void ai_mimiga_caged(Object *o)
{
switch(o->state)
{
case 0:
{
o->state = 1;
o->x -= (1 << CSF);
o->y -= (2 << CSF);
switch(o->type)
{
case OBJ_CHIE_CAGED: o->sprite = SPR_CHIE; break;
case OBJ_CHACO_CAGED: o->sprite = SPR_CHACO; break;
case OBJ_SANTA_CAGED:
o->sprite = SPR_SANTA;
o->x += (2 << CSF);
break;
default:
o->sprite = SPR_MIMIGA_CAGED;
o->x += (2 << CSF);
break;
}
}
case 1:
{
o->frame = 0;
randblink(o, 1, 12, 160);
if (o->frame == 0)
FACEPLAYER;
}
break;
case 10: // blush and spawn heart
{
o->state = 11;
o->frame = 2;
Object *h = CreateObject(o->x, o->y-(16<state = 1; // not map-spawned (disappear after a moment)
}
case 11:
{
FACEPLAYER;
}
break;
}
}
================================================
FILE: ai/final_battle/final_misc.fdh
================================================
//hash:1c3a2075
//automatically generated by Makegen
/* located in ObjManager.cpp */
//----------[referenced from ai/final_battle/final_misc.cpp]---------//
Object *CreateObject(int x, int y, int type);
/* located in ai/ai.cpp */
//----------[referenced from ai/final_battle/final_misc.cpp]---------//
void DeleteObjectsOfType(int type);
void randblink(Object *o, int blinkframe, int blinktime, int prob);
/* located in ai/final_battle/final_misc.cpp */
//----------[referenced from ai/final_battle/final_misc.cpp]---------//
void ai_doctor_ghost(Object *o);
void ai_red_energy(Object *o);
void ai_mimiga_caged(Object *o);
/* located in common/misc.cpp */
//----------[referenced from ai/final_battle/final_misc.cpp]---------//
int random(int min, int max);
================================================
FILE: ai/final_battle/misery.fdh
================================================
//hash:4f319d7c
//automatically generated by Makegen
/* located in ObjManager.cpp */
//------------[referenced from ai/final_battle/misery.cpp]-----------//
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//------------[referenced from ai/final_battle/misery.cpp]-----------//
Caret *effect(int x, int y, int effectno);
/* located in trig.cpp */
//------------[referenced from ai/final_battle/misery.cpp]-----------//
void EmFireAngledShot(Object *o, int objtype, int rand_variance, int speed);
void ThrowObjectAtPlayer(Object *o, int rand_variance, int speed);
int xinertia_from_angle(uint8_t angle, int speed);
int yinertia_from_angle(uint8_t angle, int speed);
/* located in ai/ai.cpp */
//------------[referenced from ai/final_battle/misery.cpp]-----------//
void randblink(Object *o, int blinkframe, int blinktime, int prob);
void KillObjectsOfType(int type);
/* located in ai/final_battle/misery.cpp */
//------------[referenced from ai/final_battle/misery.cpp]-----------//
void ai_boss_misery(Object *o);
static void run_spells(Object *o);
static void run_teleport(Object *o);
static void run_intro(Object *o);
static void run_defeated(Object *o);
static Object *CreateRing(Object *o, uint8_t angle);
void ai_misery_ring(Object *o);
void aftermove_misery_ring(Object *o);
void ai_misery_phase(Object *o);
void ai_misery_ball(Object *o);
void ai_black_lightning(Object *o);
/* located in ai/final_battle/doctor_frenzied.cpp */
//------------[referenced from ai/final_battle/misery.cpp]-----------//
static void run_teleport(Object *o);
/* located in ai/hell/ballos_priest.cpp */
//------------[referenced from ai/final_battle/misery.cpp]-----------//
static void run_intro(Object *o);
static void run_defeated(Object *o);
/* located in ai/sym/smoke.cpp */
//------------[referenced from ai/final_battle/misery.cpp]-----------//
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
void SmokeXY(int x, int y, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in sound/sound.cpp */
//------------[referenced from ai/final_battle/misery.cpp]-----------//
void sound(int snd);
/* located in common/misc.cpp */
//------------[referenced from ai/final_battle/misery.cpp]-----------//
int random(int min, int max);
================================================
FILE: ai/final_battle/misery_battle.cpp
================================================
#include "../stdai.h"
#include "misery.fdh"
#define STATE_FIGHTING 100 // script-triggered, must be constant
#define STATE_FLASH_FOR_SPELL 200 // flashes then casts either FIRE_SHOTS or SUMMON_BLOCk
#define STATE_FIRE_SHOTS 210 // fires black shots at player
#define STATE_SUMMON_BLOCK 220 // summons falling block over player's head
#define STATE_SUMMON_BALLS 230 // summons black-lightning balls
#define STATE_TP_AWAY 240 // teleports away then reappears
#define STATE_DEFEATED 1000 // script-triggered, must be constant
INITFUNC(AIRoutines)
{
ONTICK(OBJ_BOSS_MISERY, ai_boss_misery);
ONTICK(OBJ_MISERY_PHASE, ai_misery_phase);
ONTICK(OBJ_MISERY_SHOT, ai_generic_angled_shot);
ONTICK(OBJ_MISERY_RING, ai_misery_ring);
AFTERMOVE(OBJ_MISERY_RING, aftermove_misery_ring);
ONTICK(OBJ_MISERY_BALL, ai_misery_ball);
ONTICK(OBJ_BLACK_LIGHTNING, ai_black_lightning);
}
/*
void c------------------------------() {}
*/
void ai_boss_misery(Object *o)
{
/*debug("state: %d", o->state);
debug("timer: %d", o->timer);
debug("timer2: %d", o->timer2);*/
switch(o->state)
{
// fight begin and default/base state
case STATE_FIGHTING:
{
o->flags |= FLAG_SHOOTABLE;
o->savedhp = o->hp;
o->timer = 0;
o->frame = 0;
o->xinertia = 0;
o->state++;
}
case STATE_FIGHTING+1:
{
FACEPLAYER;
o->yinertia += (o->y < o->ymark) ? 0x20 : -0x20;
LIMITY(0x200);
if (++o->timer > 200 || (o->hp - o->savedhp) >= 80)
{
o->state = STATE_FLASH_FOR_SPELL;
o->timer = 0;
}
}
break;
}
run_spells(o);
run_teleport(o);
run_intro(o);
run_defeated(o);
LIMITX(0x200);
LIMITY(0x400);
}
// her 3 attacks: black shots, black balls, and summon falling block.
static void run_spells(Object *o)
{
switch(o->state)
{
// flashes for spell...
// then either fires shots or casts the falling-block spell
case STATE_FLASH_FOR_SPELL:
{
o->flags &= ~FLAG_SHOOTABLE;
o->xinertia = 0;
o->yinertia = 0;
o->timer = 0;
o->state++;
}
case STATE_FLASH_FOR_SPELL+1:
{
o->timer++;
o->frame = 5 + (o->timer & 1);
if (o->timer > 30)
{
o->timer = 0;
o->frame = 4;
if (++o->timer2 >= 3)
{
o->state = STATE_SUMMON_BLOCK;
o->timer2 = 0;
}
else
{
o->state = STATE_FIRE_SHOTS;
}
}
}
break;
// fire black shots at player
case STATE_FIRE_SHOTS:
{
if ((++o->timer % 6) == 0)
{
EmFireAngledShot(o, OBJ_MISERY_SHOT, 4, 0x800);
sound(SND_FIREBALL);
}
if (o->timer > 30)
{
o->timer = 0;
o->state = STATE_TP_AWAY;
}
}
break;
// summon falling block
case STATE_SUMMON_BLOCK:
{
if (++o->timer == 10)
{
int x = player->x - (8 << CSF);
int y = player->y - (64 << CSF);
Object *block = CreateObject(x, y, OBJ_FALLING_BLOCK);
block->sprite = SPR_BALCONY_BLOCK_LARGE;
block->dir = DOWN; // tell block it was spawned by Misery
}
if (o->timer > 30)
{
o->state = STATE_TP_AWAY;
o->timer = 0;
}
}
break;
// summon black balls
case STATE_SUMMON_BALLS:
{
FACEPLAYER;
o->frame = 4;
o->timer = 0;
o->state++;
}
case STATE_SUMMON_BALLS+1:
{
o->yinertia += (o->y < o->ymark) ? 0x20 : -0x20;
LIMITY(0x200);
if ((++o->timer % 24) == 0)
{
CreateObject(o->x, o->y+(4<timer > 72)
{
o->state = 100;
o->timer = 0;
}
}
break;
}
}
// runs her teleport-away and reappear states.
static void run_teleport(Object *o)
{
switch(o->state)
{
// teleport away, then reappear someplace else
case STATE_TP_AWAY:
{
o->state++;
o->timer = 0;
o->invisible = true;
o->flags &= ~FLAG_SHOOTABLE;
CreateObject(o->x, o->y, OBJ_MISERY_PHASE)->dir = LEFT;
CreateObject(o->x, o->y, OBJ_MISERY_PHASE)->dir = RIGHT;
sound(SND_TELEPORT);
}
case STATE_TP_AWAY+1:
{
o->timer++;
// it takes exactly 8 frames for the phase-in animation to complete
if (o->timer == 42)
{
// we don't actually move until the last possible second
// in order not to bring the floattext/damage numbers with us,
// which gives away our position.
o->xmark = (random(9, 31) * TILE_W) << CSF;
o->ymark = (random(5, 7) * TILE_H) << CSF;
CreateObject(o->xmark + 0x2000, o->ymark, OBJ_MISERY_PHASE)->dir = LEFT;
CreateObject(o->xmark - 0x2000, o->ymark, OBJ_MISERY_PHASE)->dir = RIGHT;
}
else if (o->timer == 50)
{
// switch back to showing real misery instead of the phase-in effect
o->flags |= FLAG_SHOOTABLE;
o->invisible = false;
o->frame = 0;
o->dir = LEFT;
o->x = o->xmark;
o->y = o->ymark;
// spawn rings
if (o->hp < 340)
{
CreateRing(o, 0x00);
CreateRing(o, 0x80);
if (o->hp < 180)
{
CreateRing(o, 0x40);
CreateRing(o, 0xC0);
}
}
// after tp we can summon the black balls if the player
// is far enough away from us that they won't immediately trigger
if (abs(player->x - o->x) > 112<state = STATE_SUMMON_BALLS;
}
else
{
o->state = STATE_FIGHTING;
}
// setup sinusoidal hover, both of those possible states
// are in-air states that do it.
o->timer = 0;
o->yinertia = -0x200;
// counteracts yinertia of first visible frame, so it's a
// seamless transition from the phase-in effect.
o->y += 0x220;
}
}
break;
}
}
// intro states: stuff that happens before the fight actually starts.
static void run_intro(Object *o)
{
switch(o->state)
{
case 0:
{
// fixes her position on throne; don't use a spawn point or it'll
// glitch when she turns to misery_stand in defeated cinematic
o->y += (6 << CSF);
// her initial target height when fight begins
o->ymark = (64 << CSF);
o->state = 1;
}
case 1:
{
o->frame = 0;
randblink(o);
}
break;
case 20: // fall from throne (script-triggered)
{
o->yinertia += 0x40;
if (o->blockd)
{
o->state = 21;
o->frame = 2;
}
}
break;
case 21: // standing/talking after fall from throne
{
o->frame = 2;
randblink(o, 3);
}
break;
}
}
// defeated states--they're all run by the ondeath script.
static void run_defeated(Object *o)
{
// these states are all script-triggered and must be constant.
switch(o->state)
{
// defeated! "gaah" in air
case 1000:
{
o->flags &= ~FLAG_SHOOTABLE;
KillObjectsOfType(OBJ_MISERY_RING);
SmokeClouds(o, 3, 2, 2);
o->xinertia = 0;
o->yinertia = 0;
o->state = 1001;
o->timer = 0;
o->frame = 4;
o->xmark = o->x;
}
case 1001: // shake until script tells us otherwise
{
o->x = o->xmark;
if (++o->timer & 2)
o->x += (1 << CSF);
}
break;
case 1010: // fall to ground and do defeated frame: "ergh"
{
o->yinertia += 10;
if (o->blockd)
{
o->frame = 7;
o->state = 1011;
}
}
break;
}
}
/*
void c------------------------------() {}
*/
static Object *CreateRing(Object *o, uint8_t angle)
{
Object *ring;
ring = CreateObject(0, 0, OBJ_MISERY_RING);
ring->angle = angle;
ring->linkedobject = o;
return ring;
}
void ai_misery_ring(Object *o)
{
if (!o->linkedobject)
{
SmokeClouds(o, 3, 2, 2);
o->Delete();
return;
}
switch(o->state)
{
case 0:
{
o->state = 1;
o->timer = 0;
}
case 1:
{
// distance from misery
if (o->timer < 192)
o->timer++;
// turn to bats when misery teleports
if (o->linkedobject->state >= STATE_TP_AWAY && \
o->linkedobject->state < STATE_TP_AWAY+10)
{
o->state = 10;
}
}
break;
case 10: // transform to bat
{
o->flags |= FLAG_SHOOTABLE;
o->flags &= ~FLAG_INVULNERABLE;
ThrowObjectAtPlayer(o, 3, 0x200);
FACEPLAYER;
o->sprite = SPR_ORANGE_BAT_FINAL;
o->state = 11;
}
case 11:
{
ANIMATE(4, 0, 2);
if ((o->dir == LEFT && o->blockl) || \
(o->dir == RIGHT && o->blockr) || \
o->blocku || o->blockd)
{
SmokeClouds(o, 3, 2, 2);
o->Delete();
}
}
break;
}
}
void aftermove_misery_ring(Object *o)
{
if (o->state == 1 && o->linkedobject)
{
o->angle += 2;
int dist = (o->timer << CSF) / 4;
o->x = o->linkedobject->x + xinertia_from_angle(o->angle, dist);
o->y = o->linkedobject->y + yinertia_from_angle(o->angle, dist);
}
}
/*
void c------------------------------() {}
*/
// this is her phasy teleport out/teleport in effect
// it's a 2-dir interlaced picture of her with each dir
// containing only half the lines. We spawn two objects
// in opposite dirs and then separate them.
void ai_misery_phase(Object *o)
{
XMOVE(0x400);
if (++o->timer >= 8) o->Delete();
}
void ai_misery_ball(Object *o)
{
switch(o->state)
{
case 0:
{
o->state = 1;
o->ymark = o->y;
o->xinertia = 0;
o->yinertia = -0x200;
}
case 1:
{
ANIMATE(2, 0, 1);
o->xinertia += (o->x < player->x) ? 0x10 : -0x10;
o->yinertia += (o->y < o->ymark) ? 0x20 : -0x20;
LIMITX(0x200);
LIMITY(0x200);
if (pdistlx(8<y > o->y)
{
o->state = 10;
o->timer = 0;
}
}
break;
case 10: // black lightning
{
if (++o->timer > 10)
{
sound(SND_LIGHTNING_STRIKE);
CreateObject(o->x, o->y, OBJ_BLACK_LIGHTNING);
o->Delete();
}
o->frame = (o->timer & 2) ? 2 : 1;
}
break;
}
}
void ai_black_lightning(Object *o)
{
ANIMATE(0, 0, 1);
o->yinertia = 0x1000;
if (o->blockd)
{
effect(o->CenterX(), o->Bottom(), EFFECT_BOOMFLASH);
SmokeXY(o->CenterX(), o->Bottom(), 3, o->Width()>>CSF, 4);
o->Delete();
}
}
/*
void c------------------------------() {}
*/
================================================
FILE: ai/final_battle/sidekicks.cpp
================================================
#include "../stdai.h"
#include "sidekicks.fdh"
#define SUE_BASE 20
#define SUE_PREPARE_ATTACK 30
#define SUE_SOMERSAULT 40
#define SUE_DASH 50
#define SUE_SOMERSAULT_HIT 60
// both sue and misery
#define SIDEKICK_CORE_DEFEATED 99 // core defeated (script-triggered)
#define SIDEKICK_DEFEATED 100 // sidekick defeated
#define SIDEKICK_CORE_DEFEATED_2 110
INITFUNC(AIRoutines)
{
ONTICK(OBJ_SUE_FRENZIED, ai_sue_frenzied);
ONTICK(OBJ_MISERY_FRENZIED, ai_misery_frenzied);
ONTICK(OBJ_MISERY_CRITTER, ai_misery_critter);
ONTICK(OBJ_MISERY_BAT, ai_misery_bat);
ONTICK(OBJ_MISERY_MISSILE, ai_misery_missile);
}
bool sue_being_hurt;
bool sue_was_killed;
/*
void c------------------------------() {}
*/
void ai_misery_frenzied(Object *o)
{
//AIDEBUG;
sidekick_run_defeated(o, 600);
switch(o->state)
{
case 0:
{
o->state = 1;
sue_being_hurt = sue_was_killed = false;
o->savedhp = o->hp;
o->nxflags |= NXFLAG_SLOW_X_WHEN_HURT;
sound(SND_TELEPORT);
o->timer = 1;
}
case 1: // transforming
{
o->timer++;
if (o->timer == 2)
{ // frenzied
o->sprite = SPR_MISERY_FRENZIED;
o->frame = 9;
o->x -= 0x1000;
o->y -= 0x2000;
}
if (o->timer == 4)
{ // normal
o->timer = 0;
o->sprite = SPR_MISERY;
o->frame = 2;
o->x += 0x1000;
o->y += 0x2000;
}
if (++o->timer2 >= 50)
{
o->timer2 = 0;
o->state = 2;
}
}
break;
case 10: // hold at "being transformed" frame
{
o->state = 11;
o->frame = 9;
}
break;
case 20: // fight begin / base state
{
o->state = 21;
o->timer = 0;
o->frame = 0;
o->animtimer = 0;
}
case 21:
{
o->xinertia *= 7; o->xinertia /= 8;
o->yinertia *= 7; o->yinertia /= 8;
ANIMATE(20, 0, 1);
if (++o->timer > 100)
o->state = 30;
FACEPLAYER;
}
break;
case 30:
{
o->state = 31;
o->timer = 0;
o->frame = 2;
o->savedhp = o->hp;
}
case 31:
{
ANIMATE(1, 2, 3);
if (o->blockd) o->yinertia = -0x200;
int core_x = game.stageboss.object ? game.stageboss.object->x : 0;
o->xinertia += (o->x > core_x) ? -0x20 : 0x20;
o->yinertia += (o->y > player->y) ? -0x10 : 0x10;
LIMITX(0x200);
LIMITY(0x200);
FACEPLAYER;
if (++o->timer > 150)
{
// she attacks with normal critters if you attack either her or Sue.
if ((o->savedhp - o->hp) > 20 || sue_being_hurt)
{
sue_being_hurt = false;
o->state = 40;
}
}
// she attacks periodically with fishy missiles if you killed Sue.
if (o->timer > 250 && sue_was_killed)
o->state = 50;
}
break;
case 40: // spawn bats/critters
{
o->state = 41;
o->timer = 0;
o->xinertia = 0;
o->yinertia = 0;
FACEPLAYER;
sound(SND_CHARGE_GUN);
// if you are below the 2nd little platform on the left,
// she spawns critters, else bats.
o->timer3 = (player->y >= MAPY(10)) ? OBJ_MISERY_CRITTER : OBJ_MISERY_BAT;
}
case 41:
{
o->timer++;
o->frame = (o->timer & 2) ? 4 : 5;
if ((o->timer % 6) == 1)
{
int x, y;
if (o->timer3 == OBJ_MISERY_CRITTER)
{
x = o->x + (random(-64, 64) << CSF);
y = o->y + (random(-32, 32) << CSF);
}
else
{
x = o->x + (random(-32, 32) << CSF);
y = o->y + (random(-64, 64) << CSF);
}
if (x < MAPX(2)) x = MAPX(2);
if (x > MAPX(map.xsize - 3)) x = MAPX(map.xsize - 3);
if (y < MAPY(2)) y = MAPY(2);
if (y > MAPY(map.ysize - 3)) y = MAPY(map.ysize - 3);
sound(SND_EM_FIRE);
CreateObject(x, y, o->timer3)->invisible = true;
}
if (o->timer > 50)
{
o->state = 42;
o->timer = 0;
FACEPLAYER;
}
}
break;
case 42:
{
o->frame = 6;
if (++o->timer > 50)
{
o->yinertia = -0x200;
XMOVE(-0x200);
o->state = 30;
}
}
break;
case 50: // spawn fishy missiles
{
o->state = 51;
o->timer = 0;
o->xinertia = 0;
o->yinertia = 0;
FACEPLAYER;
sound(SND_CHARGE_GUN);
}
case 51:
{
o->timer++;
o->frame = (o->timer & 2) ? 4 : 5;
int rate = (player->equipmask & EQUIP_BOOSTER20) ? 10 : 24;
if ((o->timer % rate) == 1)
{
// pattern: booster=[0,1,3,1,2,0], no-booster=[0,0,0]:
int angindex = (o->timer / 6) & 3;
fm_spawn_missile(o, angindex);
}
if (++o->timer > 50)
{
o->state = 42;
o->timer = 0;
FACEPLAYER;
}
}
break;
}
}
// spawn a fishy missile in the given direction
static Object *fm_spawn_missile(Object *o, int angindex)
{
static const int ang_table_left[] = { 0xD8, 0xEC, 0x14, 0x28 };
static const int ang_table_right[] = { 0x58, 0x6C, 0x94, 0xA8 };
Object *shot = CreateObject(o->x, o->y, OBJ_MISERY_MISSILE);
sound(SND_EM_FIRE);
if (o->dir == LEFT)
{
shot->x += (10 << CSF);
shot->angle = ang_table_left[angindex];
}
else
{
shot->x -= (10 << CSF);
shot->angle = ang_table_right[angindex];
}
return shot;
}
/*
void c------------------------------() {}
*/
void ai_misery_critter(Object *o)
{
switch(o->state)
{
case 0:
{
if (++o->timer > 16)
{
o->frame = 2;
o->invisible = false;
FACEPLAYER;
o->state = 10;
o->damage = 2;
o->flags |= FLAG_SHOOTABLE;
}
}
break;
case 10:
{
if (o->blockd && o->yinertia >= 0)
{
o->state = 11;
o->frame = 0;
o->timer = 0;
o->xinertia = 0;
FACEPLAYER;
}
}
break;
case 11:
{
if (++o->timer > 10)
{
if (++o->timer2 > 4)
o->state = 12;
else
o->state = 10;
sound(SND_ENEMY_JUMP);
o->yinertia = -0x600;
XMOVE(0x200);
o->frame = 2;
}
}
break;
case 12:
{
o->flags |= FLAG_IGNORE_SOLID;
if (o->y > MAPY(map.ysize))
{
o->Delete();
}
}
break;
}
if (o->state >= 10)
{
o->yinertia += 0x40;
if (o->yinertia > 0x5ff) o->yinertia = 0x5ff;
}
}
void ai_misery_bat(Object *o)
{
switch(o->state)
{
case 0:
{
if (++o->timer > 16)
{
o->frame = 2;
o->invisible = false;
FACEPLAYER;
o->state = 1;
o->damage = 2;
o->flags |= (FLAG_SHOOTABLE | FLAG_IGNORE_SOLID);
o->ymark = o->y;
o->yinertia = 0x400;
}
}
break;
case 1:
{
ANIMATE(2, 0, 2);
o->yinertia += (o->y < o->ymark) ? 0x40 : -0x40;
XACCEL(0x10);
if (o->x < 0 || o->x > MAPX(map.xsize) || \
o->y < 0 || o->y > MAPY(map.ysize))
{
o->Delete();
}
}
break;
}
}
void ai_misery_missile(Object *o)
{
// cut & pasted from ai_x_fishy_missile
vector_from_angle(o->angle, 0x400, &o->xinertia, &o->yinertia);
int desired_angle = GetAngle(o->x, o->y, player->x, player->y);
if (o->angle >= desired_angle)
{
if ((o->angle - desired_angle) < 128)
{
o->angle--;
}
else
{
o->angle++;
}
}
else
{
if ((o->angle - desired_angle) < 128)
{
o->angle++;
}
else
{
o->angle--;
}
}
// smoke trails
if (++o->timer2 > 2)
{
o->timer2 = 0;
Caret *c = effect(o->ActionPointX(), o->ActionPointY(), EFFECT_SMOKETRAIL_SLOW);
c->xinertia = -o->xinertia >> 2;
c->yinertia = -o->yinertia >> 2;
}
o->frame = (o->angle + 16) / 32;
if (o->frame > 7) o->frame = 7;
}
/*
void c------------------------------() {}
*/
void ai_sue_frenzied(Object *o)
{
//AIDEBUG;
sidekick_run_defeated(o, 500);
switch(o->state)
{
case 0:
{
o->state = 1;
sue_being_hurt = sue_was_killed = false;
o->savedhp = o->hp;
o->nxflags |= NXFLAG_SLOW_X_WHEN_HURT;
sound(SND_TELEPORT);
o->timer = 1;
}
case 1: // transforming
{
o->timer++;
if (o->timer == 2)
{ // frenzied sue
o->sprite = SPR_SUE_FRENZIED;
o->frame = 11;
o->x -= 0x1000;
o->y -= 0x1800;
}
if (o->timer == 4)
{ // normal sue
o->timer = 0;
o->sprite = SPR_SUE;
o->frame = 12;
o->x += 0x1000;
o->y += 0x1800;
}
if (++o->timer2 >= 50)
{
KillObjectsOfType(OBJ_RED_CRYSTAL);
o->timer2 = 0;
o->state = 2;
}
}
break;
// fight begin/base state (script-triggered)
case SUE_BASE:
{
o->state++;
o->timer = 0;
o->frame = 0;
o->animtimer = 0;
o->damage = 0;
o->flags |= FLAG_SHOOTABLE;
o->flags &= ~FLAG_IGNORE_SOLID;
}
case SUE_BASE+1:
{
ANIMATE(20, 0, 1);
FACEPLAYER;
o->xinertia *= 7; o->xinertia /= 8;
o->yinertia *= 7; o->yinertia /= 8;
if ((o->savedhp - o->hp) > 50)
{
o->savedhp = o->hp;
sue_being_hurt = true; // trigger Misery to spawn monsters
}
if (++o->timer > 80)
o->state = SUE_PREPARE_ATTACK;
}
break;
// prepare to attack
case SUE_PREPARE_ATTACK:
{
o->state++;
o->timer = 0;
o->frame = 2;
o->xinertia = 0;
o->yinertia = 0;
}
case SUE_PREPARE_ATTACK+1:
{
if (++o->timer > 16)
{
o->state = (o->timer2 ^= 1) ? SUE_SOMERSAULT : SUE_DASH;
o->timer = 0;
}
}
break;
}
sue_somersault(o);
sue_dash(o);
}
// somersault attack. this is the only time she can actually hurt you.
static void sue_somersault(Object *o)
{
switch(o->state)
{
case SUE_SOMERSAULT:
{
o->state++;
o->timer = 0;
o->damage = 4;
o->frame = 2;
FACEPLAYER;
ThrowObjectAtPlayer(o, 0, 0x600);
set_ignore_solid(o);
}
case SUE_SOMERSAULT+1:
{
// passes through frame 3 (prepare/dash) before entering anim loop
ANIMATE(1, 4, 7);
o->timer++;
if (o->shaketime && o->timer > 20)
{ // hurt fall
o->state = SUE_SOMERSAULT_HIT;
break;
}
// hit wall or timeout?
if (o->timer > 50 || \
(o->blockr && o->xinertia > 0) || \
(o->blockl && o->xinertia < 0))
{ // back to base state
o->state = SUE_BASE;
}
if ((o->timer % 5) == 1)
sound(SND_CRITTER_FLY);
}
break;
// hit during somersault
case SUE_SOMERSAULT_HIT:
{
o->state++;
o->timer = 0;
o->frame = 2; // stop somersault; back to normal stand frame
o->damage = 0;
o->flags &= ~FLAG_IGNORE_SOLID;
}
case SUE_SOMERSAULT_HIT+1: // slowing down
{
o->xinertia *= 7; o->xinertia /= 8;
o->yinertia *= 7; o->yinertia /= 8;
if (++o->timer > 6)
{
o->state++;
o->timer = 0;
o->yinertia = -0x200;
XMOVE(-0x200);
}
}
break;
// falling/egads
case SUE_SOMERSAULT_HIT+2:
{
o->frame = 9; // egads!
if (o->blockd && o->yinertia > 0)
{
o->state++;
o->timer = 0;
o->frame = 2; // standing
FACEPLAYER;
}
o->yinertia += 0x20;
LIMITY(0x5ff);
}
break;
// hit ground: slide a bit then recover
case SUE_SOMERSAULT_HIT+3:
{
if (++o->timer > 16)
o->state = 20;
}
break;
}
}
// non-harmful dash. she cannot be hurt, but cannot hurt you, either.
static void sue_dash(Object *o)
{
int x;
switch(o->state)
{
case SUE_DASH:
{
o->state++;
o->timer = 0;
FACEPLAYER;
o->flags &= ~FLAG_SHOOTABLE;
if (player->x < o->x) x = player->x - (160<x + (160<y, 0, 0x600);
set_ignore_solid(o);
}
case SUE_DASH+1:
{
// flash
o->frame = (++o->timer & 2) ? 8 : 3; // frame 8 is invisible
if (o->shaketime < 8)
o->nxflags &= ~NXFLAG_SLOW_X_WHEN_HURT;
if (o->timer > 50 || \
(o->blockr && o->xinertia > 0) || \
(o->blockl && o->xinertia < 0))
{
o->invisible = false;
o->state = SUE_BASE;
o->nxflags |= NXFLAG_SLOW_X_WHEN_HURT;
}
}
break;
}
}
// sets FLAG_IGNORE_SOLID if the object is heading towards the center
// of the room, clears it otherwise.
static void set_ignore_solid(Object *o)
{
int map_right_half = ((map.xsize * TILE_W) << CSF) / 2;
int map_bottom_half = ((map.ysize * TILE_H) << CSF) / 2;
o->flags &= ~FLAG_IGNORE_SOLID;
if ((o->x < map_right_half && o->xinertia > 0) || \
(o->x > map_right_half && o->xinertia < 0))
{
if ((o->y < map_bottom_half && o->yinertia > 0) || \
(o->y > map_bottom_half && o->yinertia < 0))
{
o->flags |= FLAG_IGNORE_SOLID;
}
}
}
/*
void c------------------------------() {}
*/
// shared between both Sue and Misery.
static void sidekick_run_defeated(Object *o, int health)
{
// die if still around when core explodes
if (o->state == SIDEKICK_CORE_DEFEATED_2)
{
if (!game.stageboss.object)
o->hp = 0;
}
// trigger die
if (o->hp < (1000 - health))
{
o->flags &= ~FLAG_SHOOTABLE;
o->hp = 9999; // don't re-trigger
o->state = SIDEKICK_DEFEATED;
}
switch(o->state)
{
// the script triggers this if you defeat the core
// without killing one or both sidekicks.
//
// once the core explodes and game.stageboss.object becomes NULL,
// the sidekicks then enter the full defeated state and collapse.
case SIDEKICK_CORE_DEFEATED:
{
if (o->hp == 9999)
{ // we were already dead when core was killed--ignore.
o->state = SIDEKICK_DEFEATED+1;
}
else
{
o->flags &= ~FLAG_SHOOTABLE;
o->hp = 9999;
o->xinertia = 0;
o->yinertia = 0;
o->frame = 9;
o->state = SIDEKICK_CORE_DEFEATED_2; // cannot "state++"; that is SIDEKICK_DEFEATED
}
}
break;
case SIDEKICK_DEFEATED:
{
o->state++;
o->frame = 9;
o->damage = 0;
o->flags &= ~FLAG_SHOOTABLE;
o->flags |= FLAG_IGNORE_SOLID;
o->yinertia = -0x200;
o->shaketime += 50;
if (o->type == OBJ_SUE_FRENZIED)
sue_was_killed = true; // trigger Misery to start spawning missiles
}
case SIDEKICK_DEFEATED+1:
{
o->yinertia += 0x20;
#define FLOOR (((13 * TILE_H) - 13) << CSF)
if (o->yinertia > 0 && o->y > FLOOR)
{
o->y = FLOOR;
o->state++;
o->frame = 10;
o->xinertia = 0;
o->yinertia = 0;
}
}
break;
case SIDEKICK_CORE_DEFEATED_2: break;
}
}
================================================
FILE: ai/final_battle/sidekicks.fdh
================================================
//hash:afaf6e59
//automatically generated by Makegen
/* located in ObjManager.cpp */
//-----------[referenced from ai/final_battle/sidekicks.cpp]---------//
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//-----------[referenced from ai/final_battle/sidekicks.cpp]---------//
Caret *effect(int x, int y, int effectno);
/* located in trig.cpp */
//-----------[referenced from ai/final_battle/sidekicks.cpp]---------//
void vector_from_angle(uint8_t angle, int speed, int *xs, int *ys);
uint8_t GetAngle(int curx, int cury, int tgtx, int tgty);
void ThrowObjectAtPlayer(Object *o, int rand_variance, int speed);
void ThrowObject(Object *o, int destx, int desty, int rand_variance, int speed);
/* located in ai/ai.cpp */
//-----------[referenced from ai/final_battle/sidekicks.cpp]---------//
void KillObjectsOfType(int type);
/* located in ai/final_battle/sidekicks.cpp */
//-----------[referenced from ai/final_battle/sidekicks.cpp]---------//
void ai_misery_frenzied(Object *o);
static Object *fm_spawn_missile(Object *o, int angindex);
void ai_misery_critter(Object *o);
void ai_misery_bat(Object *o);
void ai_misery_missile(Object *o);
void ai_sue_frenzied(Object *o);
static void sue_somersault(Object *o);
static void sue_dash(Object *o);
static void set_ignore_solid(Object *o);
static void sidekick_run_defeated(Object *o, int health);
/* located in sound/sound.cpp */
//-----------[referenced from ai/final_battle/sidekicks.cpp]---------//
void sound(int snd);
/* located in common/misc.cpp */
//-----------[referenced from ai/final_battle/sidekicks.cpp]---------//
int random(int min, int max);
================================================
FILE: ai/first_cave/first_cave.cpp
================================================
#include "../stdai.h"
#include "../weed/weed.fdh" // for ai_critter
#include "first_cave.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_BAT_BLUE, ai_bat_up_down);
ONTICK(OBJ_CRITTER_HOPPING_BLUE, ai_critter);
ONTICK(OBJ_HERMIT_GUNSMITH, ai_hermit_gunsmith);
ONTICK(OBJ_DOOR_ENEMY, ai_door_enemy);
}
/*
void c------------------------------() {}
*/
void ai_bat_up_down(Object *o)
{
switch(o->state)
{
case 0:
o->ymark = o->y;
o->timer = random(0, 50);
o->state = 1;
case 1:
if (!o->timer--)
{
o->state = 2;
o->yinertia = 0x300;
}
break;
case 2:
{
if (o->y >= o->ymark)
o->yinertia -= 0x10;
else
o->yinertia += 0x10;
LIMITY(0x300);
}
break;
}
FACEPLAYER;
ANIMATE(1, 2, 4);
}
/*
void c------------------------------() {}
*/
void ai_hermit_gunsmith(Object *o)
{
if (o->state == 0)
{
o->SnapToGround();
o->state = 1;
}
if (o->dir == RIGHT)
{
ai_zzzz_spawner(o);
}
else
{
o->frame = 0;
randblink(o, 1, 8);
}
}
void ai_door_enemy(Object *o)
{
enum { INIT = 0, WAIT, OPENEYE, CLOSEEYE };
switch(o->state)
{
case 0:
o->state = WAIT;
case WAIT:
{
o->frame = 0;
if (pdistlx(0x8000) && pdistly(0x8000))
{
o->animtimer = 0;
o->state = OPENEYE;
}
}
break;
case OPENEYE:
{
if (++o->animtimer > 2)
{
o->animtimer = 0;
o->frame++;
}
if (o->frame > 2)
{
o->frame = 2;
if (!pdistlx(0x8000) || !pdistly(0x8000))
{
o->state = CLOSEEYE;
o->animtimer = 0;
}
}
}
break;
case CLOSEEYE:
{
if (++o->animtimer > 2)
{
o->animtimer = 0;
if (--o->frame <= 0)
{
o->frame = 0;
o->state = WAIT;
}
}
}
break;
}
}
================================================
FILE: ai/first_cave/first_cave.fdh
================================================
//hash:3c4c85d2
//automatically generated by Makegen
/* located in ai/ai.cpp */
//-----------[referenced from ai/first_cave/first_cave.cpp]----------//
void randblink(Object *o, int blinkframe, int blinktime, int prob);
/* located in ai/first_cave/first_cave.cpp */
//-----------[referenced from ai/first_cave/first_cave.cpp]----------//
void ai_bat_up_down(Object *o);
void ai_hermit_gunsmith(Object *o);
void ai_door_enemy(Object *o);
/* located in ai/sand/puppy.cpp */
//-----------[referenced from ai/first_cave/first_cave.cpp]----------//
void ai_zzzz_spawner(Object *o);
/* located in common/misc.cpp */
//-----------[referenced from ai/first_cave/first_cave.cpp]----------//
int random(int min, int max);
================================================
FILE: ai/hell/ballos_misc.cpp
================================================
#include "../stdai.h"
#include "ballos_misc.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_BALLOS_SKULL, ai_ballos_skull);
ONTICK(OBJ_BALLOS_SPIKES, ai_ballos_spikes);
ONTICK(OBJ_GREEN_DEVIL, ai_green_devil);
ONTICK(OBJ_GREEN_DEVIL_SPAWNER, ai_green_devil_spawner);
ONTICK(OBJ_BUTE_SWORD_RED, ai_bute_sword_red);
ONTICK(OBJ_BUTE_ARCHER_RED, ai_bute_archer_red);
ONTICK(OBJ_WALL_COLLAPSER, ai_wall_collapser);
}
/*
void c------------------------------() {}
*/
void ai_ballos_skull(Object *o)
{
ANIMATE(8, 0, 3);
switch(o->state)
{
case 0:
{
o->state = 100;
o->frame = random(0, 16) & 3;
}
case 100:
{
o->yinertia += 0x40;
LIMITY(0x700);
if (o->timer++ & 2)
{
(SmokePuff(o->x, o->y))->PushBehind(o);
}
if (o->y > 0x10000)
{
o->flags &= ~FLAG_IGNORE_SOLID;
if (o->blockd)
{
o->yinertia = -0x200;
o->state = 110;
o->flags |= FLAG_IGNORE_SOLID;
quake(10, SND_BLOCK_DESTROY);
for(int i=0;i<4;i++)
{
Object *s = SmokePuff(o->x + random(-12<y + 0x2000);
s->xinertia = random(-0x155, 0x155);
s->yinertia = random(-0x600, 0);
s->PushBehind(o);
}
}
}
}
break;
case 110:
{
o->yinertia += 0x40;
if (o->Top() >= (map.ysize * TILE_H) << CSF)
{
o->Delete();
}
}
break;
}
}
void ai_ballos_spikes(Object *o)
{
switch(o->state)
{
case 0:
{
if (++o->timer < 128)
{
o->y -= 0x80;
o->frame = (o->timer & 2) ? 0 : 1;
}
else
{
o->state = 1;
o->damage = 2;
}
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_green_devil_spawner(Object *o)
{
switch(o->state)
{
case 0:
{
o->timer = random(0, 40);
o->state = 1;
}
case 1:
{
if (--o->timer < 0)
{
Object *dv = CreateObject(o->x, o->y, OBJ_GREEN_DEVIL, 0, 0, o->dir);
dv->xinertia = random(-16<state = 0;
}
}
break;
}
}
void ai_green_devil(Object *o)
{
switch(o->state)
{
case 0:
{
o->flags |= FLAG_SHOOTABLE;
o->ymark = o->y;
o->yinertia = random(-5<damage = 3;
o->state = 1;
}
case 1:
{
ANIMATE(2, 0, 1);
o->yinertia += (o->y < o->ymark) ? 0x80 : -0x80;
XACCEL(0x20);
LIMITX(0x400);
if (o->dir == LEFT)
{
if (o->x < -o->Width())
o->Delete();
}
else
{
if (o->x > ((map.xsize * TILE_W) << CSF) + o->Width())
o->Delete();
}
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_bute_sword_red(Object *o)
{
switch(o->state)
{
case 0:
{
o->state = 1;
o->sprite = SPR_BUTE_SWORD_RED_FALLING;
o->MoveAtDir(o->dir, 0x600);
o->dir = 0;
}
case 1:
{
ANIMATE(2, 0, 3);
if (++o->timer == 8)
o->flags &= ~FLAG_IGNORE_SOLID;
if (o->timer >= 16)
{
o->state = 10;
o->sprite = SPR_BUTE_SWORD_RED;
o->frame = 0;
o->flags |= FLAG_SHOOTABLE;
o->damage = 5;
}
}
break;
case 10:
{
ANIMATE(1, 0, 1);
FACEPLAYER;
// when player is below them, they come towards him,
// when player is above, they sweep away.
if (player->CenterY() > (o->y + (24 << CSF)))
{
XACCEL(0x10);
}
else
{
XACCEL(-0x10);
}
o->yinertia += (o->y <= player->y) ? 0x10 : -0x10;
if ((o->blockl && o->xinertia < 0) || \
(o->blockr && o->xinertia > 0))
{
o->xinertia = -o->xinertia;
}
if ((o->blocku && o->yinertia <= 0) || \
(o->blockd && o->yinertia >= 0))
{
o->yinertia = -o->yinertia;
}
LIMITX(0x5ff);
LIMITY(0x5ff);
}
break;
}
}
void ai_bute_archer_red(Object *o)
{
//DebugCrosshair(o->x, o->y, 0, 255, 255);
switch(o->state)
{
case 0:
{
o->state = 1;
o->xmark = o->x;
o->ymark = o->y;
if (o->dir == LEFT)
o->xmark -= (128<xmark += (128<xinertia = random(-0x400, 0x400);
o->yinertia = random(-0x400, 0x400);
}
case 1: // come on screen
{
ANIMATE(1, 0, 1);
if ((o->dir == LEFT && o->x < o->xmark) || \
(o->dir == RIGHT && o->x > o->xmark))
{
o->state = 20;
}
}
break;
case 20: // aiming
{
o->state = 21;
o->timer = random(0, 150);
o->frame = 2;
o->animtimer = 0;
}
case 21:
{
ANIMATE(2, 2, 3);
if (++o->timer > 300 || \
(pdistlx(112<state = 30;
}
}
break;
case 30: // flashing to fire
{
o->state = 31;
o->timer = 0;
o->animtimer = 0;
o->frame = 3;
}
case 31:
{
ANIMATE(1, 3, 4);
if (++o->timer > 30)
{
o->state = 40;
o->frame = 5;
Object *arrow = CreateObject(o->x, o->y, OBJ_BUTE_ARROW);
arrow->dir = o->dir;
arrow->xinertia = (o->dir == RIGHT) ? 0x800 : -0x800;
}
}
break;
case 40: // fired
{
o->state = 41;
o->timer = 0;
o->animtimer = 0;
}
case 41:
{
ANIMATE(2, 5, 6);
if (++o->timer > 40)
{
o->state = 50;
o->timer = 0;
o->xinertia = 0;
o->yinertia = 0;
}
}
break;
case 50: // retreat offscreen
{
ANIMATE(1, 0, 1);
XACCEL(-0x20);
if (o->Right() < 0 || o->Left() > ((map.xsize * TILE_W) << CSF))
o->Delete();
}
break;
}
// sinusoidal hover around set point
if (o->state != 50)
{
o->xinertia += (o->x < o->xmark) ? 0x2A : -0x2A;
o->yinertia += (o->y < o->ymark) ? 0x2A : -0x2A;
LIMITX(0x400);
LIMITY(0x400);
}
}
/*
void c------------------------------() {}
*/
// This object is responsible for collapsing the walls in the final best-ending sequence.
// All the original object does is collapse one tile further every 101 frames.
// However, since it's triggered at the beginning of the cinematic and then is let to run
// through almost the entire thing it needs to be sync'd really-really perfect with a
// number of other systems; the textboxes, etc.
//
// I spent several hours trying to get my events to run in perfect frame-by-frame
// exactness with the original engine, and found several things that were slightly off.
// However, I've decided that even if I got it absolutely perfect, it's too liable to
// get broken by some minor innocent change in the future, and requires too much of
// the engine to be tuned just so.
//
// So, I've added some event-based triggers to the object, that are NOT technically supposed
// to be there. These will make extra sure that nothing embarrassing happens during this great
// finale, such as the walls being one tile too far at one point, or even worse, having
// them collapse onto Balrog before he makes it to the exit. Because there are no triggers
// in the script and I can't change the script, I had to do a bit of sneaky spying on program
// state to implement them.
void ai_wall_collapser(Object *o)
{
int y;
switch(o->state)
{
case 0:
{
o->invisible = true;
o->timer = 0;
o->state = 1;
}
break;
case 10: // trigger
{
if (++o->timer > 100)
{
o->timer2++;
o->timer = 0;
int xa = (o->x >> CSF) / TILE_W;
int ya = (o->y >> CSF) / TILE_H;
for(y=0;y<20;y++)
{
// pushing the smoke behind all objects prevents it from covering
// up the NPC's on the collapse just before takeoff.
map_ChangeTileWithSmoke(xa, ya+y, 109, 4, false, lowestobject);
}
sound(SND_BLOCK_DESTROY);
quake(20);
if (o->dir == LEFT) o->x -= (TILE_W << CSF);
else o->x += (TILE_W << CSF);
// reached the solid tile in the center of the throne.
// it isn't supposed to cover this tile until after Curly
// says we're gonna get crushed.
if (o->timer2 == 6)
o->state = 20;
// balrog is about to take off/rescue you.
if (o->timer2 == 9)
o->state = 30;
}
}
break;
// "gonna get crushed" event
case 20:
{
// wait for text to come up
if (textbox.IsVisible())
o->state = 21;
}
break;
case 21:
{
// wait for text to dismiss, then tile immediately collapses
if (!textbox.IsVisible())
{
o->state = 10;
o->timer = 1000;
}
}
break;
// balrog is about to take off. the video I took shows that
// the walls are supposed to collapse into your space on the
// exact same frame that he breaks the first ceiling tile.
case 30:
{
o->linkedobject = Objects::FindByType(OBJ_BALROG_DROP_IN);
if (o->linkedobject)
o->state = 31;
}
break;
case 31:
{
//debug("%x", o->linkedobject->y);
if (o->linkedobject && o->linkedobject->y <= 0x45800)
{
o->state = 10;
o->timer = 1000;
}
}
break;
}
}
================================================
FILE: ai/hell/ballos_misc.fdh
================================================
//hash:5423cebb
//automatically generated by Makegen
/* located in game.cpp */
//--------------[referenced from ai/hell/ballos_misc.cpp]------------//
void quake(int quaketime, int snd);
/* located in ObjManager.cpp */
//--------------[referenced from ai/hell/ballos_misc.cpp]------------//
Object *CreateObject(int x, int y, int type);
/* located in map.cpp */
//--------------[referenced from ai/hell/ballos_misc.cpp]------------//
void map_ChangeTileWithSmoke(int x, int y, int newtile, int nclouds, bool boomflash, Object *push_behind);
/* located in ai/hell/ballos_misc.cpp */
//--------------[referenced from ai/hell/ballos_misc.cpp]------------//
void ai_ballos_skull(Object *o);
void ai_ballos_spikes(Object *o);
void ai_green_devil_spawner(Object *o);
void ai_green_devil(Object *o);
void ai_bute_sword_red(Object *o);
void ai_bute_archer_red(Object *o);
void ai_wall_collapser(Object *o);
/* located in ai/sym/smoke.cpp */
//--------------[referenced from ai/hell/ballos_misc.cpp]------------//
Object *SmokePuff(int x, int y);
/* located in sound/sound.cpp */
//--------------[referenced from ai/hell/ballos_misc.cpp]------------//
void sound(int snd);
/* located in common/misc.cpp */
//--------------[referenced from ai/hell/ballos_misc.cpp]------------//
int random(int min, int max);
================================================
FILE: ai/hell/ballos_priest.cpp
================================================
#include "../stdai.h"
#include "ballos_priest.fdh"
enum STATES
{
BP_FIGHTING_STANCE = 100, // show fighting stance, then prepare to fly lr
BP_PREPARE_FLY_LR = 110, // duck a moment, then fly horizontally at player
BP_PREPARE_FLY_UD = 120, // duck a moment, then fly vertically at player
BP_FLY_LR = 130, // flying horizontally
BP_FLY_UP = 140, // flying up
BP_FLY_DOWN = 150, // flying down
BP_HIT_WALL = 160, // hit wall while flying horizontally
BP_HIT_CEILING = 170, // hit ceiling while flying up
BP_HIT_FLOOR = 180, // hit floor while flying down
BP_RETURN_TO_GROUND = 190, // faces screen and floats down to ground
BP_LIGHTNING_STRIKE = 200, // lightning attack
BP_DEFEATED = 1000 // defeated (script-triggered)
};
#define DMG_NORMAL 3 // normal damage for touching him
#define DMG_RUSH 10 // damage when he is rushing/flying at you
#define RUSH_SPEED 0x800 // how fast he flies
#define RUSH_DIST (16<timer3);
/*if (o->state < 1000)
{
FindObjectByID2(500)->Delete();
StartScript(900);
return;
}*/
run_intro(o);
run_defeated(o);
run_flight(o);
run_lightning(o);
switch(o->state)
{
// show "ninja" stance for "timer" ticks,
// then prepare to fly horizontally
case BP_FIGHTING_STANCE:
{
o->frame = 1;
o->animtimer = 0;
o->state++;
o->damage = DMG_NORMAL;
o->savedhp = o->hp;
}
case BP_FIGHTING_STANCE+1:
{
ANIMATE(10, 1, 2);
FACEPLAYER;
if (--o->timer < 0 || (o->savedhp - o->hp) > 50)
{
if (++o->timer3 > 4)
{
o->state = BP_LIGHTNING_STRIKE;
o->timer3 = 0;
}
else
{
o->state = BP_PREPARE_FLY_LR;
o->timer2 = 0;
}
}
}
break;
// prepare for flight attack
case BP_PREPARE_FLY_LR:
case BP_PREPARE_FLY_UD:
{
o->timer2++;
o->state++;
o->timer = 0;
o->frame = 3; // fists in
o->damage = DMG_NORMAL;
// Fly/UD faces player only once, at start
FACEPLAYER;
}
case BP_PREPARE_FLY_LR+1:
{
FACEPLAYER;
}
case BP_PREPARE_FLY_UD+1:
{
// braking, if we came here out of another fly state
o->xinertia *= 8; o->xinertia /= 9;
o->yinertia *= 8; o->yinertia /= 9;
if (++o->timer > 20)
{
sound(SND_FUNNY_EXPLODE);
if (o->state == BP_PREPARE_FLY_LR+1)
{
o->state = BP_FLY_LR; // flying left/right
}
else if (player->y < (o->y + (12 << CSF)))
{
o->state = BP_FLY_UP; // flying up
}
else
{
o->state = BP_FLY_DOWN; // flying down
}
}
}
break;
}
// his bounding box is in a slightly different place on L/R frames
if (o->dirparam != o->dir)
{
sprites[o->sprite].bbox = sprites[o->sprite].frame[0].dir[o->dir].pf_bbox;
o->dirparam = o->dir;
}
}
/*
void c------------------------------() {}
*/
// handles his "looping" flight/rush attacks
static void run_flight(Object *o)
{
switch(o->state)
{
// flying left or right
case BP_FLY_LR:
{
o->state++;
o->animtimer = 0;
o->frame = 6; // flying horizontally
o->yinertia = 0;
o->damage = DMG_RUSH;
FACEPLAYER;
XMOVE(RUSH_SPEED);
}
case BP_FLY_LR+1:
{
ANIMATE(1, 6, 7);
// smacked into wall?
if ((o->blockl && o->dir == LEFT) || \
(o->blockr && o->dir == RIGHT))
{
o->xinertia = 0;
o->state = BP_HIT_WALL;
o->damage = DMG_NORMAL;
o->timer = 0;
megaquake(10);
}
// reached player?
// this has to be AFTER smacked-into-wall check for proper behavior
// if player stands in spikes at far left/right of arena.
if (pdistlx(RUSH_DIST))
o->state = BP_PREPARE_FLY_UD;
}
break;
// smacked into wall while flying L/R
case BP_HIT_WALL:
{
o->frame = 6;
if (++o->timer > 30)
{
if (o->timer2 <= 3)
o->state = BP_PREPARE_FLY_LR;
else
o->state = BP_RETURN_TO_GROUND;
}
}
break;
// flying up
case BP_FLY_UP:
{
o->state++;
o->timer = 0;
o->animtimer = 0;
o->frame = 8; // vertical flight
o->dir = LEFT; // up-facing frame
o->yinertia = -RUSH_SPEED;
o->xinertia = 0;
o->damage = DMG_RUSH;
}
case BP_FLY_UP+1:
{
ANIMATE(1, 8, 9);
// hit ceiling? (to make this happen, break his loop and jump ABOVE him
// while he is in the air, at the part where he would normally be
// coming back down at you).
if (o->blocku)
{
o->state = BP_HIT_CEILING;
o->damage = DMG_NORMAL;
o->timer = 0;
SmokeXY(o->CenterX(), o->Top(), 8);
megaquake(10);
spawn_bones(o, UP);
}
// reached player? (this check here isn't exactly the same as pdistly;
// it's important that it checks the player's top and not his center).
if ((abs(player->y - o->y) < RUSH_DIST) && o->timer2 < 4)
o->state = BP_PREPARE_FLY_LR;
}
break;
case BP_HIT_CEILING: // hit ceiling
{
o->frame = 8;
if (++o->timer > 30)
{
if (o->timer2 <= 3)
o->state = BP_PREPARE_FLY_LR;
else
o->state = BP_RETURN_TO_GROUND;
}
}
break;
// flying down
case BP_FLY_DOWN:
{
o->state++;
o->timer = 0;
o->animtimer = 0;
o->frame = 8; // vertical flight
o->dir = RIGHT; // down-facing frame
o->yinertia = RUSH_SPEED;
o->xinertia = 0;
o->damage = DMG_RUSH;
}
case BP_FLY_DOWN+1:
{
ANIMATE(1, 8, 9);
if (o->blockd)
{
o->state = BP_HIT_FLOOR;
o->damage = DMG_NORMAL;
o->timer = 0;
SmokeXY(o->CenterX(), o->Bottom(), 8);
megaquake(10);
spawn_bones(o, DOWN);
FACEPLAYER;
}
if (pdistly(RUSH_DIST) && o->timer2 < 4)
o->state = BP_PREPARE_FLY_LR;
}
break;
case BP_HIT_FLOOR: // hit floor
{
o->frame = 3;
if (++o->timer > 30)
{
o->state = BP_FIGHTING_STANCE;
o->timer = 120;
}
}
break;
// come back to ground while facing head on
case BP_RETURN_TO_GROUND:
{
o->frame = 4; // face screen frame
o->dir = LEFT; // non-flashing version
o->state++;
}
case BP_RETURN_TO_GROUND+1:
{
ANIMATE(1, 4, 5);
o->yinertia += 0x40;
LIMITY(0x5ff);
if (o->blockd && o->yinertia >= 0)
{
o->state++;
o->timer = 0;
o->frame = 3; // landed
FACEPLAYER;
}
}
break;
case BP_RETURN_TO_GROUND+2:
{
o->xinertia *= 3;
o->xinertia /= 4;
if (++o->timer > 10)
{
o->state = BP_FIGHTING_STANCE;
o->timer = 140;
}
}
break;
}
}
// creates the two bone spawners which appear when he crashes into the floor or ceiling.
// pass UP if he has hit the ceiling, DOWN if he has hit the floor.
static void spawn_bones(Object *o, int dir)
{
int y;
if (dir == UP)
y = (o->y - (12 << CSF));
else
y = (o->y + (12 << CSF));
CreateObject(o->x - (12<dir = LEFT;
CreateObject(o->x + (12<dir = RIGHT;
}
/*
void c------------------------------() {}
*/
// his lightning-strike attack
static void run_lightning(Object *o)
{
switch(o->state)
{
// lightning strikes (targeting player)
case BP_LIGHTNING_STRIKE:
{
o->xmark = player->x;
o->yinertia = -0x600;
o->timer = 0;
o->timer2 = 0;
o->animtimer = 0;
o->frame = 4; // facing screen
o->dir = LEFT; // not flashing
o->state++;
}
case BP_LIGHTNING_STRIKE+1:
{
ANIMATE(1, 4, 5);
o->xinertia += (o->x < o->xmark) ? 0x40 : -0x40;
o->yinertia += (o->y < FLOAT_Y) ? 0x40 : -0x40;
LIMITX(0x400);
LIMITY(0x400);
// run firing
if (++o->timer > 200)
{
int pos = (o->timer % 40);
if (pos == 1)
{
// spawn lightning target
CreateObject(player->CenterX(), LIGHTNING_Y, OBJ_BALLOS_TARGET)->dir = LEFT;
o->dir = RIGHT; // switch to flashing frames
o->animtimer = 0;
// after 8 attacks, switch to even-spaced strikes
if (++o->timer2 >= 8)
{
o->xinertia = 0;
o->yinertia = 0;
o->dir = RIGHT; // flashing
o->frame = 5; // flash red then white during screen flash
o->animtimer = 1; // desync animation from screen flashes so it's visible
o->state++;
o->timer = 0;
o->timer2 = 0;
}
}
else if (pos == 20)
{
o->dir = LEFT; // stop flashing
}
}
}
break;
// lightning strikes (evenly-spaced everywhere)
case BP_LIGHTNING_STRIKE+2:
{
ANIMATE(1, 4, 5);
o->timer++;
if (o->timer == 40)
flashscreen.Start();
if (o->timer > 50)
{
if ((o->timer % 10) == 1)
{
CreateObject((o->timer2 * TILE_W) << CSF, \
LIGHTNING_Y, OBJ_BALLOS_TARGET)->dir = LEFT;
o->timer2 += 4;
if (o->timer2 >= 40)
o->state = BP_RETURN_TO_GROUND;
}
}
}
break;
}
}
/*
void c------------------------------() {}
*/
// intro cinematic sequence
static void run_intro(Object *o)
{
switch(o->state)
{
// idle/talking to player
case 0:
{
// setup
o->y -= (6<dir = LEFT;
o->damage = 0;
// ensure copy pfbox first time
o->dirparam = -1;
// closed eyes/mouth
o->linkedobject = CreateObject(o->x, o->y - (16 << CSF), OBJ_BALLOS_SMILE);
o->state = 1;
}
break;
// fight begin
// he smiles, then enters base attack state
case 10:
{
o->timer++;
// animate smile/open eyes
if (o->timer > 50)
{
Object *smile = o->linkedobject;
if (smile)
{
if (++smile->animtimer > 4)
{
smile->animtimer = 0;
smile->frame++;
if (smile->frame > 2)
smile->Delete();
}
}
if (o->timer > 100)
{
o->state = BP_FIGHTING_STANCE;
o->timer = 150;
o->flags |= FLAG_SHOOTABLE;
o->flags &= ~FLAG_INVULNERABLE;
}
}
}
break;
}
}
// defeat sequence
// he flies away, then the script triggers the next form
static void run_defeated(Object *o)
{
switch(o->state)
{
// defeated (script triggered; constant value 1000)
case BP_DEFEATED:
{
o->state++;
o->timer = 0;
o->frame = 10;
o->flags &= ~FLAG_SHOOTABLE;
effect(o->CenterX(), o->CenterY(), EFFECT_BOOMFLASH);
SmokeClouds(o, 16, 16, 16);
sound(SND_BIG_CRASH);
o->xmark = o->x;
o->xinertia = 0;
}
case BP_DEFEATED+1: // fall to ground, shaking
{
o->yinertia += 0x20;
LIMITY(0x5ff);
o->x = o->xmark;
if (++o->timer & 2) o->x += (1 << CSF);
else o->x -= (1 << CSF);
if (o->blockd && o->yinertia >= 0)
{
if (++o->timer > 150)
{
o->state++;
o->timer = 0;
o->frame = 3;
FACEPLAYER;
}
}
}
break;
case BP_DEFEATED+2: // prepare to jump
{
if (++o->timer > 30)
{
o->yinertia = -0xA00;
o->state++;
o->frame = 8;
o->flags |= FLAG_IGNORE_SOLID;
}
}
break;
case BP_DEFEATED+3: // jumping
{
ANIMATE(1, 8, 9);
o->dir = LEFT; // up frame
if (o->y < 0)
{
flashscreen.Start();
sound(SND_TELEPORT);
o->xinertia = 0;
o->yinertia = 0;
o->state++;
}
}
break;
}
}
/*
void c------------------------------() {}
*/
// targeter for lightning strikes
void ai_ballos_target(Object *o)
{
switch(o->state)
{
case 0:
{
// position to shoot lightning at passed as x,y
o->xmark = o->CenterX() - ((sprites[SPR_LIGHTNING].w / 2) << CSF);
o->ymark = o->CenterY();
// adjust our Y coordinate to match player's
o->y = player->CenterY();
sound(SND_CHARGE_GUN);
o->state = 1;
}
case 1:
{
ANIMATE(1, 0, 1);
o->timer++;
if (o->timer == 20 && o->dir == LEFT)
{ // lightning attack
// setting lightning dir=left: tells it do not flash screen
CreateObject(o->xmark, o->ymark, OBJ_LIGHTNING)->dir = LEFT;
}
if (o->timer > 40)
o->Delete();
}
break;
}
}
// white sparky thing that moves along floor throwing out bones,
// spawned he hits the ground.
// similar to the red smoke-spawning ones from Undead Core.
void ai_ballos_bone_spawner(Object *o)
{
switch(o->state)
{
case 0:
{
sound(SND_MISSILE_HIT);
o->state = 1;
XMOVE(0x400);
}
case 1:
{
ANIMATE(1, 0, 2);
o->timer++;
if ((o->timer % 6) == 1)
{
int xi = (random(4, 16) << CSF) / 8;
if (o->dir == LEFT)
xi = -xi;
CreateObject(o->x, o->y, OBJ_BALLOS_BONE, xi, -0x400);
sound(SND_BLOCK_DESTROY);
}
if ((o->blockl && o->xinertia < 0) || \
(o->blockr && o->xinertia > 0))
{
o->Delete();
}
}
break;
}
}
// bones emitted by bone spawner
void ai_ballos_bone(Object *o)
{
ANIMATE(3, 0, 2);
if (o->blockd && o->yinertia >= 0)
{
if (o->state == 0)
{
o->yinertia = -0x200;
o->state = 1;
}
else
{
effect(o->CenterX(), o->CenterY(), EFFECT_FISHY);
o->Delete();
}
}
o->yinertia += 0x40;
LIMITY(0x5ff);
}
================================================
FILE: ai/hell/ballos_priest.fdh
================================================
//hash:23301a33
//automatically generated by Makegen
/* located in game.cpp */
//-------------[referenced from ai/hell/ballos_priest.cpp]-----------//
void megaquake(int quaketime, int snd);
/* located in ObjManager.cpp */
//-------------[referenced from ai/hell/ballos_priest.cpp]-----------//
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//-------------[referenced from ai/hell/ballos_priest.cpp]-----------//
Caret *effect(int x, int y, int effectno);
/* located in ai/hell/ballos_priest.cpp */
//-------------[referenced from ai/hell/ballos_priest.cpp]-----------//
void ai_ballos_priest(Object *o);
static void run_flight(Object *o);
static void spawn_bones(Object *o, int dir);
static void run_lightning(Object *o);
static void run_intro(Object *o);
static void run_defeated(Object *o);
void ai_ballos_target(Object *o);
void ai_ballos_bone_spawner(Object *o);
void ai_ballos_bone(Object *o);
/* located in ai/sym/smoke.cpp */
//-------------[referenced from ai/hell/ballos_priest.cpp]-----------//
void SmokeXY(int x, int y, int nclouds, int rangex, int rangey, Object *push_behind);
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in sound/sound.cpp */
//-------------[referenced from ai/hell/ballos_priest.cpp]-----------//
void sound(int snd);
/* located in common/misc.cpp */
//-------------[referenced from ai/hell/ballos_priest.cpp]-----------//
int random(int min, int max);
================================================
FILE: ai/hell/hell.cpp
================================================
#include "../stdai.h"
#include "hell.fdh"
#define BUTE_HP 4
#define MESA_HP 64
#define DELEET_HP 32
#define STATUE_HP 100
INITFUNC(AIRoutines)
{
ONTICK(OBJ_BUTE_FLYING, ai_bute_flying);
ONTICK(OBJ_BUTE_DYING, ai_bute_dying);
ONTICK(OBJ_BUTE_SPAWNER, ai_bute_spawner);
ONTICK(OBJ_BUTE_FALLING, ai_bute_falling);
ONTICK(OBJ_BUTE_SWORD, ai_bute_sword);
ONTICK(OBJ_BUTE_ARCHER, ai_bute_archer);
ONTICK(OBJ_BUTE_ARROW, ai_bute_arrow);
ONTICK(OBJ_MESA, ai_mesa);
ONTICK(OBJ_MESA_BLOCK, ai_mesa_block);
ONTICK(OBJ_MESA_DYING, ai_bute_dying);
ONTICK(OBJ_DELEET, ai_deleet);
ONTICK(OBJ_ROLLING, ai_rolling);
ONTICK(OBJ_STATUE, ai_statue);
ONTICK(OBJ_STATUE_BASE, ai_statue_base);
ONTICK(OBJ_PUPPY_GHOST, ai_puppy_ghost);
}
/*
void c------------------------------() {}
*/
void ai_bute_flying(Object *o)
{
//AIDEBUG;
if (run_bute_defeated(o, BUTE_HP))
return;
switch(o->state)
{
case 0:
{
o->invisible = true;
o->state = 1;
}
case 1:
{
if (o->dir == LEFT)
{
if (player->x > (o->x - (288<x < (o->x - (272<state = 10;
}
}
else
{
if (player->x < (o->x + (288<x > (o->x + (272<state = 10;
}
}
}
break;
case 10:
{
o->state = 11;
o->invisible = false;
o->flags |= FLAG_SHOOTABLE;
o->damage = 5;
}
case 11:
{
FACEPLAYER;
ANIMATE(1, 0, 1);
XACCEL(0x10);
o->yinertia += (o->y > player->y) ? -0x10 : 0x10;
LIMITX(0x5ff);
LIMITY(0x5ff);
if ((o->blockl && o->xinertia < 0) || \
(o->blockr && o->xinertia > 0))
{
o->xinertia = -o->xinertia;
}
if ((o->blockd && o->yinertia > 0) || \
(o->blocku && o->yinertia < 0))
{
o->yinertia = -o->yinertia;
}
}
break;
}
}
/*
void c------------------------------() {}
*/
// Butes that come down from ceiling
void ai_bute_spawner(Object *o)
{
static const int NUM_BUTES = 8;
switch(o->state)
{
case 10: // script trigger (dir set by script at same time)
{
o->state = 11;
o->timer = 0;
}
case 11:
{
o->timer++;
if ((o->timer % 50) == 1)
{
CreateObject(o->x, o->y, OBJ_BUTE_FALLING, 0, 0, o->dir);
if (o->timer == ((NUM_BUTES - 1) * 50) + 1)
o->state = 0;
}
}
break;
}
}
void ai_bute_falling(Object *o)
{
ANIMATE(3, 0, 3);
switch(o->state)
{
case 0:
{
o->state = 1;
o->MoveAtDir(o->dir, 0x600);
o->flags |= FLAG_IGNORE_SOLID;
}
case 1:
{
o->timer++;
if (o->timer == 16)
{
o->flags &= ~FLAG_IGNORE_SOLID;
}
else if (o->timer > 16 && o->block[o->dir])
{
o->state = 10;
}
if (o->timer > 20)
{
switch(o->dir)
{
case LEFT:
if (o->CenterX() <= player->CenterX() + (32<state = 10;
break;
case RIGHT:
if (o->CenterX() >= player->CenterX() - (32<state = 10;
break;
case UP:
if (o->CenterY() <= player->CenterY() + (32<state = 10;
break;
case DOWN:
if (o->CenterY() >= player->CenterY() - (32<state = 10;
break;
}
}
}
break;
case 10:
{
o->y += (4 << CSF);
o->ChangeType(OBJ_BUTE_FLYING);
o->state = 10; // trigger flight immediately
o->frame = 0;
o->xinertia = 0;
o->yinertia = 0;
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_bute_sword(Object *o)
{
if (run_bute_defeated(o, BUTE_HP))
return;
switch(o->state)
{
case 0:
{
o->flags |= (FLAG_SHOOTABLE | FLAG_INVULNERABLE);
o->nxflags |= NXFLAG_FOLLOW_SLOPE;
o->damage = 0;
o->state = 1;
}
case 1: // lying in wait
{
FACEPLAYER;
if (pdistlx(128<state = 10;
}
}
break;
// wait a moment, then start running at player
case 10:
{
o->flags |= FLAG_INVULNERABLE;
o->damage = 0;
o->frame = 0;
o->state = 11;
o->timer = 0;
}
case 11:
{
if (++o->timer > 30)
{
o->state = 20;
o->timer = 0;
}
}
break;
// run at player and jump
case 20:
{
o->flags &= ~FLAG_INVULNERABLE;
o->state = 21;
FACEPLAYER;
}
case 21:
{
ANIMATE(3, 0, 1);
XMOVE(0x400);
if (pdistlx(40<xinertia /= 2;
o->yinertia = -0x300;
o->state = 30;
o->frame = 2; // sword back, jumping
sound(SND_ENEMY_JUMP);
}
else if (++o->timer > 50)
{ // timeout, p got away
o->state = 10;
o->xinertia = 0;
}
}
break;
// jumping up
case 30:
{
if (o->yinertia > -0x80)
{
o->frame = 3; // sword swipe fwd
o->damage = 9;
o->state = 31;
o->timer = 0;
}
}
break;
// swiping sword, in air
case 31:
{
if (++o->timer > 2)
{
o->timer = 0;
o->frame = 4; // sword down, in front
}
if (o->blockd && o->yinertia > 0)
{
o->xinertia = 0;
o->damage = 3;
o->state = 32;
o->timer = 0;
}
}
break;
case 32:
{
if (++o->timer > 30)
{
o->state = 10;
o->timer = 0;
}
}
break;
}
o->yinertia += 0x20;
LIMITY(0x5ff);
}
void ai_bute_archer(Object *o)
{
if (run_bute_defeated(o, BUTE_HP))
return;
switch(o->state)
{
case 0: // waiting for player (when haven't seen him yet)
{
if ((o->dir == LEFT && player->CenterX() < o->CenterX()) || \
(o->dir == RIGHT && player->CenterX() > o->CenterX()))
{
if (pdistlx(320<state = 10;
}
}
}
break;
// aiming--can track player here for a brief period
case 10:
{
FACEPLAYER;
if (!pdistlx(224<y <= (o->y - (8<frame = 4; // shooting up
o->timer2 = 1;
}
else
{
o->frame = 1; // shooting straight
o->timer2 = 0;
}
if (++o->timer > 10)
{
o->state = 20;
o->timer = 0;
}
}
break;
// flashing to fire
case 20:
{
if (o->timer2 == 0)
ANIMATE(0, 1, 2)
else
ANIMATE(0, 4, 5)
if (++o->timer > 30)
o->state = 30;
}
break;
// fire
case 30:
{
o->state = 31;
o->timer = 0;
Object *arrow = CreateObject(o->CenterX(), o->CenterY(), OBJ_BUTE_ARROW);
arrow->xinertia = (o->dir == RIGHT) ? 0x600 : -0x600;
if (o->timer2 == 1) // shooting up
arrow->yinertia = -0x600;
// frame: arrow away
o->frame = (o->timer2 == 1) ? 6 : 3;
}
case 31:
{
if (++o->timer > 30)
{
o->state = 40;
o->frame = 0;
o->timer = random(50, 150);
}
}
break;
// after fire, and the "woken up" waiting-for-player state
case 40:
{
if (pdistlx(352<timer < 0)
o->state = 10; // fire again
}
else
{ // player got away, do nothing until he returns
o->timer = 150;
}
}
break;
}
}
void ai_bute_arrow(Object *o)
{
// check for hit wall/floor etc
if (o->state < 20)
{
if ((o->blockl && o->xinertia < 0) || \
(o->blockr && o->xinertia > 0) || \
(o->blocku && o->yinertia <= 0) || \
(o->blockd && o->yinertia >= 0))
{
if (!(o->flags & FLAG_IGNORE_SOLID))
o->state = 20;
}
}
switch(o->state)
{
case 0:
{
// set appropriate frame for initial direction
o->sprite = (o->xinertia < 0) ? SPR_BUTE_ARROW_LEFT : SPR_BUTE_ARROW_RIGHT;
o->frame = (o->yinertia < 0) ? 0 : 2;
o->state = 1;
}
case 1:
{
if (++o->timer == 4)
o->flags &= ~FLAG_IGNORE_SOLID;
if (o->timer > 10)
o->state = 10;
}
break;
case 10:
{
o->state = 11;
// slow down a bit (was going real fast from bow)
o->xinertia *= 3;
o->xinertia /= 4;
o->yinertia *= 3;
o->yinertia /= 4;
}
case 11:
{
o->yinertia += 0x20;
ANIMATE_FWD(10);
if (o->frame > 4) o->frame = 4;
}
break;
case 20: // hit something
{
o->state = 21;
o->timer = 0;
o->damage = 0;
o->xinertia = 0;
o->yinertia = 0;
}
case 21:
{
o->timer++;
if (o->timer > 30)
o->invisible = (o->timer & 2);
if (o->timer > 61)
o->Delete();
}
break;
}
LIMITY(0x5ff);
}
/*
void c------------------------------() {}
*/
void ai_bute_dying(Object *o)
{
switch(o->state)
{
case 0:
{
o->flags &= ~(FLAG_SHOOTABLE | FLAG_IGNORE_SOLID | FLAG_SHOW_FLOATTEXT);
o->damage = 0;
o->frame = 0;
o->animtimer = 0;
o->state = 1;
o->yinertia = -0x200;
}
case 1:
{
if (o->blockd && o->yinertia >= 0)
{
o->state = 2;
o->timer = 0;
o->frame = 1;
}
}
break;
case 2:
{
o->xinertia *= 8;
o->xinertia /= 9;
ANIMATE(3, 1, 2);
if (++o->timer > 50)
o->DealDamage(10000);
}
break;
}
o->yinertia += 0x20;
LIMITY(0x5ff);
}
static bool run_bute_defeated(Object *o, int hp)
{
if (o->hp <= (1000 - hp))
{
if (o->type == OBJ_MESA)
{
o->ChangeType(OBJ_MESA_DYING);
}
else
{
o->x -= (4 << CSF);
o->y -= (4 << CSF);
o->ChangeType(OBJ_BUTE_DYING);
sound(SND_ENEMY_SQUEAK);
XMOVE(-0x100);
}
ai_bute_dying(o);
return 1;
}
return 0;
}
/*
void c------------------------------() {}
*/
void ai_mesa(Object *o)
{
if (run_bute_defeated(o, MESA_HP))
return;
switch(o->state)
{
case 0:
{
o->y += (4<state = 1;
}
case 1:
{
ANIMATE(40, 0, 1);
FACEPLAYER;
if (pdistlx(320<timer > 50)
o->state = 10;
}
}
break;
case 10:
{
o->state = 11;
o->timer = 0;
o->frame = 2; // hand down
int x = o->x + ((o->dir == LEFT) ? (7<y + (10<linkedobject = CreateObject(x, y, OBJ_MESA_BLOCK);
o->linkedobject->linkedobject = o;
}
case 11:
{
if (++o->timer > 50)
{
o->state = 20;
o->timer = 0;
o->frame = 3; // hand up, throwing
if (o->linkedobject)
{
Object *&block = o->linkedobject;
block->y = (o->y - (4<xinertia = (o->dir == RIGHT) ? 0x400 : -0x400;
block->yinertia = -0x400;
block->state = 1;
sound(SND_EM_FIRE);
block->linkedobject = NULL;
o->linkedobject = NULL;
}
}
}
break;
case 20:
{
if (++o->timer > 20)
{ // throw again, if player still near
o->state = 1;
o->timer = 0;
}
}
break;
}
o->yinertia += 0x55;
LIMITY(0x5ff);
}
void ai_mesa_block(Object *o)
{
ANIMATE(0, 0, 1);
switch(o->state)
{
case 0: // being held
{
if (!o->linkedobject || o->linkedobject->type == OBJ_MESA_DYING)
{
o->Delete();
}
}
break;
case 1: // launched
{
if (++o->timer == 4)
o->flags &= ~FLAG_IGNORE_SOLID;
o->yinertia += 0x2A;
LIMITY(0x5ff);
if (o->blockd && o->yinertia >= 0)
{
sound(SND_BLOCK_DESTROY);
o->Delete();
}
}
break;
}
if (o->deleted)
{
SmokeClouds(o, 3, 0, 0);
effect(o->x, o->y, EFFECT_BOOMFLASH);
}
}
/*
void c------------------------------() {}
*/
void ai_deleet(Object *o)
{
// trigger counter
if (o->hp < (1000 - DELEET_HP) && o->state < 2)
{
o->state = 2;
o->timer = 0;
o->frame = 2;
o->flags |= FLAG_INVULNERABLE;
sound(SND_CHEST_OPEN);
}
switch(o->state)
{
case 0:
{
o->state = 1;
o->x += (TILE_W / 2) << CSF;
o->y += (TILE_H / 2) << CSF;
if (o->dir == LEFT)
o->y += (8<x += (8<shaketime)
o->timer2++;
else
o->timer2 = 0;
o->frame = (o->timer2 & 2) ? 1 : 0;
}
break;
case 2:
{
int counter = -1;
switch(o->timer)
{
case 0: counter = 0; break; // 5
case 50: counter = 1; break; // 4
case 100: counter = 2; break; // 3
case 150: counter = 3; break; // 2
case 200: counter = 4; break; // 1
case 250:
{
o->state = 3;
o->sprite = SPR_BBOX_PUPPET_1;
o->invisible = true;
sprites[o->sprite].bbox.x1 = -48;
sprites[o->sprite].bbox.x2 = 48;
sprites[o->sprite].bbox.y1 = -48;
sprites[o->sprite].bbox.y2 = 48;
o->damage = 12;
quake(10);
SmokeXY(o->x, o->y, 40, 48, 48);
o->flags &= ~FLAG_SHOOTABLE;
o->flags &= ~FLAG_INVULNERABLE;
if (o->dir == LEFT)
{
int x = (o->x >> CSF) / TILE_W;
int y = ((o->y >> CSF) - 8) / TILE_H;
map.tiles[x][y] = 0;
map.tiles[x][y+1] = 0;
}
else
{
int x = ((o->x >> CSF) - 8) / TILE_W;
int y = (o->y >> CSF) / TILE_H;
map.tiles[x][y] = 0;
map.tiles[x+1][y] = 0;
}
}
break;
}
if (counter != -1)
{
CreateObject(o->x, o->y - (8<frame = counter;
}
o->timer++;
}
break;
case 3:
{
// make the explosion sound and drop powerups
o->Kill();
}
break;
}
}
void ai_rolling(Object *o)
{
if (o->state == 0)
{
// exploding out of blocks (Rollings in Heavy Press area)
int mx = (o->CenterX() >> CSF) / TILE_W;
int my = (o->CenterY() >> CSF) / TILE_H;
if (map.tiles[mx][my])
map_ChangeTileWithSmoke(mx, my, 0, 8);
o->state = 1;
}
switch(o->dir)
{
case LEFT:
{
o->xinertia -= 0x40;
o->yinertia = 0;
if (o->blockl) o->dir = UP;
}
break;
case UP:
{
o->yinertia -= 0x40;
o->xinertia = 0;
if (o->blocku) o->dir = RIGHT;
}
break;
case RIGHT:
{
o->xinertia += 0x40;
o->yinertia = 0;
if (o->blockr) o->dir = DOWN;
}
break;
case DOWN:
{
o->yinertia += 0x40;
o->xinertia = 0;
if (o->blockd) o->dir = LEFT;
}
break;
}
ANIMATE(1, 0, 2);
LIMITX(0x400);
LIMITY(0x400);
}
/*
void c------------------------------() {}
*/
// I don't think it does anything, it seems to be just an invisible marker
// used to bring up the signs when you press DOWN in front of the statues.
// But unlike OBJ_NULL, it can be positioned in-between a tile boundary.
// There's also one on top of the clockroom sign on the Outer Wall.
void ai_statue_base(Object *o)
{
if (o->state == 0)
{
o->state = 1;
o->sprite = SPR_NULL;
if (o->dir == LEFT)
{
o->x += (8 << CSF);
}
else if (o->dir == RIGHT)
{
o->y += (16 << CSF);
}
}
}
// frame is passed in the ANP as if it were a dir, and all of these state numbers can
// also be set by the scripts, so they really shouldn't be messed with.
void ai_statue(Object *o)
{
switch(o->state)
{
case 0:
{
o->frame = (o->dirparam / 10);
o->state = 1;
}
break;
case 10:
{
if (game.flags[o->id1])
{ // already been destroyed
o->state = 20;
}
else
{
o->state = 11;
o->flags |= FLAG_SHOOTABLE;
}
}
case 11:
{
if (o->hp < (1000 - STATUE_HP))
{
Object *ns = CreateObject(o->x, o->y, o->type);
ns->dirparam = (o->frame + 4) * 10;
o->Kill();
}
}
break;
case 20:
{
o->frame += 4;
o->state = 1;
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_puppy_ghost(Object *o)
{
o->timer++;
switch(o->state)
{
case 10: // disappear after talking
{
o->state = 11;
o->timer = 2;
sound(SND_TELEPORT);
}
case 11:
{
o->invisible = (o->timer & 2);
if (o->timer > 50)
o->Delete();
}
break;
}
if ((o->timer % 8) == 1)
{
effect(random(o->Left(), o->Right()), o->Bottom(), EFFECT_GHOST_SPARKLE);
}
}
/*
void c------------------------------() {}
*/
================================================
FILE: ai/hell/hell.fdh
================================================
//hash:513da2f0
//automatically generated by Makegen
/* located in game.cpp */
//-----------------[referenced from ai/hell/hell.cpp]----------------//
void quake(int quaketime, int snd);
/* located in ObjManager.cpp */
//-----------------[referenced from ai/hell/hell.cpp]----------------//
Object *CreateObject(int x, int y, int type);
/* located in map.cpp */
//-----------------[referenced from ai/hell/hell.cpp]----------------//
void map_ChangeTileWithSmoke(int x, int y, int newtile, int nclouds, bool boomflash, Object *push_behind);
/* located in caret.cpp */
//-----------------[referenced from ai/hell/hell.cpp]----------------//
Caret *effect(int x, int y, int effectno);
/* located in ai/hell/hell.cpp */
//-----------------[referenced from ai/hell/hell.cpp]----------------//
void ai_bute_flying(Object *o);
void ai_bute_spawner(Object *o);
void ai_bute_falling(Object *o);
void ai_bute_sword(Object *o);
void ai_bute_archer(Object *o);
void ai_bute_arrow(Object *o);
void ai_bute_dying(Object *o);
static bool run_bute_defeated(Object *o, int hp);
void ai_mesa(Object *o);
void ai_mesa_block(Object *o);
void ai_deleet(Object *o);
void ai_rolling(Object *o);
void ai_statue_base(Object *o);
void ai_statue(Object *o);
void ai_puppy_ghost(Object *o);
/* located in ai/sym/smoke.cpp */
//-----------------[referenced from ai/hell/hell.cpp]----------------//
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
void SmokeXY(int x, int y, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in sound/sound.cpp */
//-----------------[referenced from ai/hell/hell.cpp]----------------//
void sound(int snd);
/* located in common/misc.cpp */
//-----------------[referenced from ai/hell/hell.cpp]----------------//
int random(int min, int max);
================================================
FILE: ai/last_cave/last_cave.cpp
================================================
#include "../stdai.h"
#include "../plantation/plantation.fdh" // ai_droll_shot
#include "../sym/sym.fdh" // ai_press
#include "last_cave.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_CRITTER_HOPPING_RED, ai_critter_hopping_red);
ONTICK(OBJ_LAVA_DRIP_SPAWNER, ai_lava_drip_spawner);
ONTICK(OBJ_LAVA_DRIP, ai_lava_drip);
ONTICK(OBJ_RED_BAT_SPAWNER, ai_red_bat_spawner);
ONTICK(OBJ_RED_BAT, ai_red_bat);
ONTICK(OBJ_RED_DEMON, ai_red_demon);
ONTICK(OBJ_RED_DEMON_SHOT, ai_droll_shot);
ONTICK(OBJ_PROXIMITY_PRESS_VERT, ai_proximity_press_vert);
}
/*
void c------------------------------() {}
*/
void ai_proximity_press_vert(Object *o)
{
switch(o->state)
{
case 0:
{
if (pdistlx(8<blockd)
{
o->state = 10;
o->animtimer = 0;
o->frame = 1;
}
}
break;
case 10:
{
if (o->frame < 2)
ANIMATE_FWD(2);
if (o->blockd)
{
if (o->frame >= 2) // make sure eye fully open
{
SmokeSide(o, 4, DOWN);
quake(10);
}
o->flags |= FLAG_SOLID_BRICK;
o->damage = 0;
o->state = 11;
o->frame = 0;
}
else
{
if (player->Top() > o->CenterY())
{
o->flags &= ~FLAG_SOLID_BRICK;
o->damage = 127;
}
else
{
o->flags |= FLAG_SOLID_BRICK;
o->damage = 0;
}
}
}
break;
}
if (o->state >= 5)
{
o->yinertia += 0x80;
LIMITY(0x5ff);
}
}
/*
void c------------------------------() {}
*/
void ai_critter_hopping_red(Object *o)
{
switch(o->state)
{
case 0:
{
FACEPLAYER;
o->frame = 0;
if (o->shaketime)
{
o->state = 2;
o->timer = 0;
}
else if (++o->timer >= 8)
{
if (pdistly((5 * TILE_H) << CSF))
{
if (pdistlx((6 * TILE_W) << CSF))
{
o->state = 1;
o->timer = 0;
}
else if (pdistlx((9 * TILE_W) << CSF))
{
o->frame = 1;
}
}
}
}
break;
case 1: // prepare to jump
{
if (++o->timer > 8)
{
o->state = 2;
o->frame = 2;
sound(SND_ENEMY_JUMP);
o->yinertia = -0x5ff;
o->xinertia = (o->dir == RIGHT) ? 0x200 : -0x200;
}
}
break;
case 2: // in air
{
if (o->blockd && o->yinertia > 0)
{
sound(SND_THUD);
o->xinertia = 0;
o->state = 0;
o->timer = 0;
o->frame = 1;
}
}
break;
}
o->yinertia += 0x55;
LIMITY(0x5ff);
}
/*
void c------------------------------() {}
*/
// lava drip spawner in Last Cave (hidden) and used extensively in Final Cave.
// the id1 tag sets the frequency of the drip, the id2 tag sets an amount to
// delay the first drip in order to desync a group of drips.
void ai_lava_drip_spawner(Object *o)
{
switch(o->state)
{
case 0:
{
o->sprite = SPR_LAVA_DRIP;
o->x += (4 << CSF);
o->timer = (o->id2 - o->id1);
o->state = 1;
}
case 1:
{
if (--o->timer < 0)
{
o->state = 2;
o->animtimer = 0;
o->timer2 = 0;
}
}
break;
case 2:
{
o->display_xoff = (++o->timer2 & 2) ? 0 : 1;
ANIMATE_FWD(10);
if (o->frame > 3)
{
o->frame = 0;
o->state = 1;
o->timer = o->id1;
ai_lava_drip(CreateObject(o->x, o->y, OBJ_LAVA_DRIP));
}
}
break;
}
}
void ai_lava_drip(Object *o)
{
o->frame = 4;
o->yinertia += 0x40;
LIMITY(0x5ff);
if (o->blockd || \
(++o->timer > 10 && o->CheckAttribute(&sprites[o->sprite].block_u, TA_WATER)))
{
for(int i=0;i<3;i++)
{
Caret *c = effect(o->CenterX(), o->Bottom(), EFFECT_LAVA_SPLASH);
c->xinertia = random(-0x400, 0x400);
c->yinertia = random(-0x400, 0);
}
if (o->onscreen)
sound(SND_BUBBLE);
o->Delete();
}
}
/*
void c------------------------------() {}
*/
void ai_red_bat_spawner(Object *o)
{
switch(o->state)
{
case 0:
{
o->state = 1;
o->timer = random(0, 500);
}
case 1:
{
if (--o->timer < 0)
{
Object *bat = CreateObject(o->CenterX(), \
o->CenterY() + random(-32<x -= (bat->Width() / 2);
bat->y -= (bat->Height() / 2);
bat->dir = o->dir;
o->state = 0;
}
}
}
}
void ai_red_bat(Object *o)
{
ANIMATE(1, 0, 2);
switch(o->state)
{
case 0:
{
o->state = 1;
o->ymark = o->y;
o->timer = random(0, 50);
}
case 1:
{
if (--o->timer < 0)
{
o->state = 2;
o->yinertia = 0x400;
}
else break;
}
case 2:
{
o->yinertia += (o->y < o->ymark) ? 0x10 : -0x10;
LIMITY(0x300);
XMOVE(0x100);
}
break;
}
if (o->x < 0 || o->x > (map.xsize * TILE_W) << CSF)
{
effect(o->CenterX(), o->CenterY(), EFFECT_BOOMFLASH);
o->Delete();
}
}
/*
void c------------------------------() {}
*/
void ai_red_demon(Object *o)
{
switch(o->state)
{
case 0:
{
o->xmark = o->x;
o->xinertia = 0;
o->frame = 0;
o->state = 1;
}
case 1:
{
ANIMATE(20, 0, 1);
FACEPLAYER;
}
break;
case 10: // prepare to jump
{
o->flags |= FLAG_SHOOTABLE;
o->state = 11;
o->frame = 3;
o->timer = 0;
}
case 11:
{
switch(++o->timer)
{
case 30:
case 40:
case 50:
{
o->frame = 4;
EmFireAngledShot(o, OBJ_RED_DEMON_SHOT, 0, 0x800);
sound(SND_EM_FIRE);
}
break;
case 34:
case 44:
case 54:
{
o->frame = 3;
}
break;
case 61:
{
o->state = 20;
o->timer = 0;
o->frame = 2;
}
break;
}
}
break;
case 20: // pause before jump
{
if (++o->timer > 20)
{
o->state = 21;
o->timer = 0;
o->frame = 5;
o->yinertia = -0x5ff;
o->xinertia = (o->CenterX() < player->CenterX()) ? 0x100 : -0x100;
}
}
break;
case 21: // in air
{
switch(++o->timer)
{
case 30:
case 40:
case 50:
{
o->frame = 6;
EmFireAngledShot(o, OBJ_RED_DEMON_SHOT, 0, 0x800);
sound(SND_EM_FIRE);
}
break;
case 34:
case 44:
{
o->frame = 5;
}
break;
case 54:
{
o->frame = 7;
}
break;
}
if (o->blockd && o->yinertia >= 0)
{
quake(10);
o->state = 22;
o->timer = 0;
o->frame = 2;
}
}
break;
case 22: // landed
{
o->xinertia /= 2;
if (++o->timer > 22)
{
o->state = 10;
}
}
break;
// defeated/turned to stone (set by script)
case 50:
{
o->flags &= ~FLAG_SHOOTABLE;
o->damage = 0;
if (o->blockd)
{
o->state = 51;
o->frame = 2;
game.quaketime = 10;
SmokeClouds(o, 12, 4, 4);
o->SpawnXP(19);
sound(SND_BIG_CRASH);
// needed to prevent status bars from not disappearing
game.bossbar.object = NULL;
}
}
break;
case 51:
{
o->xinertia *= 7;
o->xinertia /= 8;
o->frame = 8;
}
break;
}
if (o->state < 50)
{
FACEPLAYER;
}
o->yinertia += 0x20;
LIMITY(0x5ff);
}
/*
void c------------------------------() {}
*/
void ai_press_vert(Object *o)
{
switch(o->state)
{
case 0:
{
o->state = 1;
o->y -= (4 << CSF);
if (pdistlx((8<state = 5;
}
}
break;
case 5:
{
if (o->blockd)
{
o->state = 10;
o->animtimer = 0;
o->frame = 1;
}
}
break;
case 10:
{
ANIMATE_FWD(2);
if (o->frame > 2)
o->frame = 2;
if (player->y > o->y)
o->flags |= FLAG_SOLID_BRICK;
}
break;
}
}
================================================
FILE: ai/last_cave/last_cave.fdh
================================================
//hash:6dac387f
//automatically generated by Makegen
/* located in game.cpp */
//------------[referenced from ai/last_cave/last_cave.cpp]-----------//
void quake(int quaketime, int snd);
/* located in ObjManager.cpp */
//------------[referenced from ai/last_cave/last_cave.cpp]-----------//
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//------------[referenced from ai/last_cave/last_cave.cpp]-----------//
Caret *effect(int x, int y, int effectno);
/* located in trig.cpp */
//------------[referenced from ai/last_cave/last_cave.cpp]-----------//
void EmFireAngledShot(Object *o, int objtype, int rand_variance, int speed);
/* located in ai/last_cave/last_cave.cpp */
//------------[referenced from ai/last_cave/last_cave.cpp]-----------//
void ai_proximity_press_vert(Object *o);
void ai_critter_hopping_red(Object *o);
void ai_lava_drip_spawner(Object *o);
void ai_lava_drip(Object *o);
void ai_red_bat_spawner(Object *o);
void ai_red_bat(Object *o);
void ai_red_demon(Object *o);
void ai_press_vert(Object *o);
/* located in ai/sym/smoke.cpp */
//------------[referenced from ai/last_cave/last_cave.cpp]-----------//
void SmokeSide(Object *o, int nclouds, int dir);
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in sound/sound.cpp */
//------------[referenced from ai/last_cave/last_cave.cpp]-----------//
void sound(int snd);
/* located in common/misc.cpp */
//------------[referenced from ai/last_cave/last_cave.cpp]-----------//
int random(int min, int max);
================================================
FILE: ai/maze/balrog_boss_missiles.cpp
================================================
#include "../stdai.h"
#include "../balrog_common.h"
#include "balrog_boss_missiles.fdh"
#define STATE_CHARGE 10
#define STATE_JUMP_FIRE 20
#define STATE_PAUSE 30
#define STATE_CAUGHT_PLAYER 40
INITFUNC(AIRoutines)
{
ONTICK(OBJ_BALROG_BOSS_MISSILES, ai_balrog_boss_missiles);
ONDEATH(OBJ_BALROG_BOSS_MISSILES, ondeath_balrog_boss_missiles);
ONTICK(OBJ_BALROG_MISSILE, ai_balrog_missile);
}
/*
void c------------------------------() {}
*/
void ai_balrog_boss_missiles(Object *o)
{
// try to catch player
switch(o->state)
{
case STATE_CHARGE+1:
case STATE_JUMP_FIRE+1:
{
if (pdistlx(12<state = STATE_CAUGHT_PLAYER;
}
}
break;
}
// main state engine
switch(o->state)
{
case 0:
{
o->nxflags |= NXFLAG_FOLLOW_SLOPE;
FACEPLAYER;
o->state = 1;
o->frame = 0;
o->timer = 0;
}
case 1:
{
if (++o->timer > 30)
{
o->state = STATE_CHARGE;
o->timer2 ^= 1; // affects how we react if we miss the player
}
}
break;
// charge the player
case STATE_CHARGE:
{
o->timer = 0;
o->frame = 9;
o->animtimer = 0;
o->state++;
}
case STATE_CHARGE+1:
{
XACCEL(0x20);
walking_animation(o);
// stuck against the wall?
if ((o->dir == LEFT && o->blockl) || \
(o->dir == RIGHT && o->blockr))
{
if (++o->timer3 > 5)
o->state = STATE_JUMP_FIRE;
}
else
{
o->timer3 = 0;
}
// he behaves differently after every other time he pauses
if (o->timer2)
{
if (++o->timer > 75)
{
o->frame = 0;
o->state = STATE_PAUSE;
}
}
else
{
if (++o->timer > 24)
o->state = STATE_JUMP_FIRE;
}
}
break;
// jump and fire missiles
case STATE_JUMP_FIRE:
{
o->state++;
o->timer = 0;
o->frame = 3;
o->yinertia = -0x5ff;
}
case STATE_JUMP_FIRE+1:
{
FACEPLAYER;
// fire missiles
if (++o->timer < 30)
{
if ((o->timer % 6) == 1)
{
sound(SND_EM_FIRE);
Object *shot = SpawnObjectAtActionPoint(o, OBJ_BALROG_MISSILE);
shot->dir = o->dir;
shot->xinertia = 0x100;
}
}
// landed?
if (o->blockd && o->yinertia >= 0)
{
o->frame = 2;
o->state = STATE_PAUSE;
quake(30);
}
}
break;
// stop for a moment
case STATE_PAUSE:
{
o->xinertia *= 4;
o->xinertia /= 5;
if (o->xinertia != 0) break;
o->state = 0;
}
break;
case STATE_CAUGHT_PLAYER: // caught player
{
if (balrog_toss_player_away(o))
o->state = 0;
}
break;
}
o->yinertia += 0x20;
LIMITX(0x300);
LIMITY(0x5ff);
}
void ondeath_balrog_boss_missiles(Object *o)
{
o->xinertia = 0;
}
static void walking_animation(Object *o)
{
if (++o->animtimer > 3)
{
o->animtimer = 0;
o->frame++;
if (o->frame == 12)
{
sound(SND_THUD);
}
else if (o->frame > 12)
{
o->frame = 9;
}
}
}
/*
void c------------------------------() {}
*/
void ai_balrog_missile(Object *o)
{
if ((o->dir == RIGHT && o->blockr) || \
(o->dir == LEFT && o->blockl))
{
SmokeClouds(o, 3, 0, 0);
effect(o->CenterX(), o->CenterY(), EFFECT_BOOMFLASH);
sound(SND_MISSILE_HIT);
o->Delete();
return;
}
if (o->state == 0)
{
// recoil in oppisite direction
o->xinertia = random(-2, -1) << CSF;
if (o->dir == LEFT) o->xinertia = -o->xinertia;
o->yinertia = random(-2, 0) << CSF;
o->state = 1;
}
XACCEL(0x20);
if ((++o->timer2 % 4) == 1)
{
effect(o->CenterX() - o->xinertia, o->CenterY(), EFFECT_SMOKETRAIL_SLOW);
}
// heat-seeking at start, then level out straight
if (o->timer2 < 50)
{
if (o->y < player->y)
o->yinertia += 0x20;
else
o->yinertia -= 0x20;
}
else
{
o->yinertia = 0;
}
// flash
o->frame ^= 1;
if (o->xinertia < -0x400)
o->xinertia = -0x600;
if (o->xinertia > 0x400)
o->xinertia = 0x600;
}
================================================
FILE: ai/maze/balrog_boss_missiles.fdh
================================================
//hash:ce2d6225
//automatically generated by Makegen
/* located in game.cpp */
//---------[referenced from ai/maze/balrog_boss_missiles.cpp]--------//
void quake(int quaketime, int snd);
/* located in caret.cpp */
//---------[referenced from ai/maze/balrog_boss_missiles.cpp]--------//
Caret *effect(int x, int y, int effectno);
/* located in player.cpp */
//---------[referenced from ai/maze/balrog_boss_missiles.cpp]--------//
void hurtplayer(int damage);
/* located in ai/ai.cpp */
//---------[referenced from ai/maze/balrog_boss_missiles.cpp]--------//
Object *SpawnObjectAtActionPoint(Object *o, int otype);
/* located in ai/maze/balrog_boss_missiles.cpp */
//---------[referenced from ai/maze/balrog_boss_missiles.cpp]--------//
void ai_balrog_boss_missiles(Object *o);
void ondeath_balrog_boss_missiles(Object *o);
static void walking_animation(Object *o);
void ai_balrog_missile(Object *o);
/* located in ai/sym/smoke.cpp */
//---------[referenced from ai/maze/balrog_boss_missiles.cpp]--------//
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in ai/balrog_common.cpp */
//---------[referenced from ai/maze/balrog_boss_missiles.cpp]--------//
void balrog_grab_player(Object *o);
bool balrog_toss_player_away(Object *o);
/* located in sound/sound.cpp */
//---------[referenced from ai/maze/balrog_boss_missiles.cpp]--------//
void sound(int snd);
/* located in common/misc.cpp */
//---------[referenced from ai/maze/balrog_boss_missiles.cpp]--------//
int random(int min, int max);
================================================
FILE: ai/maze/critter_purple.cpp
================================================
#include "../stdai.h"
#include "critter_purple.fdh"
#define STATE_IDLE 1 // waiting for player to come near
#define STATE_PREPARE_JUMP 2 // on ground, prepare to jump
#define STATE_JUMP 3 // jumping up
#define STATE_HOVER 4 // hovering and firing
#define STATE_END_JUMP 5 // falling back down
#define CRITTER_DAMAGE 2 // normal damage
#define CRITTER_FALL_DAMAGE 3 // damage if it falls on you
INITFUNC(AIRoutines)
{
ONTICK(OBJ_CRITTER_SHOOTING_PURPLE, ai_critter_shooting_purple);
ONTICK(OBJ_CRITTER_SHOT, ai_generic_angled_shot);
}
/*
void c------------------------------() {}
*/
// used only for purple ones in maze
void ai_critter_shooting_purple(Object *o)
{
switch(o->state)
{
case 0:
o->state = STATE_IDLE;
o->damage = CRITTER_DAMAGE;
case STATE_IDLE:
{
o->frame = 0; // assume not at attention
if (o->timer >= 8)
{
if (pdistlx(96<state = STATE_PREPARE_JUMP;
o->frame = 0;
o->timer = 0;
}
else
{ // no, but stand at "attention"
o->frame = 1;
}
}
}
else
{
o->timer++;
}
// also attack if shot
if (o->shaketime)
{
o->state = STATE_PREPARE_JUMP;
o->frame = 0;
o->timer = 0;
}
}
break;
case STATE_PREPARE_JUMP:
{
o->frame = 1;
if (++o->timer > 8)
{
FACEPLAYER;
o->state = STATE_JUMP;
o->timer = 0;
o->frame = 2;
sound(SND_ENEMY_JUMP);
o->yinertia = -0x5ff;
}
}
break;
case STATE_JUMP:
{
if (o->yinertia > 0x100 || \
(o->blockd && ++o->timer > 16)) // failsafe
{
o->ymark = o->y;
o->state = STATE_HOVER;
o->frame = 3;
o->timer = 0;
o->CurlyTargetHere(60, 100);
}
}
break;
case STATE_HOVER:
{ // sinusoidal hover
o->yinertia += (o->y > o->ymark) ? -0x10 : 0x10;
LIMITY(0x200);
FACEPLAYER;
ANIMATE(0, 3, 5);
// time to end flight?
if (++o->timer > 60 || o->blocku)
{
o->damage = CRITTER_FALL_DAMAGE;
o->state = STATE_END_JUMP;
o->frame = 2;
break;
}
if ((o->timer % 4) == 1)
sound(SND_CRITTER_FLY);
if ((o->timer % 30) == 6)
{
EmFireAngledShot(o, OBJ_CRITTER_SHOT, 6, 0x600);
sound(SND_EM_FIRE);
}
if (o->blockd)
o->yinertia = -0x200;
}
break;
case STATE_END_JUMP:
{
if (o->blockd)
{
o->damage = 2;
o->xinertia = 0;
o->timer = 0;
o->frame = 0;
o->state = 0;
sound(SND_THUD);
}
}
break;
}
if (o->state != STATE_HOVER)
{
o->yinertia += 0x20;
LIMITY(0x5ff);
}
}
================================================
FILE: ai/maze/critter_purple.fdh
================================================
//hash:ef256ea0
//automatically generated by Makegen
/* located in trig.cpp */
//------------[referenced from ai/maze/critter_purple.cpp]-----------//
void EmFireAngledShot(Object *o, int objtype, int rand_variance, int speed);
/* located in ai/maze/critter_purple.cpp */
//------------[referenced from ai/maze/critter_purple.cpp]-----------//
void ai_critter_shooting_purple(Object *o);
/* located in sound/sound.cpp */
//------------[referenced from ai/maze/critter_purple.cpp]-----------//
void sound(int snd);
================================================
FILE: ai/maze/gaudi.cpp
================================================
#include "../stdai.h"
#include "gaudi.fdh"
#define GAUDI_HP 15
#define GAUDI_FLYING_HP 15
#define GAUDI_ARMORED_HP 15
#define PLAYER_NEAR_ENOUGH() (pdistlx(SCREEN_WIDTH << CSF) && pdistly(SCREEN_HEIGHT << CSF))
INITFUNC(AIRoutines)
{
ONTICK(OBJ_GAUDI, ai_gaudi);
ONTICK(OBJ_GAUDI_ARMORED, ai_gaudi_armored);
ONTICK(OBJ_GAUDI_ARMORED_SHOT, ai_gaudi_armored_shot);
ONTICK(OBJ_GAUDI_FLYING, ai_gaudi_flying);
ONTICK(OBJ_GAUDI_FLYING_SHOT, ai_generic_angled_shot);
ONTICK(OBJ_GAUDI_DYING, ai_gaudi_dying);
}
/*
void c------------------------------() {}
*/
void ai_gaudi(Object *o)
{
if (o->hp <= (1000 - GAUDI_HP))
{
o->ChangeType(OBJ_GAUDI_DYING);
ai_gaudi_dying(o);
return;
}
if (!PLAYER_NEAR_ENOUGH())
return;
switch(o->state)
{
case 0:
{
// Gaudi's in shop
if (o->flags & FLAG_SCRIPTONACTIVATE)
{
o->damage = 0;
o->flags &= ~FLAG_SHOOTABLE;
}
o->xinertia = 0;
o->state = 1;
}
case 1:
{
o->frame = 0;
randblink(o, 1, 20, 100);
if (!random(0, 100))
{
if (random(0, 1))
{
o->dir ^= 1;
}
else
{
o->state = 10;
}
}
}
break;
case 10: // walking
{
o->state = 11;
o->timer = random(25, 100); // how long to walk for
o->frame = 2;
o->animtimer = 0;
}
case 11:
{
ANIMATE(3, 2, 5);
XMOVE(0x200);
// time to stop walking?
if (--o->timer <= 0)
o->state = 0;
// try to jump over any walls we come to
if ((o->xinertia < 0 && o->blockl) || \
(o->xinertia > 0 && o->blockr))
{
o->yinertia = -0x5ff;
o->frame = 2;
o->state = 20;
if (!player->inputs_locked) // no sound during ending cutscene
sound(SND_ENEMY_JUMP);
}
}
break;
case 20: // jumping
{
// landed?
if (o->yinertia >= 0 && o->blockd)
{
o->xinertia = 0;
o->state = 21;
o->frame = 12;
o->timer = 0;
if (!player->inputs_locked) // no sound during ending cutscene
sound(SND_THUD);
}
// count how long we've been touching the wall
// we're trying to jump over..if it's not working
// go the other way.
if ((o->dir == LEFT && o->blockl) || \
(o->dir == RIGHT && o->blockr))
{
if (++o->timer2 > 10)
{
o->timer2 = 0;
o->dir ^= 1;
}
}
else
{
o->timer2 = 0;
}
XMOVE(0x100);
}
break;
case 21: // landed from jump
{
if (++o->timer > 10)
o->state = 0;
}
break;
}
o->yinertia += 0x40;
LIMITY(0x5ff);
}
void ai_gaudi_dying(Object *o)
{
switch(o->state)
{
case 0: // just died (initilizing)
{
o->flags &= ~(FLAG_SHOOTABLE | FLAG_IGNORE_SOLID | FLAG_SHOW_FLOATTEXT);
o->damage = 0;
o->sprite = SPR_GAUDI;
o->frame = 9;
o->yinertia = -0x200;
XMOVE(-0x100);
sound(SND_ENEMY_HURT_SMALL);
o->state = 1;
}
break;
case 1: // flying backwards through air
{
if (o->blockd && o->yinertia >= 0)
{
o->frame = 10;
o->state = 2;
o->timer = 0;
}
}
break;
case 2: // landed, shake
{
o->xinertia *= 8;
o->xinertia /= 9;
ANIMATE(3, 10, 11);
if (++o->timer > 50)
{ // this deletes object while generating smoke effects and boom
o->DealDamage(10000);
}
}
break;
}
o->yinertia += 0x20;
LIMITY(0x5ff);
}
/*
void c------------------------------() {}
*/
void ai_gaudi_flying(Object *o)
{
if (o->hp <= (1000 - GAUDI_FLYING_HP))
{
if (o->dir == LEFT)
o->x -= (2 << CSF);
else
o->x += (2 << CSF);
o->ChangeType(OBJ_GAUDI_DYING);
ai_gaudi_dying(o);
return;
}
if (!PLAYER_NEAR_ENOUGH())
return;
switch(o->state)
{
case 0:
{
vector_from_angle(random(0, 255), (1 << CSF), &o->xinertia, &o->yinertia);
o->xmark = o->x + (o->xinertia * 8);
o->ymark = o->y + (o->yinertia * 8);
o->timer2 = 120;
}
case 1:
{
o->timer = random(70, 150);
o->state = 2;
}
case 2:
{
if (!--o->timer)
{
o->state = 3;
o->frame |= 0x02; // switch us into using flashing purple animation
}
}
break;
case 3: // preparing to fire
{
o->timer++;
if (++o->timer > 30)
{
EmFireAngledShot(o, OBJ_GAUDI_FLYING_SHOT, 6, 0x500);
sound(SND_EM_FIRE);
o->state = 1;
o->frame &= 1; // stop flashing purple
}
}
}
o->frame ^= 1; // animate wings
FACEPLAYER;
// sinusoidal circling pattern
o->xinertia += (o->x > o->xmark) ? -0x10 : 0x10;
o->yinertia += (o->y > o->ymark) ? -0x10 : 0x10;
LIMITX(0x200);
LIMITY(0x200);
}
/*
void c------------------------------() {}
*/
void ai_gaudi_armored(Object *o)
{
if (o->hp <= (1000 - GAUDI_ARMORED_HP))
{
o->ChangeType(OBJ_GAUDI_DYING);
ai_gaudi_dying(o);
return;
}
if (!PLAYER_NEAR_ENOUGH())
return;
FACEPLAYER;
//debug("%d", o->state);
//debugVline(o->x, 0, 0, 255);
//debugVline(o->xmark, 0, 255, 0);
switch(o->state)
{
case 0:
{
o->xmark = o->x;
o->state = 1;
}
case 1:
{
o->frame = 0;
o->xinertia = 0;
if (++o->timer >= 5)
{
if (pdistlx(192 << CSF) && pdistly(160 << CSF))
{ // begin hopping
o->state = 10;
o->timer = 0;
o->frame = 1;
}
}
}
break;
case 10: // on ground inbetween hops
{
if (++o->timer > 3)
{
sound(SND_ENEMY_JUMP);
o->frame = 2;
o->timer = 0;
if (++o->timer2 < 3)
{ // hopping back and forth
o->state = 20;
o->yinertia = -0x200;
o->xinertia = (o->x < o->xmark) ? 0x200 : -0x200;
}
else
{ // big jump and attack
o->state = 30;
o->yinertia = -0x600;
o->xinertia = (o->x < o->xmark) ? 0x80 : -0x80;
o->timer2 = 0;
}
}
}
break;
case 20: // jumping (small hop)
{
// landed?
if (o->blockd && o->yinertia >= 0)
{
// drop sub-pixel precision
// (required to maintain stability of back-and-forth sequence).
o->y >>= CSF; o->y <<= CSF;
sound(SND_THUD);
o->state = 40;
o->frame = 1;
o->timer = 0;
}
}
break;
case 30: // jumping (big jump + attack)
{
o->timer++;
// throw attacks at player
if (o->timer == 30 || o->timer == 40)
{
EmFireAngledShot(o, OBJ_GAUDI_ARMORED_SHOT, 6, 0x600);
sound(SND_EM_FIRE);
o->frame = 3;
o->CurlyTargetHere();
}
// stop throwing animation
if (o->timer == 35 || o->timer == 45)
o->frame = 2;
if (o->blockd && o->yinertia > 0)
{
sound(SND_THUD);
o->state = 40;
o->frame = 1;
o->timer = 0;
}
}
break;
case 40: // landed
{
o->xinertia *= 7;
o->xinertia /= 8;
if (++o->timer >= 2)
{
//stat("dtt= %d", abs(o->xmark - o->x)>>CSF);
o->frame = 0;
o->xinertia = 0;
o->state = 1;
o->timer = 0;
}
}
break;
}
o->yinertia += 0x33;
LIMITY(0x5ff);
}
void ai_gaudi_armored_shot(Object *o)
{
ANIMATE(0, 0, 2);
switch(o->state)
{
case 0:
{
bool bounced = false;
if (o->blockl && o->xinertia <= 0) { o->xinertia = 0x200; bounced = true; }
if (o->blockr && o->xinertia >= 0) { o->xinertia = -0x200; bounced = true; }
if (o->blockd && o->yinertia >= 0) { o->yinertia = -0x200; bounced = true; }
if (o->blocku && o->yinertia <= 0) { o->yinertia = 0x200; bounced = true; }
if (bounced)
{
o->state = 1;
sound(SND_TINK);
}
}
break;
case 1:
{
o->yinertia += 0x40;
LIMITY(0x5ff);
if (o->blockd && o->yinertia >= 0)
{
effect(o->CenterX(), o->CenterY(), EFFECT_STARPOOF);
o->Delete();
return;
}
}
break;
}
}
================================================
FILE: ai/maze/gaudi.fdh
================================================
//hash:f9425f6f
//automatically generated by Makegen
/* located in caret.cpp */
//-----------------[referenced from ai/maze/gaudi.cpp]---------------//
Caret *effect(int x, int y, int effectno);
/* located in trig.cpp */
//-----------------[referenced from ai/maze/gaudi.cpp]---------------//
void vector_from_angle(uint8_t angle, int speed, int *xs, int *ys);
void EmFireAngledShot(Object *o, int objtype, int rand_variance, int speed);
/* located in ai/ai.cpp */
//-----------------[referenced from ai/maze/gaudi.cpp]---------------//
void randblink(Object *o, int blinkframe, int blinktime, int prob);
/* located in ai/maze/gaudi.cpp */
//-----------------[referenced from ai/maze/gaudi.cpp]---------------//
void ai_gaudi(Object *o);
void ai_gaudi_dying(Object *o);
void ai_gaudi_flying(Object *o);
void ai_gaudi_armored(Object *o);
void ai_gaudi_armored_shot(Object *o);
/* located in sound/sound.cpp */
//-----------------[referenced from ai/maze/gaudi.cpp]---------------//
void sound(int snd);
/* located in common/misc.cpp */
//-----------------[referenced from ai/maze/gaudi.cpp]---------------//
int random(int min, int max);
================================================
FILE: ai/maze/labyrinth_m.cpp
================================================
#include "../stdai.h"
#include "labyrinth_m.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_FIREWHIRR, ai_firewhirr);
ONTICK(OBJ_FIREWHIRR_SHOT, ai_firewhirr_shot);
ONTICK(OBJ_GAUDI_EGG, ai_gaudi_egg);
ONTICK(OBJ_FUZZ_CORE, ai_fuzz_core);
ONTICK(OBJ_FUZZ, ai_fuzz);
AFTERMOVE(OBJ_FUZZ, aftermove_fuzz);
ONTICK(OBJ_BUYOBUYO_BASE, ai_buyobuyo_base);
ONTICK(OBJ_BUYOBUYO, ai_buyobuyo);
}
/*
void c------------------------------() {}
*/
void ai_firewhirr(Object *o)
{
Object *shot;
FACEPLAYER;
switch(o->state)
{
case 0:
o->state = 1;
o->timer = random(0, 50);
o->ymark = o->y;
//o->yinertia = -0x200;
case 1:
if (!o->timer)
{
o->state = 10;
o->yinertia = -0x200;
}
else o->timer--;
case 10:
o->frame ^= 1;
o->yinertia += (o->y < o->ymark) ? 0x10 : -0x10;
LIMITY(0x200);
// inc time-to-fire while player near
if (pdistly(80 << CSF))
{
if (o->dir==LEFT && player->x < o->x && pdistlx(160 << CSF)) o->timer2++;
if (o->dir==RIGHT && player->x > o->x && pdistlx(160 << CSF)) o->timer2++;
}
// if time to fire, spawn a shot
if (o->timer2 > 20)
{
shot = SpawnObjectAtActionPoint(o, OBJ_FIREWHIRR_SHOT);
o->timer2 = -100 + random(0, 20);
// tell Curly to acquire us as a target
if (o->onscreen)
{
o->CurlyTargetHere();
}
}
break;
}
}
void ai_firewhirr_shot(Object *o)
{
ANIMATE(1, 0, 2);
o->x += (o->dir==LEFT) ? -0x200 : 0x200;
if ((o->dir==LEFT && o->blockl) || (o->dir==RIGHT && o->blockr))
{
if (o->dir == RIGHT) o->x += o->Width();
effect(o->x, o->CenterY(), EFFECT_FISHY);
o->Delete();
}
}
/*
void c------------------------------() {}
*/
void ai_gaudi_egg(Object *o)
{
if (!o->state)
{
if (o->dir==LEFT)
{ // on floor
// align properly with ground
o->y -= (4<x -= (4<blocku)
{
o->y -= (14 << CSF);
}
}
o->state = 1;
}
else if (o->state == 1)
{
if (o->hp < 90)
{
o->frame = 1;
o->damage = 0;
o->flags &= ~FLAG_SHOOTABLE;
SmokeSide(o, 6, (o->dir==LEFT)?DOWN:UP);
o->SpawnPowerups();
sound(objprop[o->type].death_sound);
o->state = 2;
}
}
}
/*
void c------------------------------() {}
*/
void ai_fuzz_core(Object *o)
{
ANIMATE(2, 0, 1);
switch(o->state)
{
case 0:
{
// spawn mini-fuzzes
int angle = 120;
for(int i=0;i<5;i++)
{
Object *f = CreateObject(o->CenterX(), o->CenterY(), OBJ_FUZZ);
f->linkedobject = o;
f->angle = angle;
angle += (256 / 5);
}
o->timer = random(1, 50);
o->state = 1;
}
case 1: // de-syncs the Y positions when multiple cores are present at once
{
if (--o->timer <= 0)
{
o->state = 2;
o->yinertia = 0x300;
o->ymark = o->y;
}
}
break;
case 2:
{
FACEPLAYER;
if (o->y > o->ymark) o->yinertia -= 0x10;
if (o->y < o->ymark) o->yinertia += 0x10;
LIMITY(0x355);
}
break;
}
}
void ai_fuzz(Object *o)
{
FACEPLAYER;
switch(o->state)
{
case 0:
{
o->angle += 4;
if (!o->linkedobject)
{
o->xinertia = random(-0x200, 0x200);
o->yinertia = random(-0x200, 0x200);
o->state = 1;
}
}
break;
// base destroyed, simple sinusoidal player-seek
case 1:
{
o->xinertia += (o->x > player->x) ? -0x20 : 0x20;
o->yinertia += (o->y > player->y) ? -0x20 : 0x20;
LIMITX(0x800);
LIMITY(0x200);
}
break;
}
}
void aftermove_fuzz(Object *o)
{
if (o->state == 0 && o->linkedobject)
{
vector_from_angle(o->angle, (20 << CSF), &o->x, NULL);
vector_from_angle(o->angle, (32 << CSF), NULL, &o->y);
o->x += o->linkedobject->CenterX() - (o->Width() / 2);
o->y += o->linkedobject->CenterY() - (o->Height() / 2);
}
}
/*
void c------------------------------() {}
*/
#define BUYOBUYO_BASE_HP 60
void ai_buyobuyo_base(Object *o)
{
/*if (o->onscreen) {
debug("state: %d", o->state);
debug("timer: %d", o->timer);
debug("timer2: %d", o->timer2);
}*/
if (o->state < 3 && o->hp < (1000 - BUYOBUYO_BASE_HP))
{
SmokeClouds(o, objprop[o->type].death_smoke_amt, 8, 8);
effect(o->CenterX(), o->CenterY(), EFFECT_BOOMFLASH);
o->SpawnPowerups();
o->flags &= ~FLAG_SHOOTABLE;
o->damage = 0;
o->state = 10;
o->frame = 2;
}
switch(o->state)
{
case 0:
{
// ceiling has different bounding box and action point
if (o->dir == RIGHT)
o->sprite = SPR_BUYOBUYO_BASE_CEILING;
o->state = 1;
o->timer = 10;
}
case 1:
{
if (pdistlx(0x14000))
{
if ((o->dir == LEFT && pdistly2(0x14000, 0x2000)) || \
(o->dir == RIGHT && pdistly2(0x2000, 0x14000)))
{
if (--o->timer < 0)
{
o->state = 2;
o->timer = 0;
o->animtimer = 0;
}
}
}
}
break;
case 2:
{
ANIMATE(3, 0, 1);
if (++o->timer > 10)
{
Object *buyo = SpawnObjectAtActionPoint(o, OBJ_BUYOBUYO);
buyo->dir = o->dir;
sound(SND_EM_FIRE);
o->frame = 0;
o->CurlyTargetHere();
// cyclic: three firings then pause
o->state = 1;
if (++o->timer2 > 2)
{
o->timer = 100;
o->timer2 = 0;
}
else
{
o->timer = 20;
}
}
}
break;
}
}
void ai_buyobuyo(Object *o)
{
bool deleteme = false;
ANIMATE(6, 0, 1);
switch(o->state)
{
case 0:
{
// shoot up down at player...
o->yinertia = (o->dir == LEFT) ? -0x600 : 0x600;
o->state = 1;
o->timer = 0;
}
case 1:
{
o->timer++; // inc fly time
// reached height of player yet?
if (pdistly(0x2000))
{
o->state = 2;
ai_buyobuyo(o);
return;
}
}
break;
case 2:
{
// this slight "minimum fly time" keeps the underwater ones from
// smacking into the floor if the player is underwater with them
if (++o->timer > 3)
{
FACEPLAYER;
o->xmark = o->x;
o->ymark = o->y;
o->xinertia = random(0, 1) ? 0x200 : -0x200;
o->yinertia = random(0, 1) ? 0x200 : -0x200;
o->state = 3;
}
}
break;
case 3:
{
if (o->x > o->xmark) o->xinertia -= 0x20;
if (o->x < o->xmark) o->xinertia += 0x20;
if (o->y > o->ymark) o->yinertia -= 0x20;
if (o->y < o->ymark) o->yinertia += 0x20;
LIMITX(0x400);
LIMITY(0x400);
// move the point we are bobbling around
o->xmark += (o->dir == LEFT) ? -(1 << CSF) : (1 << CSF);
//debugVline(o->xmark, 0, 0xff, 0);
if (++o->timer > 300)
deleteme = true;
}
break;
}
if ((o->blockl && o->xinertia < 0) || \
(o->blockr && o->xinertia > 0) || \
(o->blocku && o->yinertia < 0) || \
(o->blockd && o->yinertia > 0))
{
deleteme = true;
}
if (deleteme)
{
effect(o->CenterX(), o->CenterY(), EFFECT_STARPOOF);
o->Delete();
return;
}
}
================================================
FILE: ai/maze/labyrinth_m.fdh
================================================
//hash:00879ec8
//automatically generated by Makegen
/* located in ObjManager.cpp */
//--------------[referenced from ai/maze/labyrinth_m.cpp]------------//
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//--------------[referenced from ai/maze/labyrinth_m.cpp]------------//
Caret *effect(int x, int y, int effectno);
/* located in trig.cpp */
//--------------[referenced from ai/maze/labyrinth_m.cpp]------------//
void vector_from_angle(uint8_t angle, int speed, int *xs, int *ys);
/* located in ai/ai.cpp */
//--------------[referenced from ai/maze/labyrinth_m.cpp]------------//
Object *SpawnObjectAtActionPoint(Object *o, int otype);
/* located in ai/maze/labyrinth_m.cpp */
//--------------[referenced from ai/maze/labyrinth_m.cpp]------------//
void ai_firewhirr(Object *o);
void ai_firewhirr_shot(Object *o);
void ai_gaudi_egg(Object *o);
void ai_fuzz_core(Object *o);
void ai_fuzz(Object *o);
void aftermove_fuzz(Object *o);
void ai_buyobuyo_base(Object *o);
void ai_buyobuyo(Object *o);
/* located in ai/sym/smoke.cpp */
//--------------[referenced from ai/maze/labyrinth_m.cpp]------------//
void SmokeSide(Object *o, int nclouds, int dir);
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in sound/sound.cpp */
//--------------[referenced from ai/maze/labyrinth_m.cpp]------------//
void sound(int snd);
/* located in common/misc.cpp */
//--------------[referenced from ai/maze/labyrinth_m.cpp]------------//
int random(int min, int max);
================================================
FILE: ai/maze/maze.cpp
================================================
#include "../stdai.h"
#include "maze.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_BLOCK_MOVEH, ai_block_moveh);
ONTICK(OBJ_BLOCK_MOVEV, ai_block_movev);
ONTICK(OBJ_BOULDER, ai_boulder);
GENERIC_NPC_NOFACEPLAYER(OBJ_GAUDI_SHOPKEEP);
}
/*
void c------------------------------() {}
*/
void ai_block_moveh(Object *o)
{
int px = player->CenterX();
int objx = o->CenterX();
switch(o->state)
{
case 0:
o->flags |= FLAG_SOLID_BRICK;
o->smushdamage = 100;
o->state = (o->dir == LEFT) ? 10:20;
break;
case 10: // at right edge, ready to travel left
if (((px > objx) && (px - objx) < 0x3200) || \
((px < objx) && (objx - px) < 0x32000))
{
if (pdistly(0x3200))
{
o->state = 30;
o->timer = 0;
}
}
break;
case 20: // at left edge, ready to travel right
if (((px > objx) && (px - objx) < 0x32000) || \
((px < objx) && (objx - px) < 0x3200))
{
if (pdistly(0x3200))
{
o->state = 30;
o->timer = 0;
}
}
break;
case 30: // traveling
{
XACCEL(0x20);
LIMITX(0x200);
// hit edge
if ((o->dir == RIGHT && o->blockr) || (o->dir == LEFT && o->blockl))
{
SmokeSide(o, 4, o->dir);
quake(10);
o->xinertia = 0;
o->dir ^= 1;
o->state = (o->dir==LEFT) ? 10 : 20;
}
if ((++o->timer % 10) == 6)
sound(SND_BLOCK_MOVE);
}
break;
}
}
void ai_block_movev(Object *o)
{
int py = player->CenterY();
int objy = o->CenterY();
switch(o->state)
{
case 0:
o->flags |= FLAG_SOLID_BRICK;
o->smushdamage = 100;
o->dir = (o->dir == LEFT) ? UP : DOWN;
o->state = (o->dir == DOWN) ? 10 : 20;
break;
case 10: // at top edge, ready to travel down
if (((py > objy) && (py - objy) < 0x32000) || \
((py < objy) && (objy - py) < 0x3200))
{
if (pdistlx(0x3200))
{
o->state = 30;
o->timer = 0;
}
}
break;
case 20: // at bottom edge, ready to travel up
if (((py > objy) && (py - objy) < 0x3200) || \
((py < objy) && (objy - py) < 0x32000))
{
if (pdistlx(0x3200))
{
o->state = 30;
o->timer = 0;
}
}
break;
case 30: // traveling
{
YACCEL(0x20);
LIMITY(0x200);
// hit edge
if ((o->dir == DOWN && o->blockd) || (o->dir == UP && o->blocku))
{
SmokeSide(o, 4, o->dir);
quake(10);
o->yinertia = 0;
o->dir ^= 1;
o->state = (o->dir==DOWN) ? 10 : 20;
}
if ((++o->timer % 10) == 6)
sound(SND_BLOCK_MOVE);
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_boulder(Object *o)
{
switch(o->state)
{
// shaking
case 10:
{
o->state = 11;
o->timer = 0;
o->xmark = o->x;
}
case 11:
{
if ((++o->timer % 3) != 0)
o->x = o->xmark + (1 << CSF);
else
o->x = o->xmark;
}
break;
// thrown away by Balrog
case 20:
{
o->yinertia = -0x400;
o->xinertia = 0x100;
sound(SND_FUNNY_EXPLODE);
o->state = 21;
o->timer = 0;
}
case 21:
{
o->yinertia += 0x10;
if (o->blockd && o->yinertia >= 0)
{
sound(SND_EXPLOSION1);
game.quaketime = 40;
o->xinertia = 0;
o->yinertia = 0;
o->state = 0;
}
}
break;
}
}
================================================
FILE: ai/maze/maze.fdh
================================================
//hash:c7e432c2
//automatically generated by Makegen
/* located in game.cpp */
//-----------------[referenced from ai/maze/maze.cpp]----------------//
void quake(int quaketime, int snd);
/* located in ai/maze/maze.cpp */
//-----------------[referenced from ai/maze/maze.cpp]----------------//
void ai_block_moveh(Object *o);
void ai_block_movev(Object *o);
void ai_boulder(Object *o);
/* located in ai/sym/smoke.cpp */
//-----------------[referenced from ai/maze/maze.cpp]----------------//
void SmokeSide(Object *o, int nclouds, int dir);
/* located in sound/sound.cpp */
//-----------------[referenced from ai/maze/maze.cpp]----------------//
void sound(int snd);
================================================
FILE: ai/maze/pooh_black.cpp
================================================
#include "../stdai.h"
#include "pooh_black.fdh"
#define FRAME_STAND 0
#define FRAME_DYING 1
#define FRAME_LANDED 2
#define FRAME_FLYING 3
static int bubble_xmark = 0, bubble_ymark = 0;
INITFUNC(AIRoutines)
{
ONTICK(OBJ_POOH_BLACK, ai_pooh_black);
ONTICK(OBJ_POOH_BLACK_BUBBLE, ai_pooh_black_bubble);
ONTICK(OBJ_POOH_BLACK_DYING, ai_pooh_black_dying);
}
/*
void c------------------------------() {}
*/
void ai_pooh_black(Object *o)
{
// assume flying frame as it's the one used in most of the states
o->frame = FRAME_FLYING;
//debugVline(o->CenterX(), 255,192,192);
//debugVline(bubble_xmark, 0,0,255);
switch(o->state)
{
case 0:
{
FACEPLAYER;
o->yinertia = 0xA00;
o->flags |= FLAG_IGNORE_SOLID;
if (o->y >= (8 * TILE_H) << CSF)
{
o->flags &= ~FLAG_IGNORE_SOLID;
o->state = 1;
}
}
break;
case 1:
{
o->yinertia = 0xA00;
if (o->blockd)
{
SmokeSide(o, 8, DOWN);
sound(SND_BIG_CRASH);
quake(30);
KillObjectsOfType(OBJ_POOH_BLACK_BUBBLE);
o->state = 2;
}
// damage player if he falls on him
o->damage = (o->y < player->y && player->blockd) ? 20 : 0;
}
break;
case 2: // landed, showing landed frame
{
o->frame = FRAME_LANDED;
o->damage = 0;
if (++o->timer > 24)
{
o->state = 3;
o->timer = 0;
}
}
break;
case 3: // standing, stare at player till he shoots us.
{
o->frame = FRAME_STAND;
bubble_xmark = o->CenterX();
bubble_ymark = o->CenterY();
// spawn bubbles when hit
if (o->shaketime && (o->shaketime & 1))
{
int x = o->CenterX() + random(-12<CenterY() + random(-12<xinertia = random(-0x600, 0x600);
bubble->yinertia = random(-0x600, 0x600);
// fly away after hit enough times
if (++o->timer > 30)
{
o->state = 4;
o->timer = 0;
o->flags |= FLAG_IGNORE_SOLID;
o->yinertia = -0xC00;
}
}
}
break;
case 4: // flying away off-screen
{
o->timer++;
// bubbles shoot down past player just before
// he falls.
if (o->timer == 60)
{
bubble_xmark = player->CenterX();
bubble_ymark = (10000 << CSF);
}
else if (o->timer < 60)
{
bubble_xmark = o->CenterX();
bubble_ymark = o->CenterY();
}
// fall on player
if (o->timer >= 170)
{
o->x = player->CenterX() - (o->Width() / 2);
o->y = 0;
o->yinertia = 0x5ff;
o->state = 0;
o->timer = 0;
}
}
break;
}
static const int frames[] = { 3, 3, 2, 0, 3 };
o->frame = frames[o->state];
}
void ai_pooh_black_bubble(Object *o)
{
if (o->hp < 100)
{
o->flags &= ~FLAG_SHOOTABLE;
o->damage = 0;
o->frame = 2;
}
else if (!random(0, 10))
{
o->frame = 0;
}
else
{
o->frame = 1;
}
// adjust bubble target position so that they try to align
// their centers with the mark instead of their upper-left corners.
int xmark = bubble_xmark - ((sprites[SPR_POOH_BLACK_BUBBLE].w / 2) << CSF);
int ymark = bubble_ymark - ((sprites[SPR_POOH_BLACK_BUBBLE].h / 2) << CSF);
o->xinertia += (o->x > xmark) ? -0x40 : 0x40;
o->yinertia += (o->y > ymark) ? -0x40 : 0x40;
LIMITX(0x11FD);
LIMITY(0x11FD);
}
void ai_pooh_black_dying(Object *o)
{
bubble_xmark = o->CenterX();
bubble_ymark = -(10000 << CSF);
switch(o->state)
{
case 0:
{
o->frame = FRAME_DYING;
FACEPLAYER;
sound(SND_BIG_CRASH);
SmokeClouds(o, 10, 12, 12);
KillObjectsOfType(OBJ_POOH_BLACK_BUBBLE);
o->state = 1;
}
break;
case 1:
case 2:
{
game.quaketime = 2;
if (++o->timer > 200)
{
o->state = 2;
o->timer2++;
o->clip_enable = true;
o->clipy1 = (o->timer2 / 8);
o->display_xoff = (o->timer2 & 1);
if ((o->timer2 % 4) == 2)
sound(SND_BUBBLE);
if (o->clipy1 >= o->clipy2)
o->Delete();
}
}
break;
}
if (o->timer & 1)
{
int x = o->CenterX() + random(-12<state == 2)
y = o->y + (o->clipy1 << CSF) + random(-4<CenterY() + random(-12<xinertia = random(-0x200, 0x200);
bubble->yinertia = -0x100;
}
}
================================================
FILE: ai/maze/pooh_black.fdh
================================================
//hash:cf376552
//automatically generated by Makegen
/* located in game.cpp */
//--------------[referenced from ai/maze/pooh_black.cpp]-------------//
void quake(int quaketime, int snd);
/* located in ObjManager.cpp */
//--------------[referenced from ai/maze/pooh_black.cpp]-------------//
Object *CreateObject(int x, int y, int type);
/* located in ai/ai.cpp */
//--------------[referenced from ai/maze/pooh_black.cpp]-------------//
void KillObjectsOfType(int type);
/* located in ai/maze/pooh_black.cpp */
//--------------[referenced from ai/maze/pooh_black.cpp]-------------//
void ai_pooh_black(Object *o);
void ai_pooh_black_bubble(Object *o);
void ai_pooh_black_dying(Object *o);
/* located in ai/sym/smoke.cpp */
//--------------[referenced from ai/maze/pooh_black.cpp]-------------//
void SmokeSide(Object *o, int nclouds, int dir);
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in sound/sound.cpp */
//--------------[referenced from ai/maze/pooh_black.cpp]-------------//
void sound(int snd);
/* located in common/misc.cpp */
//--------------[referenced from ai/maze/pooh_black.cpp]-------------//
int random(int min, int max);
================================================
FILE: ai/npc/balrog.cpp
================================================
#include "../stdai.h"
#include "balrog.fdh"
INITFUNC(AIRoutines)
{
ONSPAWN(OBJ_BALROG, onspawn_balrog);
ONTICK(OBJ_BALROG, ai_balrog);
ONTICK(OBJ_BALROG_DROP_IN, ai_balrog_drop_in);
ONTICK(OBJ_BALROG_BUST_IN, ai_balrog_bust_in);
}
/*
void c------------------------------() {}
*/
void onspawn_balrog(Object *o)
{
// in the Boulder Chamber boss fight, Balrog is supposed to go BEHIND Curly.
if (game.curmap == STAGE_BOULDER_CHAMBER)
{
Object *curly = Objects::FindByType(OBJ_CURLY);
if (curly)
{
o->PushBehind(curly);
// nasty hack to adjust his starting position in the post-fight cutscene.
// I'm not sure why this is otherwise wrong.
if (GetCurrentScript() == 600)
{
o->x -= (6 << CSF);
}
}
}
}
void ai_balrog(Object *o)
{
bool fall = true;
// he is greenish when he first appears in Gum Room
if (DoesCurrentStageUseSpriteset(NPCSET_FROG))
o->sprite = SPR_BALROG_GREEN;
switch(o->state)
{
case 0:
{
o->flags &= ~FLAG_IGNORE_SOLID;
o->xinertia = 0;
o->balrog.smoking = false;
o->frame = 0;
randblink(o, 4, 8);
}
break;
case 10: // he jumps and flys away
o->xinertia = 0;
o->frame = 2;
o->timer = 0;
o->state++;
case 11:
{
if (++o->timer <= 20) break;
o->state++;
o->yinertia = -0x800;
o->flags |= FLAG_IGNORE_SOLID;
}
case 12:
{
fall = false;
o->frame = 3;
o->yinertia -= 0x10;
if (o->y < 0)
{
o->Delete();
sound(SND_QUAKE);
game.quaketime = 30;
}
}
break;
// he looks shocked and shakes, then flys away
// used when he is "hit by something"
case 20:
{
o->state = 21;
o->frame = 5;
o->xinertia = 0;
o->timer = o->timer2 = 0;
SmokeClouds(o, 4, 8, 8);
sound(SND_BIG_CRASH);
o->balrog.smoking = 1;
}
case 21:
{
o->timer2++;
o->x += ((o->timer2 >> 1) & 1) ? (1<timer > 100)
o->state = 10;
o->yinertia += 0x20;
LIMITY(0x5ff);
}
break;
case 30: // he smiles for a moment
o->frame = 6;
o->timer = 0;
o->state = 31;
case 31: if (++o->timer > 100) o->state = o->frame = 0;
break;
// flashing white (spell casted on him)
// this only works in Gum Room before balfrog fight, as the normal
// non-greenish spritesheet doesn't include the required frame.
case 40:
o->state = 41;
o->animtimer = 0;
o->animframe = 0;
case 41:
{
static const int flash_seq[] = { 5, 7 };
o->animate_seq(1, flash_seq, 2);
}
break;
case 42:
o->timer = 0;
o->state = 43;
case 43:
// flashing visibility
// (transforming into Balfrog stage boss;
// our flashing is interlaced with his)
o->timer++;
o->invisible = (o->timer & 2) ? false : true;
break;
case 50: // he faces away
o->frame = 8;
o->xinertia = 0;
break;
case 60: // he walks
o->state = 61;
balrog_walk_init(o);
case 61:
{
balrog_walk_animation(o);
XMOVE(0x200);
}
break;
// he is teleported away (looking distressed)
// this is when he is sent to Labyrinth at end of Sand Zone
case 70:
o->xinertia = 0;
o->timer = 0;
o->frame = 7;
o->state++;
case 71:
if (DoTeleportOut(o, 2))
o->Delete();
break;
case 80: // hands up and shakes
o->frame = 5;
o->state = 81;
case 81:
{
if (++o->timer & 2)
o->x += (1 << CSF);
else
o->x -= (1 << CSF);
}
break;
// fly up and lift Curly & PNPC
// (post-Ballos ending scene)
case 100:
{
o->state = 101;
o->timer = 0;
o->frame = 2; // prepare for jump
}
case 101:
{
if (++o->timer > 20)
{
o->state = 102;
o->timer = 0;
o->frame = 3; // fly up
DeleteObjectsOfType(OBJ_NPC_PLAYER);
DeleteObjectsOfType(OBJ_CURLY);
CreateObject(0, 0, OBJ_BALROG_PASSENGER, 0, 0, LEFT)->linkedobject = o;
CreateObject(0, 0, OBJ_BALROG_PASSENGER, 0, 0, RIGHT)->linkedobject = o;
o->yinertia = -0x800;
o->flags |= FLAG_IGNORE_SOLID; // so can fly through ceiling
fall = false;
}
}
break;
case 102: // flying up during escape seq
{
fall = false;
// bust through ceiling
int y = ((o->y + (4<> CSF) / TILE_H;
if (y < 35 && y >= 0)
{
int x = (o->CenterX() >> CSF) / TILE_W;
if (map.tiles[x][y] != 0)
{
// smoke needs to go at the bottom of z-order or you can't
// see any of the characters through all the smoke.
map_ChangeTileWithSmoke(x, y, 0, 4, false, lowestobject);
map_ChangeTileWithSmoke(x-1, y, 0, 4, false, lowestobject);
map_ChangeTileWithSmoke(x+1, y, 0, 4, false, lowestobject);
megaquake(10, 0);
sound(SND_MISSILE_HIT);
}
}
if (o->Bottom() < -(20<Delete();
}
}
break;
case 500: // used during Balfrog death scene
{
fall = false;
}
break;
}
if (o->balrog.smoking)
{
if (++o->balrog.smoketimer > 20 || !random(0, 16))
{
SmokeClouds(o, 1, 4, 4);
o->balrog.smoketimer = 0;
}
}
if (fall)
{
o->yinertia += 0x20;
if (o->yinertia >= 0x5ff)
o->yinertia = 0x5ff;
}
}
void ai_balrog_drop_in(Object *o)
{
switch(o->state)
{
case 0:
{
// he is greenish when he first appears in Gum Room
if (DoesCurrentStageUseSpriteset(NPCSET_FROG))
o->sprite = SPR_BALROG_GREEN;
// z-order hacking
if (game.curmap == STAGE_SEAL_CHAMBER_2)
o->PushBehind(lowestobject);
o->state = 1;
o->frame = 3; // falling
o->flags |= FLAG_IGNORE_SOLID;
}
case 1:
{
// since balrog often falls through the ceiling we must wait until he is free-falling
// before we start checking to see if he hit the floor
if (!o->blockd && !o->blocku)
{
o->state = 2;
o->flags &= ~FLAG_IGNORE_SOLID;
}
}
break;
case 2: // free-falling
if (o->blockd)
{
o->yinertia = 0;
o->frame = 2;
o->state = 3;
o->timer = 0;
SmokeSide(o, 4, DOWN);
quake(30);
}
break;
case 3: // landed
if (++o->timer > 20) { o->state = 4; o->frame = 0; }
break;
}
if (o->state == 1 || o->state == 2)
o->yinertia += 0x20;
}
// Balrog busting in the door of the Shack.
// he exists like this for only a moment, then the script
// changes him to a standard OBJ_BALROG.
void ai_balrog_bust_in(Object *o)
{
switch(o->state)
{
case 0:
SmokeClouds(o, 10, 8, 8);
o->y += (10 << CSF);
o->yinertia = -0x100;
sound(SND_BLOCK_DESTROY);
quake(30);
o->state = 1;
o->frame = 3;
case 1: // falling the short distance to ground
{
o->yinertia += 0x10;
if (o->yinertia > 0 && o->blockd)
{
o->state = 2;
o->frame = 2;
o->timer = 0;
quake(30);
}
}
break;
// landing animation
case 2:
{
if (++o->timer > 16)
{
o->state = 3;
o->frame = 0;
o->animtimer = 0;
}
}
break;
// standing and blinking
case 3:
case 4:
{
o->frame = 0;
randblink(o, 4, 16, 100);
}
break;
}
LIMITY(0x5FF);
}
/*
void c------------------------------() {}
*/
void balrog_walk_init(Object *o)
{
o->frame = 9;
o->animtimer = 0;
}
void balrog_walk_animation(Object *o)
{
if (++o->animtimer > 3)
{
o->animtimer = 0;
o->frame++;
if (o->frame == 10 || o->frame == 11)
sound(SND_THUD);
if (o->frame > 12)
o->frame = 9;
}
}
================================================
FILE: ai/npc/balrog.fdh
================================================
//hash:f6097911
//automatically generated by Makegen
/* located in game.cpp */
//-----------------[referenced from ai/npc/balrog.cpp]---------------//
void megaquake(int quaketime, int snd);
void quake(int quaketime, int snd);
/* located in ObjManager.cpp */
//-----------------[referenced from ai/npc/balrog.cpp]---------------//
Object *CreateObject(int x, int y, int type);
/* located in map.cpp */
//-----------------[referenced from ai/npc/balrog.cpp]---------------//
void map_ChangeTileWithSmoke(int x, int y, int newtile, int nclouds, bool boomflash, Object *push_behind);
/* located in tsc.cpp */
//-----------------[referenced from ai/npc/balrog.cpp]---------------//
int GetCurrentScript(void);
/* located in ai/ai.cpp */
//-----------------[referenced from ai/npc/balrog.cpp]---------------//
void randblink(Object *o, int blinkframe, int blinktime, int prob);
bool DoTeleportOut(Object *o, int slowness);
void DeleteObjectsOfType(int type);
/* located in ai/npc/balrog.cpp */
//-----------------[referenced from ai/npc/balrog.cpp]---------------//
void onspawn_balrog(Object *o);
void ai_balrog(Object *o);
void ai_balrog_drop_in(Object *o);
void ai_balrog_bust_in(Object *o);
void balrog_walk_init(Object *o);
void balrog_walk_animation(Object *o);
/* located in ai/sym/smoke.cpp */
//-----------------[referenced from ai/npc/balrog.cpp]---------------//
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
void SmokeSide(Object *o, int nclouds, int dir);
/* located in sound/sound.cpp */
//-----------------[referenced from ai/npc/balrog.cpp]---------------//
void sound(int snd);
/* located in common/misc.cpp */
//-----------------[referenced from ai/npc/balrog.cpp]---------------//
int random(int min, int max);
================================================
FILE: ai/npc/curly.cpp
================================================
#include "../stdai.h"
#include "curly.fdh"
#define CURLY_STAND 0
#define CURLY_WALK 3
#define CURLY_WALKING 4
INITFUNC(AIRoutines)
{
ONTICK(OBJ_CURLY, ai_curly);
AFTERMOVE(OBJ_CURLY_CARRIED, aftermove_curly_carried);
ONTICK(OBJ_CURLY_CARRIED_SHOOTING, ai_curly_carried_shooting);
ONTICK(OBJ_CCS_GUN, ai_ccs_gun);
}
/*
void c------------------------------() {}
*/
// regular NPC curly
void ai_curly(Object *o)
{
switch(o->state)
{
case 0: // state 0: stand and do nothing
o->frame = 0;
o->flags |= FLAG_SCRIPTONACTIVATE; // needed for after Almond battle
case 1:
// important that state 1 does not change look-away frame for Drain cutscene
if (o->frame != 12) o->frame = 0;
o->xinertia = 0;
break;
case 3: // state 3: walk forward
case 10: // state 10: walk to player and stop
{
if (o->state == 10) FACEPLAYER;
o->state++;
o->animtimer = 0;
o->frame = 0;
}
case 4:
case 11:
{
if (o->state == 11 && pdistlx(20<state = 0;
break;
}
ANIMATE(5, 0, 3);
if (!o->blockd) o->frame = 3;
XMOVE(0x200);
}
break;
// state 5: curly makes a "kaboom", then looks sad.
case 5:
o->state = 6;
SmokeClouds(o, 8, 0, 0);
case 6:
o->frame = 16;
break;
case 20: // face away
o->xinertia = 0;
o->frame = 12;
break;
case 21: // look up
o->xinertia = 0;
o->frame = 4;
break;
case 30: // state 30: curly goes flying through the air and is knocked out
{
o->state = 31;
o->frame = 14;
o->timer2 = 0;
o->yinertia = -0x400;
XMOVE(-0x200);
}
case 31:
{
if (o->blockd && o->yinertia >= 0)
o->state = 32;
else
break;
}
case 32: // state 32: curly is laying knocked out
{
o->frame = 15;
o->xinertia = 0;
}
break;
// walk backwards from collapsing wall during final cutscene
case 70:
{
o->state = 71;
o->timer = 0;
o->frame = 1;
o->animtimer = 0;
}
case 71:
{
XMOVE(-0x100);
ANIMATE(8, 0, 3);
}
break;
}
o->yinertia += 0x40;
LIMITY(0x5ff);
}
// curly being carried by Tow Rope
void aftermove_curly_carried(Object *o)
{
switch(o->state)
{
case 0:
{
o->state = 1;
o->frame = 17;
o->flags &= ~FLAG_SCRIPTONACTIVATE;
// turn on the HVTrigger in Waterway that kills Curly if you haven't
// drained the water out of her
if (game.curmap == STAGE_WATERWAY)
{
Object *t = FindObjectByID2(220);
if (t) t->ChangeType(OBJ_HVTRIGGER);
}
}
case 1:
{ // carried by player
StickToPlayer(o, -2, -13, -18);
}
break;
// floating away after Ironhead battle
case 10:
{
o->xinertia = 0x40;
o->yinertia = -0x20;
o->state = 11;
}
case 11:
{
if (o->y < MAPY(4)) // if in top part of screen, reverse before hitting wall
o->yinertia = 0x20;
}
break;
case 20:
{
o->Delete();
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_curly_carried_shooting(Object *o)
{
if (o->state == 0)
{
o->x = player->CenterX();
o->y = player->CenterY();
o->state = 1;
o->BringToFront();
Object *gun;
gun = CreateObject(0, 0, OBJ_CCS_GUN);
gun->linkedobject = o;
gun->PushBehind(o);
}
// get player center position--
// coordinates make more sense when figured this way
int px = player->x + (8 << CSF);
int py = player->y + (8 << CSF);
o->dir = player->dir ^ 1;
if (player->look)
{
o->xmark = px;
if (player->look == UP)
{
if (player->blockd)
{
o->ymark = py - (12 << CSF);
o->frame = 1;
}
else
{
o->ymark = py + (8 << CSF);
o->frame = 2;
}
}
else
{ // player looking down (and implicitly, not blockd)
o->ymark = py - (8 << CSF);
o->frame = 1;
}
}
else // normal/horizontal
{
if (player->dir == LEFT)
o->xmark = px + (7 << CSF);
else
o->xmark = px - (7 << CSF);
o->ymark = py - (3 << CSF);
o->frame = 0;
}
o->x += (o->xmark - o->x) / 2;
o->y += (o->ymark - o->y) / 2;
// bounce as player walks
if (player->walking && (player->walkanimframe & 1))
o->y -= (1 << CSF);
}
void ai_ccs_gun(Object *o)
{
Object *curly = o->linkedobject;
if (!curly) return;
o->dir = curly->dir;
o->frame = curly->frame;
switch(o->frame)
{
case 0: // horizontal/normal
{
if (curly->dir == RIGHT)
o->x = curly->x + (8 << CSF);
else
o->x = curly->x - (8 << CSF);
o->y = curly->y;
}
break;
case 1: // looking up
{
o->x = curly->x;
o->y = curly->y - (10 << CSF);
}
break;
case 2: // looking down
{
o->x = curly->x;
o->y = curly->y + (10 << CSF);
}
break;
}
if (pinputs[FIREKEY] != o->timer2)
{
o->timer2 = pinputs[FIREKEY];
if (pinputs[FIREKEY])
{
if (CountObjectsOfType(OBJ_NEMESIS_SHOT_CURLY) < 2)
{
int shotdir = curly->dir;
if (curly->frame == 1) shotdir = UP;
if (curly->frame == 2) shotdir = DOWN;
Object *shot = CreateObject(0, 0, OBJ_NEMESIS_SHOT_CURLY);
SetupBullet(shot, curly->x, curly->y, B_CURLYS_NEMESIS, shotdir);
}
}
}
}
================================================
FILE: ai/npc/curly.fdh
================================================
//hash:d9c51670
//automatically generated by Makegen
/* located in ObjManager.cpp */
//-----------------[referenced from ai/npc/curly.cpp]----------------//
Object *CreateObject(int x, int y, int type);
/* located in map.cpp */
//-----------------[referenced from ai/npc/curly.cpp]----------------//
Object *FindObjectByID2(int id2);
/* located in p_arms.cpp */
//-----------------[referenced from ai/npc/curly.cpp]----------------//
void SetupBullet(Object *shot, int x, int y, int btype, int dir);
/* located in ai/ai.cpp */
//-----------------[referenced from ai/npc/curly.cpp]----------------//
void StickToPlayer(Object *o, int x_left, int x_right, int off_y);
/* located in ai/npc/curly.cpp */
//-----------------[referenced from ai/npc/curly.cpp]----------------//
void ai_curly(Object *o);
void aftermove_curly_carried(Object *o);
void ai_curly_carried_shooting(Object *o);
void ai_ccs_gun(Object *o);
/* located in ai/sym/smoke.cpp */
//-----------------[referenced from ai/npc/curly.cpp]----------------//
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
================================================
FILE: ai/npc/curly_ai.cpp
================================================
#include "../stdai.h"
#include "curly_ai.fdh"
#define CAI_INIT 20 // ANP'd to this by the entry script in Lab M
#define CAI_START 21 // ANP'd to this by Almond script
#define CAI_RUNNING 22
#define CAI_KNOCKEDOUT 40 // knocked out at beginning of Almond battle
#define CAI_ACTIVE 99
INITFUNC(AIRoutines)
{
ONTICK(OBJ_CURLY_AI, ai_curly_ai);
ONTICK(OBJ_CAI_GUN, ai_cai_gun);
AFTERMOVE(OBJ_CAI_GUN, aftermove_cai_gun);
AFTERMOVE(OBJ_CAI_WATERSHIELD, aftermove_cai_watershield);
}
// curly that fights beside you
void ai_curly_ai(Object *o)
{
int xdist, ydist;
int xlimit;
char reached_p;
int otiley;
char seeking_player = 0;
char wantdir;
/*
debug("Curly Console");
debug("TGT: [%d,%d] %d", o->xmark>>CSF, o->ymark>>CSF, game.curlytarget.timeleft);
debug("State: %d", o->state);
debug("");
debug("RPT %d", o->curly.reachptimer);
debug("TJT %d", o->curly.tryjumptime);
debug("IJT %d:%d", o->curly.impjumptime, o->curly.impjump);
game.debug.god = 1;
if (inputs[DEBUGKEY7]) o->state=999;
*/
// put these here so she'll spawn the shield immediately, even while she's still
// knocked out. otherwise she wouldn't have it turned on in the cutscene if the
// player defeats the core before she gets up. I know that's unlikely but still.
if (!o->curly.spawned_watershield)
{
Object *shield = CreateObject(0, 0, OBJ_CAI_WATERSHIELD);
shield->sprite = SPR_WATER_SHIELD;
shield->linkedobject = o;
o->BringToFront(); // curly in front of monsters,
shield->BringToFront(); // and shield in front of curly
o->curly.spawned_watershield = 1;
}
switch(o->state)
{
case 0:
o->xinertia = 0;
o->yinertia += 0x20;
break;
case CAI_INIT: // set to this by an ANP in Maze M
o->x = player->x;
o->y = player->y;
case CAI_START: // set here after she stops being knocked out in Almond
{
o->invisible = 0;
o->xmark = o->x;
o->ymark = o->y;
o->dir = player->dir;
o->state = CAI_ACTIVE;
o->timer = 0;
// spawn her gun
Object *gun = CreateObject(0, 0, OBJ_CAI_GUN);
gun->linkedobject = o;
gun->PushBehind(o);
if (player->weapons[WPN_MGUN].hasWeapon)
o->curly.gunsprite = SPR_PSTAR;
else
o->curly.gunsprite = SPR_MGUN;
}
break;
case CAI_KNOCKEDOUT:
{
o->timer = 0;
o->state = CAI_KNOCKEDOUT+1;
o->frame = 15;
}
case CAI_KNOCKEDOUT+1:
{
if (++o->timer > 1000)
{ // start fighting
o->state = CAI_START;
}
else if (o->timer > 750)
{ // stand up
o->flags &= ~FLAG_SCRIPTONACTIVATE;
o->frame = 0;
}
}
break;
}
if (o->state != CAI_ACTIVE) return;
// first figure out where our target is
// hack in case player REALLY leaves her behind. this works because of the way
// the level is in a Z shape. first we check to see if the player is on the level below ours.
if ((player->y > o->y && ((player->y - o->y) > 160<state==999)
{
// if we're on the top section, head all the way to right, else if we're on the
// middle section, head for the trap door that was destroyed by the button
otiley = (o->y >> CSF) / TILE_H;
game.curlytarget.timeleft = 0;
if (otiley < 22)
{
o->xmark = ((126 * TILE_W) + 8) << CSF; // center of big chute on right top
}
else if (otiley > 36 && otiley < 47)
{ // fell down chute in center of middle section
// continue down chute, don't get hung up on sides
o->xmark = (26 * TILE_W) << CSF;
}
else if (otiley >= 47)
{ // bottom section - head for exit door
// (this shouldn't ever execute, though, because player can't be lower than this)
o->xmark = (81 * TILE_W) << CSF;
seeking_player = 1; // stop when reach exit door
}
else
{ // on middle section
o->xmark = ((7 * TILE_W) + 8) << CSF; // trap door which was destroyed by switch
}
o->ymark = o->y;
}
else
{
// if we get real far away from the player leave the enemies alone and come find him
if (!pdistlx(160<xmark = game.curlytarget.x;
o->ymark = game.curlytarget.y;
game.curlytarget.timeleft--;
if (game.curlytarget.timeleft==60 && random(0, 2)==0) CaiJUMP(o);
}
else
{
o->xmark = player->x;
o->ymark = player->y;
seeking_player = 1;
}
}
// do not fall off the middle railing in Almond
if (game.curmap == STAGE_ALMOND)
{
#define END_OF_RAILING (((72*TILE_W)-8)<xmark > END_OF_RAILING)
{
o->xmark = END_OF_RAILING;
}
}
// calculate distance to target
xdist = abs(o->x - o->xmark);
ydist = abs(o->y - o->ymark);
// face target. I used two seperate IF statements so she doesn't freak out at start point
// when her x == xmark.
if (o->x < o->xmark) wantdir = RIGHT;
if (o->x > o->xmark) wantdir = LEFT;
if (wantdir != o->dir)
{
if (++o->curly.changedirtimer > 4)
{
o->curly.changedirtimer = 0;
o->dir = wantdir;
}
}
else o->curly.changedirtimer = 0;
// if trying to return to the player then go into a rest state when we've reached him
reached_p = 0;
if (seeking_player && xdist < (32<curly.reachptimer > 80)
{
o->xinertia *= 7;
o->xinertia /= 8;
o->frame = 0;
reached_p = 1;
}
}
else o->curly.reachptimer = 0;
if (!reached_p) // if not at rest walk towards target
{
// walking animation
if (++o->animtimer > 4)
{
o->animtimer = 0;
if (++o->animframe > 3) o->animframe = 0;
}
// walk towards target
if (o->x > o->xmark) o->xinertia -= 0x20;
if (o->x < o->xmark) o->xinertia += 0x20;
o->frame = o->animframe;
// jump if we hit a wall
if ((o->blockr && o->xinertia > 0) || (o->blockl && o->xinertia < 0))
{
if (++o->curly.blockedtime > 8)
{
CaiJUMP(o);
}
}
else o->curly.blockedtime = 0;
// if our target gets really far away (like p is leaving us behind) and
// the above jumping isn't getting us anywhere, activate the Improbable Jump
if ((o->blockl || o->blockr) && xdist > (80<curly.impjumptime > 60)
{
if (o->blockd)
{
CaiJUMP(o);
o->curly.impjumptime = -100;
o->curly.impjump = 1;
}
}
}
else o->curly.impjumptime = 0;
// if we're below the target try jumping around randomly
if (o->y > o->ymark && (o->y - o->ymark) > (16<curly.tryjumptime > 20)
{
o->curly.tryjumptime = 0;
if (random(0, 1)) CaiJUMP(o);
}
}
else o->curly.tryjumptime = 0;
}
else o->animtimer = o->animframe = 0; // reset walk anim
// force jump/fall frames
if (o->yinertia < 0) o->frame = 3;
else if (!o->blockd) o->frame = 1;
else if (o->x==o->xmark) o->frame = 0;
// the improbable jump - when AI gets confused, just cheat!
// jump REALLY high by reducing gravity until we clear the wall
if (o->curly.impjump > 0)
{
o->yinertia += 0x10;
// deactivate Improbable Jump once we clear the wall or hit the ground
if (o->dir==LEFT && !o->blockl) o->curly.impjump--;
if (o->dir==RIGHT && !o->blockr) o->curly.impjump--;
if (o->yinertia > 0 && o->blockd) o->curly.impjump--;
}
else o->yinertia += 0x33;
// slow down when we hit bricks
if (o->blockl || o->blockr)
{
// full stop if on ground, partial stop if in air
xlimit = o->blockd ? 0x000:0x180;
if (o->blockl)
{
if (o->xinertia < -xlimit) o->xinertia = -xlimit;
}
else if (o->xinertia > xlimit) // we don't have to test blockr because we already know one or the other is set and that it's not blockl
{
o->xinertia = xlimit;
}
}
// look up/down at target
o->curly.look = 0;
if (!reached_p || abs(o->y - player->y) > (48<y > o->ymark && ydist >= (12<= (80<curly.look = UP;
else if (o->y < o->ymark && !o->blockd && ydist >= (80<curly.look = DOWN;
}
if (o->curly.look == UP) o->frame += 4;
else if (o->curly.look == DOWN) o->frame += 8;
LIMITX(0x300);
LIMITY(0x5ff);
}
static void CaiJUMP(Object *o)
{
if (o->blockd && !o->blocku)
{
o->yinertia = random(-0x600, -0x300);
o->frame = 3;
sound(SND_PLAYER_JUMP);
}
}
/*
void c------------------------------() {}
*/
void ai_cai_gun(Object *o)
{
Object *curly = o->linkedobject;
Object *shot;
uchar fire;
int x, y, dir;
#define SMALLDIST (32 << CSF)
#define BIGDIST (160 << CSF)
if (!curly) { o->Delete(); return; }
o->frame = 0;
if (curly->curly.look)
{
o->sprite = (curly->curly.gunsprite + 1);
if (curly->curly.look==DOWN) o->frame = 1;
}
else
{
o->sprite = curly->curly.gunsprite;
}
if (game.curlytarget.timeleft)
{
// fire when we get close to the target
if (!curly->curly.look)
{ // firing LR-- fire when lined up vertically and close by horizontally
fire = ((abs(o->x - game.curlytarget.x) <= BIGDIST) && (abs(o->y - game.curlytarget.y) <= SMALLDIST));
}
else
{ // firing vertically-- fire when lined up horizontally and close by vertically
fire = ((abs(o->x - game.curlytarget.x) <= SMALLDIST) && (abs(o->y - game.curlytarget.y) <= BIGDIST));
}
if (fire)
{
// get coordinate of our action point
x = (o->ActionPointX() - o->DrawPointX());
y = (o->ActionPointY() - o->DrawPointY());
dir = curly->curly.look ? curly->curly.look : o->dir;
if (curly->curly.gunsprite==SPR_MGUN)
{ // she has the Machine Gun
if (!o->timer)
{
o->timer2 = random(2, 6); // no. shots to fire
o->timer = random(40, 50);
o->animtimer = 0;
}
if (o->timer2)
{ // create the MGun blast
if (!o->animtimer)
{
FireLevel23MGun(x, y, 2, dir);
o->animtimer = 5;
o->timer2--;
}
else o->animtimer--;
}
}
else
{ // she has the Polar Star
if (!o->timer)
{
o->timer = random(4, 16);
if (random(0, 10)==0) o->timer += random(20, 30);
// create the shot
shot = CreateObject(x, y, OBJ_POLAR_SHOT);
SetupBullet(shot, x, y, B_PSTAR_L3, dir);
}
}
}
}
if (o->timer) o->timer--;
}
void aftermove_cai_gun(Object *o)
{
Object *curly = o->linkedobject;
if (curly)
{
o->x = curly->ActionPointX();
o->y = curly->ActionPointY();
o->dir = curly->dir;
}
}
// curly's air bubble when she goes underwater
void aftermove_cai_watershield(Object *o)
{
Object *curly = o->linkedobject;
if (!curly)
{
o->Delete();
return;
}
static const Point cwp = { 8, 5 };
if (curly->GetAttributes(&cwp, 1, NULL) & TA_WATER)
{
o->invisible = false;
o->x = curly->x;
o->y = curly->y;
o->frame = (++o->timer & 2) ? 1 : 0;
}
else
{
o->invisible = true;
o->timer = o->frame = 0;
}
}
================================================
FILE: ai/npc/curly_ai.fdh
================================================
//hash:c172b805
//automatically generated by Makegen
/* located in ObjManager.cpp */
//----------------[referenced from ai/npc/curly_ai.cpp]--------------//
Object *CreateObject(int x, int y, int type);
/* located in p_arms.cpp */
//----------------[referenced from ai/npc/curly_ai.cpp]--------------//
void FireLevel23MGun(int x, int y, int level, int dir);
void SetupBullet(Object *shot, int x, int y, int btype, int dir);
/* located in ai/npc/curly_ai.cpp */
//----------------[referenced from ai/npc/curly_ai.cpp]--------------//
void ai_curly_ai(Object *o);
static void CaiJUMP(Object *o);
void ai_cai_gun(Object *o);
void aftermove_cai_gun(Object *o);
void aftermove_cai_watershield(Object *o);
/* located in sound/sound.cpp */
//----------------[referenced from ai/npc/curly_ai.cpp]--------------//
void sound(int snd);
/* located in common/misc.cpp */
//----------------[referenced from ai/npc/curly_ai.cpp]--------------//
int random(int min, int max);
================================================
FILE: ai/npc/misery.fdh
================================================
//hash:1c683b9c
//automatically generated by Makegen
/* located in ObjManager.cpp */
//-----------------[referenced from ai/npc/misery.cpp]---------------//
Object *CreateObject(int x, int y, int type);
/* located in map.cpp */
//-----------------[referenced from ai/npc/misery.cpp]---------------//
Object *FindObjectByID2(int id2);
/* located in trig.cpp */
//-----------------[referenced from ai/npc/misery.cpp]---------------//
void ThrowObject(Object *o, int destx, int desty, int rand_variance, int speed);
/* located in ai/ai.cpp */
//-----------------[referenced from ai/npc/misery.cpp]---------------//
bool DoTeleportIn(Object *o, int slowness);
void randblink(Object *o, int blinkframe, int blinktime, int prob);
/* located in ai/npc/misery.cpp */
//-----------------[referenced from ai/npc/misery.cpp]---------------//
void ai_misery_float(Object *o);
void ai_miserys_bubble(Object *o);
static Object *mbubble_find_target(void);
void ai_misery_stand(Object *o);
/* located in sound/sound.cpp */
//-----------------[referenced from ai/npc/misery.cpp]---------------//
void sound(int snd);
/* located in common/stat.cpp */
//-----------------[referenced from ai/npc/misery.cpp]---------------//
void stat(const char *fmt, ...);
void staterr(const char *fmt, ...);
/* located in common/misc.cpp */
//-----------------[referenced from ai/npc/misery.cpp]---------------//
int random(int min, int max);
================================================
FILE: ai/npc/misery_ai.cpp
================================================
#include "../stdai.h"
#include "misery.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_MISERY_FLOAT, ai_misery_float);
ONTICK(OBJ_MISERY_STAND, ai_misery_stand);
ONTICK(OBJ_MISERYS_BUBBLE, ai_miserys_bubble);
}
/*
void c------------------------------() {}
*/
// teleport in and float
void ai_misery_float(Object *o)
{
switch(o->state)
{
case 0:
o->state = 1;
o->x += (1 << CSF); // check Undead Core intro to prove this is correct
o->xmark = o->x;
o->ymark = o->y;
o->frame = 0;
o->timer = 0;
case 1:
if (DoTeleportIn(o, 1))
o->state = 10;
break;
case 10: // floating
o->state = 11;
o->timer = 0;
o->animframe = 0;
o->yinertia = (1<y > o->ymark) o->yinertia -= 16;
if (o->y < o->ymark) o->yinertia += 16;
if (o->yinertia > 0x100) o->yinertia = 0x100;
if (o->yinertia < -0x100) o->yinertia = -0x100;
break;
case 13: // fall from floaty
o->frame = 1;
o->flags &= ~FLAG_IGNORE_SOLID;
o->yinertia += 0x40;
if (o->yinertia > 0x5ff) o->yinertia = 0x5ff;
if (o->blockd)
{
sound(SND_THUD);
o->yinertia = 0;
o->state = 14;
o->flags |= FLAG_IGNORE_SOLID;
o->animframe = 2;
o->animtimer = 30; // blink as soon as hit ground
}
break;
case 14: break; // standing
// spawn the bubble which picks up Toroko in Shack
case 15:
o->frame = 4;
o->timer = 0;
o->state = 16;
case 16:
{
o->timer++;
if (o->timer == 30)
{
sound(SND_BUBBLE);
CreateObject(o->x, o->y - (16 << CSF), OBJ_MISERYS_BUBBLE);
}
if (o->timer >= 50)
o->state = 14;
}
break;
case 20: // fly away
o->state = 21;
o->frame = 0;
o->yinertia = 0;
o->flags |= FLAG_IGNORE_SOLID;
case 21:
o->yinertia -= 0x20;
if (o->y < -0x1000) o->Delete();
break;
case 25: // big spell
case 26: // she flashes, then a clap of thunder
ai_misery_stand(o);
break;
case 27: // return to standing after lightning strike
if (++o->timer > 16)
o->state = 14;
break;
}
if (o->state==11 || o->state==14)
{
// blink
if (o->animtimer)
{
o->animtimer--;
o->frame = 1;
}
else
{
o->frame = 0;
if (random(0, 100) == 1)
{
o->animtimer = 30;
}
}
o->frame += o->animframe;
}
}
void ai_miserys_bubble(Object *o)
{
Object *target;
switch(o->state)
{
case 0:
{
// find the Toroko object we are to home in on
target = mbubble_find_target();
if (!target)
{
o->state = 9999;
return;
}
o->xmark = target->x - (6 << CSF);
o->ymark = target->y - (6 << CSF);
ThrowObject(o, o->xmark, o->ymark, 0, (2 << CSF));
o->state = 1;
// correct values: 0x3F0, 0xAE
stat("Computed toss values xi: 0x%x, 0x%x", o->xinertia, o->yinertia);
stat("Target x/y: 0x%x, 0x%x", target->x, target->y);
}
case 1:
ANIMATE(1, 0, 1);
if (abs(o->x - o->xmark) <= (3 << CSF) && \
abs(o->y - o->ymark) <= (3 << CSF))
{
o->state = 2;
o->frame = 2;
sound(SND_BUBBLE);
if ((target = mbubble_find_target()))
target->invisible = true;
}
break;
case 2:
{
ANIMATE(1, 2, 3);
o->xinertia -= 0x20;
o->yinertia -= 0x20;
LIMITX(0x5FF);
LIMITY(0x5FF);
if (o->y < -1000)
o->Delete();
}
break;
}
}
static Object *mbubble_find_target(void)
{
Object *target = FindObjectByID2(1000);
if (!target)
{
staterr("ai_miserys_bubble: failed to find a target object with ID2=1000");
return NULL;
}
return target;
}
/*
void c------------------------------() {}
*/
void ai_misery_stand(Object *o)
{
switch(o->state)
{
case 0:
o->state = 1;
case 1:
o->frame = 2;
randblink(o, 3, 4);
break;
case 20: // she flys away
o->state = 21;
o->frame = 0;
o->yinertia = 0;
o->flags |= FLAG_IGNORE_SOLID;
case 21:
o->yinertia -= 0x20;
if (o->y < -0x1000) o->Delete();
break;
// big spell
// she flashes, then a clap of thunder,
// and she teleports away.
case 25:
o->state = 26;
o->timer = 0;
o->frame = 5;
o->animtimer = 0;
case 26:
ANIMATE(0, 5, 7);
if (++o->timer == 20)
{
sound(SND_LIGHTNING_STRIKE);
flashscreen.Start();
o->state = 27;
o->timer = 0;
o->frame = 4;
}
break;
case 27:
{
if (++o->timer > 50)
{ // return to standing
o->state = 0;
}
}
break;
case 30: // she throws up her staff like she's summoning something
o->timer = 0;
o->state++;
o->frame = 2;
case 31:
if (o->timer==10) o->frame = 4;
if (o->timer==130) o->state = 1;
o->timer++;
break;
// fire at DOCTOR_GHOST
case 40:
{
o->state = 41;
o->timer = 0;
o->frame = 4;
}
case 41:
{
o->timer++;
if (o->timer == 30 || \
o->timer == 40 || \
o->timer == 50)
{
Object *shot = CreateObject(o->x+(16<y, OBJ_IGOR_SHOT);
shot->xinertia = 0x600;
shot->yinertia = random(-0x200, 0);
sound(SND_SNAKE_FIRE);
}
if (o->timer > 50)
o->state = 0;
}
break;
}
}
================================================
FILE: ai/npc/npcguest.cpp
================================================
#include "../stdai.h"
#include "npcguest.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_MAHIN, ai_npc_mahin);
ONSPAWN(OBJ_YAMASHITA_FLOWERS, onspawn_set_frame_from_id2);
ONTICK(OBJ_YAMASHITA_PAVILION, ai_yamashita_pavilion);
ONTICK(OBJ_CHTHULU, ai_chthulu);
GENERIC_NPC_NOFACEPLAYER(OBJ_DR_GERO);
GENERIC_NPC_NOFACEPLAYER(OBJ_NURSE_HASUMI);
}
/*
void c------------------------------() {}
*/
void ai_chthulu(Object *o)
{
if (!o->state)
{
o->SnapToGround();
o->state = 1;
}
// open eyes when player comes near
o->frame = (pdistlx((48<state)
{
case 0:
o->SnapToGround();
o->state = 1;
o->frame = 2;
case 1: // facing away
break;
case 2: // talking to player
o->frame = 0;
randblink(o);
break;
}
}
/*
void c------------------------------() {}
*/
// Sandaime's Pavilion from Yamashita Farm
void ai_yamashita_pavilion(Object *o)
{
if (!o->state)
{
if (o->dir == LEFT)
{ // Sandaime present
o->state = 1;
}
else
{ // Sandaime gone
o->x -= (TILE_W << CSF);
o->state = 2;
o->frame = 2;
}
}
if (o->state == 1)
{
o->frame = 0;
randblink(o);
}
}
================================================
FILE: ai/npc/npcguest.fdh
================================================
//hash:156aa096
//automatically generated by Makegen
/* located in ai/ai.cpp */
//----------------[referenced from ai/npc/npcguest.cpp]--------------//
void randblink(Object *o, int blinkframe, int blinktime, int prob);
/* located in ai/npc/npcguest.cpp */
//----------------[referenced from ai/npc/npcguest.cpp]--------------//
void ai_chthulu(Object *o);
void ai_npc_mahin(Object *o);
void ai_yamashita_pavilion(Object *o);
================================================
FILE: ai/npc/npcplayer.cpp
================================================
#include "../stdai.h"
#include "npcplayer.fdh"
/*
This is an object which looks exactly like the player,
but is controlled as if he is an NPC. Used during cutscenes.
*/
INITFUNC(AIRoutines)
{
ONTICK(OBJ_NPC_PLAYER, ai_npc_player);
ONTICK(OBJ_PTELIN, ai_ptelin);
ONTICK(OBJ_PTELOUT, ai_ptelout);
}
/*
void c------------------------------() {}
*/
void ai_npc_player(Object *o)
{
static const int pwalkanimframes[] = { 0, 1, 0, 2 };
#define NUM_PWALK_FRAMES 4
switch(o->state)
{
case 0:
{
o->frame = 0;
o->xinertia = 0;
// used during Hermit Gunsmith scene when he is awake
if (o->dirparam >= 10)
{
o->x = player->x;
o->y = player->y;
o->dir = CVTDir(o->dirparam - 10);
o->dirparam = 0;
}
}
break;
case 2: // looking up
{
o->frame = 3;
}
break;
case 10: // he gets flattened
{
sound(SND_LITTLE_CRASH);
SmokeClouds(o, 6, 8, 8);
o->state++;
}
case 11:
{
o->frame = 9;
}
break;
case 20: // he teleports away
{
if (DoTeleportOut(o, 2))
o->Delete();
}
break;
case 50: // walking
{
// z-order tweaking for oside bad-ending
Object *dragon = Objects::FindByType(OBJ_SKY_DRAGON);
if (dragon) o->PushBehind(dragon);
o->state = 51;
o->animframe = 0;
o->animtimer = 0;
}
case 51:
{
o->animate_seq(4, pwalkanimframes, NUM_PWALK_FRAMES);
XMOVE(0x200);
}
break;
// falling, upside-down (from good ending; Fall stage)
case 60:
{
o->state = 61;
o->frame = 10;
o->xmark = o->x;
o->ymark = o->y;
}
case 61:
{
o->ymark += 0x100;
o->x = o->xmark + (random(-1, 1) << CSF);
o->y = o->ymark + (random(-1, 1) << CSF);
}
break;
case 80: // face away
o->frame = 11;
break;
// walking in place during credits
case 99:
case 100:
{
o->state = 101;
o->frame = 1;
o->animtimer = 0;
if ((player->equipmask & EQUIP_MIMIGA_MASK) || game.flags[1020])
o->sprite = SPR_MYCHAR_MIMIGA;
}
case 101: // falling a short dist
case 102: // walk in place
{
if (!o->blockd)
{
o->yinertia += 0x40;
LIMITY(0x5ff);
}
else
{
o->yinertia = 0;
o->animate_seq(8, pwalkanimframes, NUM_PWALK_FRAMES);
}
}
break;
}
}
/*
void c------------------------------() {}
*/
// player (teleporting in)
void ai_ptelin(Object *o)
{
switch(o->state)
{
case 0:
{
o->flags &= ~FLAG_IGNORE_SOLID;
o->frame = 0;
o->timer = 0;
o->x += (TILE_W << CSF);
o->y += (TILE_H / 2) << CSF;
o->state++;
// note, it looks sort of like we might be supposed to face left when
// appearing at the Labyrinth teleporter as well, but the original engine
// does not do this, so I'm following what it does.
if (game.curmap == STAGE_SAND)
o->dir = LEFT; // for Sand Zone, hackety
}
case 1:
{
if (DoTeleportIn(o, 2))
{
o->timer = 0;
o->state = 2;
}
}
break;
case 2:
{
if (++o->timer > 20)
{
o->yinertia += 0x40;
o->frame = 1;
o->state = 3;
}
}
break;
case 3:
{
o->yinertia += 0x40;
if (o->blockd)
{
o->frame = 0;
o->state = 4;
}
}
}
}
// player (teleporting out)
void ai_ptelout(Object *o)
{
switch(o->state)
{
case 0:
{
o->y -= (TILE_H << CSF);
o->ymark = o->y - (8 << CSF);
o->frame = 0;
o->timer = 0;
o->state = 1;
}
break;
case 1:
{
if (++o->timer > 20)
{
o->state = 2;
o->frame = 1;
o->timer = 0;
o->yinertia = -0x2FF;
}
}
break;
case 2:
{
if (o->yinertia >= 0 && o->y >= o->ymark)
{
o->y = o->ymark;
o->yinertia = 0;
o->state = 3;
o->frame = 0;
o->timer = 0;
}
}
break;
case 3:
{
if (++o->timer > 40)
{
o->state = 4;
o->timer = 0;
}
}
break;
case 4:
{
if (DoTeleportOut(o, 2))
o->Delete();
}
break;
}
if (o->state < 3)
o->yinertia += 50;
LIMITY(0x5ff);
}
================================================
FILE: ai/npc/npcplayer.fdh
================================================
//hash:6572894a
//automatically generated by Makegen
/* located in tsc.cpp */
//---------------[referenced from ai/npc/npcplayer.cpp]--------------//
int CVTDir(int csdir);
/* located in ai/ai.cpp */
//---------------[referenced from ai/npc/npcplayer.cpp]--------------//
bool DoTeleportOut(Object *o, int slowness);
bool DoTeleportIn(Object *o, int slowness);
/* located in ai/npc/npcplayer.cpp */
//---------------[referenced from ai/npc/npcplayer.cpp]--------------//
void ai_npc_player(Object *o);
void ai_ptelin(Object *o);
void ai_ptelout(Object *o);
/* located in ai/sym/smoke.cpp */
//---------------[referenced from ai/npc/npcplayer.cpp]--------------//
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in sound/sound.cpp */
//---------------[referenced from ai/npc/npcplayer.cpp]--------------//
void sound(int snd);
/* located in common/misc.cpp */
//---------------[referenced from ai/npc/npcplayer.cpp]--------------//
int random(int min, int max);
================================================
FILE: ai/npc/npcregu.cpp
================================================
#include "../stdai.h"
#include "../final_battle/doctor.h" // for Red Crystal variables (Sue)
#include "npcregu.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_KAZUMA_AT_COMPUTER, ai_npc_at_computer);
ONTICK(OBJ_SUE_AT_COMPUTER, ai_npc_at_computer);
ONTICK(OBJ_JENKA, ai_jenka);
ONTICK(OBJ_BLUE_ROBOT, ai_blue_robot);
ONTICK(OBJ_DOCTOR, ai_doctor);
ONTICK(OBJ_TOROKO, ai_toroko);
ONTICK(OBJ_TOROKO_TELEPORT_IN, ai_toroko_teleport_in);
ONTICK(OBJ_SUE, ai_npc_sue);
AFTERMOVE(OBJ_SUE, aftermove_npc_sue);
ONSPAWN(OBJ_SUE, onspawn_npc_sue);
ONTICK(OBJ_SUE_TELEPORT_IN, ai_sue_teleport_in);
ONTICK(OBJ_KING, ai_king);
AFTERMOVE(OBJ_KINGS_SWORD, aftermove_StickToLinkedActionPoint);
ONTICK(OBJ_KANPACHI_FISHING, ai_kanpachi_fishing);
ONTICK(OBJ_PROFESSOR_BOOSTER, ai_professor_booster);
ONTICK(OBJ_BOOSTER_FALLING, ai_booster_falling);
GENERIC_NPC(OBJ_SANTA);
GENERIC_NPC(OBJ_CHACO);
GENERIC_NPC(OBJ_JACK);
GENERIC_NPC_NOFACEPLAYER(OBJ_KAZUMA);
}
/*
void c------------------------------() {}
*/
void ai_jenka(Object *o)
{
switch(o->state)
{
case 0: o->state = 1; o->frame = 0;
case 1: if (random(0, 120) < 10) { o->state = 2; o->timer = 0; o->frame = 1; } break;
case 2: if (++o->timer > 8) { o->state = 1; o->frame = 0; } break;
}
}
void ai_doctor(Object *o)
{
switch(o->state)
{
case 10: // he chuckles
o->state = 11;
o->timer2 = 0;
o->frame = 1;
o->animtimer = 0;
case 11:
ANIMATE(6, 0, 1);
if (++o->timer2 > 8*6) { o->frame = 0; o->state = 1; }
break;
case 20: // he rises up and hovers
{
o->state = 21;
o->timer = 0;
o->frame = 2;
o->ymark = o->y - (32 << CSF);
}
case 21:
{
o->yinertia += (o->y > o->ymark) ? -0x20 : 0x20;
LIMITY(0x200);
}
break;
case 30: // he teleports away
{
o->timer = 0;
o->frame = 2;
o->yinertia = 0;
o->state++;
}
case 31:
{
if (DoTeleportOut(o, 1))
o->Delete();
}
break;
case 40: // he teleports in and hovers
{
o->timer = 0;
o->state = 41;
o->frame = 2;
}
case 41:
{
if (DoTeleportIn(o, 1))
{
o->state = 20;
o->yinertia = -0x200;
}
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_toroko(Object *o)
{
switch(o->state)
{
case 0: // stand and blink
o->frame = 0;
o->xinertia = 0;
randblink(o, 1, 4);
break;
case 3: // run away!!
o->state = 4;
o->frame = 1;
o->animtimer = 0;
case 4:
ANIMATE(2, 1, 4);
if (o->blockl) { o->dir = RIGHT; o->xinertia = 0x200; }
if (o->blockr) { o->dir = LEFT; o->xinertia = -0x200; }
XMOVE(0x400);
break;
case 6: // hop and run away!!
o->state = 7;
o->frame = 1;
o->animtimer = 0;
o->yinertia = -0x400;
o->toro.left_ground = false;
case 7:
ANIMATE(2, 1, 4);
XMOVE(0x100);
if (!o->toro.left_ground)
{
if (!o->blockd)
o->toro.left_ground = true;
}
else
{
if (o->blockd)
{
o->toro.left_ground = false;
o->state = 3;
}
}
break;
// small hop straight up/down from Balrog
// shaking the ground, used in Shack
case 8:
o->frame = 1;
o->timer = 0;
o->state = 9;
o->yinertia = -0x200;
o->toro.left_ground = false;
case 9:
{
if (!o->toro.left_ground)
{
if (!o->blockd)
o->toro.left_ground = true;
}
else
{
if (o->blockd)
{
o->toro.left_ground = false;
o->state = 0;
}
}
}
break;
case 10: // eeks and falls down
o->state = 11;
o->frame = 5;
o->yinertia = -(2 << CSF);
sound(SND_ENEMY_SQUEAK);
XMOVE(0x100);
break;
case 11: // falling down
if (o->blockd)
{
o->state = 12;
o->frame = 6;
o->flags |= FLAG_SCRIPTONACTIVATE;
o->xinertia = 0;
}
break;
}
o->yinertia += 0x40;
LIMITX(0x400);
LIMITY(0x5ff);
}
void ai_toroko_teleport_in(Object *o)
{
switch(o->state)
{
case 0:
{
o->state = 1;
o->timer = 0;
o->flags &= ~FLAG_IGNORE_SOLID; // this is set in npc.tbl, but uh, why?
}
case 1:
{
if (DoTeleportIn(o, 2))
{
o->frame = 1;
o->state = 2;
o->animtimer = 0;
}
}
break;
case 2:
ANIMATE(2, 1, 4);
if (o->blockd)
{
o->state = 4;
o->frame = 6; // tripping frame
sound(SND_THUD);
}
break;
case 4: break; // knocked out
}
// fall unless teleporting
if (o->state >= 2)
{
o->yinertia += 0x20;
LIMITY(0x5ff);
}
}
/*
void c------------------------------() {}
*/
void ai_npc_sue(Object *o)
{
switch(o->state)
{
case 0: // stand and blink
o->timer = 0;
o->frame = 0;
o->xinertia = 0;
o->sue.carried_by = NULL;
randblink(o, 1, 4);
break;
case 3: // walking
case 4: // walking
case 5: // face away
ai_generic_npc(o);
break;
// got punched by Igor
case 6:
o->state = 7;
o->frame = 7;
o->timer = 0;
sound(SND_ENEMY_SQUEAK);
case 7:
if (++o->timer > 10)
o->state = 0;
break;
// got punched extra hard by Igor
// flys through air backwards and crashes
case 8:
o->state = 9;
o->frame = 7;
o->timer = 0;
sound(SND_ENEMY_SQUEAK);
o->yinertia = -0x200;
XMOVE(-0x400);
case 9:
if (++o->timer > 3 && o->blockd)
{
o->state = 10;
o->dir ^= 1;
}
break;
case 10:
o->xinertia = 0;
o->frame = 8;
break;
// punching the air (when she tells Igor "I'm not afraid of you!")
case 11:
o->state = 12;
o->timer = 0;
o->animframe = 0;
o->animtimer = 0;
case 12:
{
const static int punchframes[] = { 10, 0 };
o->animate_seq(8, punchframes, 2);
}
break;
// picked up & carried away by Igor
case 13:
o->frame = 11;
o->xinertia = 0;
o->yinertia = 0;
o->state = 14;
// find Igor
o->sue.carried_by = FindObjectByID2(501);
if (!o->sue.carried_by)
staterr("-- Could not find entity carrying Sue (ID 501)");
case 14: // being carried--see aftermove routine
o->frame = 9;
break;
// spawn red crystal and call it to us (Undead Core intro)
case 15:
{
o->PushBehind(dr_create_red_crystal(o->x+(128<y));
o->state = 16;
o->xinertia = 0;
o->frame = 0;
}
case 16:
{
crystal_xmark = o->x - (18<y - (8<xinertia = 0;
o->frame = 12;
crystal_xmark = o->x;
crystal_ymark = o->y - (8<state = 21;
o->frame = 2;
o->animtimer = 0;
}
case 21:
{
ANIMATE(2, 2, 5);
XMOVE(0x400);
if (o->x < player->x - (8<dir = RIGHT;
o->state = 0;
}
}
break;
// run, during "we've got to get out of here" post-undead core cutscene.
case 30:
{
o->state = 31;
o->frame = 2;
o->animtimer = 0;
}
case 31:
{
ANIMATE(2, 2, 5);
XMOVE(0x400);
}
break;
case 40: // she jumps off the island
{
o->state = 41;
o->frame = 9;
o->yinertia = -0x400;
}
break;
/*default:
staterr("-- Sue entered unhandled state %d (0x%02x)", o->state, o->state);
exit(1);*/
}
o->yinertia += 0x40;
LIMITX(0x400);
LIMITY(0x5ff);
}
void aftermove_npc_sue(Object *o)
{
// for being carried by igor
if (o->sue.carried_by)
{
Object *link = o->sue.carried_by;
o->x = ((link->x >> CSF) + sprites[link->sprite].frame[link->frame].dir[link->dir].actionpoint2.x) << CSF;
o->y = ((link->y >> CSF) + sprites[link->sprite].frame[link->frame].dir[link->dir].actionpoint2.y) << CSF;
o->dir = (link->dir ^ 1);
}
}
void onspawn_npc_sue(Object *o)
{
// fix a short falling glitch in Arthur's House cutscene
// after Egg Corridor.
// when we are SnapToGround();
}
void ai_sue_teleport_in(Object *o)
{
switch(o->state)
{
case 0:
{
o->x += (6 << CSF);
//o->PushBehind(OBJ_MISERY_STAND);
o->timer = 0;
o->state = 1;
o->frame = 9; // her "hanging on a hook" frame
}
case 1:
{
if (DoTeleportIn(o, 2))
{
o->state = 2;
o->timer = 0;
}
}
break;
case 2:
{
if (o->blockd)
{
o->frame = 13; // crumpled
o->state = 3;
o->timer = 0;
sound(SND_THUD);
}
}
break;
}
// fall unless teleporting
if (o->state >= 2)
{
o->yinertia += 0x20;
LIMITY(0x5ff);
}
}
/*
void c------------------------------() {}
*/
void ai_king(Object *o)
{
Object *sword = o->linkedobject;
switch(o->state)
{
case 0:
o->frame = 0; randblink(o, 1, 8);
o->xinertia = o->yinertia = 0;
break;
case 5: // he is knocked out
o->frame = 3;
o->xinertia = 0;
break;
case 6: // hop in air then fall and knocked out
o->state = 7;
o->timer = 0;
o->yinertia = -0x400;
case 7: // he falls and is knocked out
o->frame = 2;
XMOVE(0x200);
o->yinertia += 0x40;
if (o->timer++)
{
if (o->blockd)
{
o->state = 5;
}
}
break;
case 8: // walking
o->state = 9;
o->frame = 4;
o->animtimer = 0;
case 9:
ANIMATE(3, 4, 7);
XMOVE(0x200);
break;
case 10: // run
o->state = 11;
o->frame = 4;
o->animtimer = 0;
case 11:
ANIMATE(2, 4, 7);
XMOVE(0x400);
break;
case 20: // pull out sword
if (!sword)
{
sword = CreateObject(0, 0, OBJ_KINGS_SWORD);
sword->linkedobject = o;
o->linkedobject = sword;
}
o->frame = 0;
o->state = 0;
break;
case 30: // he goes flying in spec'd direction and smacks wall
o->state = 31;
o->timer = 0;
o->frame = 2;
XMOVE(0x600);
o->yinertia = 0;
o->nxflags &= ~NXFLAG_FOLLOW_SLOPE; // necessary to keep him from going down slope...
case 31:
if (o->blockl)
{
o->dir = RIGHT;
o->state = 7;
o->timer = 0;
o->yinertia = -0x400;
o->xinertia = 0x200;
sound(SND_LITTLE_CRASH);
SmokeClouds(o, 4, 8, 8);
o->nxflags |= NXFLAG_FOLLOW_SLOPE;
}
break;
case 40: // he flickers away and is replaced by the Blade
o->state = 41;
o->timer = 0;
case 41:
o->invisible ^= 1;
if (++o->timer > 100)
{
SmokeClouds(o, 4, 8, 8);
o->state = 42;
o->sprite = SPR_BLADE;
o->frame = o->yinertia = o->invisible = 0;
}
break;
case 42: break;
case 60: // jump (used when he lunges with sword)
o->frame = 6;
o->state = 61;
o->yinertia = -0x5FF;
o->xinertia = 0x400;
if (sword) sword->carry.flip = 1;
break;
case 61: // jumping
o->yinertia += 0x80;
if (o->blockd)
{
o->state = 0;
o->xinertia = 0;
if (sword) sword->carry.flip = 0;
}
break;
}
LIMITX(0x400);
LIMITY(0x5FF);
}
/*
void c------------------------------() {}
*/
void ai_blue_robot(Object *o)
{
o->frame = 0;
randblink(o, 1, 4);
o->yinertia += 0x40;
LIMITY(0x5ff);
}
void ai_kanpachi_fishing(Object *o)
{
if (!o->state)
{
o->SnapToGround();
o->state = 1;
}
// open eyes when player comes near
o->frame = (pdistlx((64<state)
{
case 0:
o->state = 1;
o->timer = 0;
o->xinertia = o->yinertia = 0;
o->nxflags |= NXFLAG_FOLLOW_SLOPE;
case 1:
o->frame = 0;
randblink(o, 1, 8, 120);
break;
case 30: // teleporting in at Shelter
{
o->frame = 0;
sound(SND_TELEPORT);
// move into middle of teleporter
o->x -= (TILE_W << CSF);
o->y += (TILE_H / 2) << CSF;
o->state++;
o->timer = 0;
}
case 31: // teleporting-in animation
{
if (DoTeleportIn(o, 2))
{
o->state++;
o->timer = 0;
}
}
break;
case 32: // wait before hop out of teleporter
{
if (++o->timer > 20)
{
o->state++;
o->frame = 1;
}
}
break;
case 33: // hopping out of teleporter
{
if (o->blockd)
{
o->state++;
o->timer = 0;
o->frame = 0;
}
}
break;
default:
ai_generic_npc(o);
break;
}
// no fall when teleporting in
if (o->state != 31 && o->state != 32)
o->yinertia += 0x40;
}
void ai_booster_falling(Object *o)
{
switch(o->state)
{
case 0: // sitting on ground after fall
o->frame = 7;
break;
case 10: // falling
{
o->frame = 8;
o->yinertia += 0x40;
LIMITY(0x5ff);
}
break;
case 20: // dying (flickering away)
{
sound(SND_TELEPORT);
o->state = 21;
o->timer = 0;
}
case 21:
{
o->invisible ^= 1;
if (++o->timer > 100)
{
SmokeClouds(o, 4, 16, 16);
o->Delete();
}
}
break;
}
}
/*
void c------------------------------() {}
*/
// shared between OBJ_KAZUMA_AT_COMPUTER and OBJ_SUE_AT_COMPUTER
void ai_npc_at_computer(Object *o)
{
enum { INIT=0, TYPING, PAUSE_SLOUCH, PAUSE_UPRIGHT };
switch(o->state)
{
case 0:
o->SnapToGround();
o->state = TYPING;
o->frame = 0;
case TYPING:
{
ANIMATE(2, 0, 1);
if (!random(0, 80))
{
o->state = PAUSE_SLOUCH;
o->frame = 1;
o->timer = 0;
}
else if (!random(0, 120))
{
o->state = PAUSE_UPRIGHT;
o->frame = 2;
o->timer = 0;
}
}
break;
case PAUSE_SLOUCH:
{
if (++o->timer > 40)
{
o->state = PAUSE_UPRIGHT;
o->frame = 2;
o->timer = 0;
}
}
break;
case PAUSE_UPRIGHT:
{
if (++o->timer > 80)
{
o->state = TYPING;
o->frame = 0;
o->timer = 0;
}
}
break;
}
}
/*
void c------------------------------() {}
*/
void onspawn_generic_npc(Object *o)
{
// these exceptions are because the Balcony helicopter has a state
// which lets them ride in it and executing this messes it up.
if (o->type != OBJ_SANTA && o->type != OBJ_CHACO)
{
o->SnapToGround();
}
}
void ai_generic_npc(Object *o)
{
if (o->state == 0)
{
FACEPLAYER;
}
ai_generic_npc_nofaceplayer(o);
}
void ai_generic_npc_nofaceplayer(Object *o)
{
switch(o->state)
{
case 0: // stand
{
o->nxflags |= NXFLAG_FOLLOW_SLOPE;
o->frame = 0;
o->xinertia = 0;
o->yinertia = 0;
randblink(o, 1, 8, 100);
}
break;
case 3: // walking
case 4:
npc_generic_walk(o, 3);
break;
case 5: // face away
o->frame = 6;
o->xinertia = 0;
break;
case 8: // walk (alternate state used by OBJ_NPC_JACK)
if (o->type == OBJ_JACK)
{
o->state = 3;
ai_generic_npc(o);
return;
}
break;
}
}
void npc_generic_walk(Object *o, int basestate)
{
if (o->state == basestate)
{
o->frame = 2;
o->animtimer = 0;
o->state++;
}
ANIMATE(3, 2, 5);
XMOVE(0x200);
}
================================================
FILE: ai/npc/npcregu.fdh
================================================
//hash:37dc1b77
//automatically generated by Makegen
/* located in ObjManager.cpp */
//----------------[referenced from ai/npc/npcregu.cpp]---------------//
Object *CreateObject(int x, int y, int type);
/* located in map.cpp */
//----------------[referenced from ai/npc/npcregu.cpp]---------------//
Object *FindObjectByID2(int id2);
/* located in ai/ai.cpp */
//----------------[referenced from ai/npc/npcregu.cpp]---------------//
bool DoTeleportOut(Object *o, int slowness);
bool DoTeleportIn(Object *o, int slowness);
void randblink(Object *o, int blinkframe, int blinktime, int prob);
/* located in ai/final_battle/doctor_common.cpp */
//----------------[referenced from ai/npc/npcregu.cpp]---------------//
Object *dr_create_red_crystal(int x, int y);
/* located in ai/npc/npcregu.cpp */
//----------------[referenced from ai/npc/npcregu.cpp]---------------//
void ai_jenka(Object *o);
void ai_doctor(Object *o);
void ai_toroko(Object *o);
void ai_toroko_teleport_in(Object *o);
void ai_npc_sue(Object *o);
void aftermove_npc_sue(Object *o);
void onspawn_npc_sue(Object *o);
void ai_sue_teleport_in(Object *o);
void ai_king(Object *o);
void ai_blue_robot(Object *o);
void ai_kanpachi_fishing(Object *o);
void ai_professor_booster(Object *o);
void ai_booster_falling(Object *o);
void ai_npc_at_computer(Object *o);
void onspawn_generic_npc(Object *o);
void ai_generic_npc(Object *o);
void ai_generic_npc_nofaceplayer(Object *o);
void npc_generic_walk(Object *o, int basestate);
/* located in ai/sym/smoke.cpp */
//----------------[referenced from ai/npc/npcregu.cpp]---------------//
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in sound/sound.cpp */
//----------------[referenced from ai/npc/npcregu.cpp]---------------//
void sound(int snd);
/* located in common/stat.cpp */
//----------------[referenced from ai/npc/npcregu.cpp]---------------//
void staterr(const char *fmt, ...);
/* located in common/misc.cpp */
//----------------[referenced from ai/npc/npcregu.cpp]---------------//
int random(int min, int max);
================================================
FILE: ai/oside/oside.cpp
================================================
#include "../stdai.h"
#include "../sand/sand.fdh"
#include "oside.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_SKY_DRAGON, ai_sky_dragon);
ONTICK(OBJ_SANDCROC_OSIDE, ai_sandcroc);
ONTICK(OBJ_NIGHT_SPIRIT, ai_night_spirit);
ONTICK(OBJ_NIGHT_SPIRIT_SHOT, ai_night_spirit_shot);
ONTICK(OBJ_HOPPY, ai_hoppy);
ONTICK(OBJ_PIXEL_CAT, ai_pixel_cat);
ONTICK(OBJ_LITTLE_FAMILY, ai_little_family);
}
/*
void c------------------------------() {}
*/
#define NS_WAIT 1
#define NS_SEEK_PLAYER 2
#define NS_PREPARE_FIRE 3
#define NS_FIRING 4
#define NS_RETURN_TO_SET_POINT 5
#define NS_GUARD_SET_POINT 6
void ai_night_spirit(Object *o)
{
//debug("ns state: %d", o->state);
switch(o->state)
{
case 0:
{
o->state = NS_WAIT;
o->nxflags |= NXFLAG_SLOW_WHEN_HURT;
o->invisible = true;
o->ymark = o->y + (12 << CSF);
}
case NS_WAIT:
{
if (pdistly((TILE_H / 2) << CSF))
{
static const int distance = (SCREEN_HEIGHT << CSF);
o->y += (o->dir == RIGHT) ? distance : -distance;
o->state = NS_SEEK_PLAYER;
o->timer = 0;
o->invisible = false;
o->yinertia = 0;
o->flags |= FLAG_SHOOTABLE;
}
}
break;
case NS_SEEK_PLAYER:
{
ANIMATE(2, 0, 2);
if (++o->timer > 200)
{
o->state = NS_PREPARE_FIRE;
o->timer = 0;
o->frame += 3;
}
}
break;
case NS_PREPARE_FIRE:
{
ANIMATE(2, 3, 5);
if (++o->timer > 50)
{
o->state = NS_FIRING;
o->timer = 0;
o->frame += 3;
}
}
break;
case NS_FIRING:
{
ANIMATE(2, 6, 8);
if ((++o->timer % 5) == 1)
{
Object *shot = SpawnObjectAtActionPoint(o, OBJ_NIGHT_SPIRIT_SHOT);
shot->xinertia = random(0x100, 0x600);
shot->yinertia = random(-0x200, 0x200);
sound(SND_BUBBLE);
}
if (o->timer > 50)
{
o->state = NS_SEEK_PLAYER;
o->timer = 0;
o->frame -= 6;
}
}
break;
case NS_RETURN_TO_SET_POINT:
{
ANIMATE(2, 3, 5);
// lie in wait at original set point
o->yinertia += (o->y > o->ymark) ? -0x40 : 0x40;
LIMITY(0x400);
if (abs(o->y - o->ymark) < (SCREEN_HEIGHT/2)<state = NS_GUARD_SET_POINT;
}
}
break;
case NS_GUARD_SET_POINT:
{
ANIMATE(2, 3, 5);
// lie in wait at original set point
o->yinertia += (o->y > o->ymark) ? -0x40 : 0x40;
LIMITY(0x400);
// and if player appears again...
if (pdistly(SCREEN_HEIGHT << CSF))
{ // ..jump out and fire immediately
o->state = NS_PREPARE_FIRE;
o->timer = 0;
}
}
break;
}
if (o->state >= NS_SEEK_PLAYER && o->state < NS_GUARD_SET_POINT)
{
// sinusoidal player seek
o->yinertia += (o->y < player->y) ? 0x19 : -0x19;
// rarely seen, but they do bounce off walls
if (o->blocku) o->yinertia = 0x200;
if (o->blockd) o->yinertia = -0x200;
//debugHline(o->ymark - (SCREEN_HEIGHT<y - o->ymark) > SCREEN_HEIGHT<state != NS_FIRING)
{
o->state = NS_RETURN_TO_SET_POINT;
}
}
}
LIMITY(0x400);
}
void ai_night_spirit_shot(Object *o)
{
ANIMATE(2, 0, 2);
o->xinertia -= 0x19;
if (o->xinertia >= 0)
{
o->flags |= FLAG_IGNORE_SOLID;
}
else
{
o->flags &= ~FLAG_IGNORE_SOLID;
if (o->blockl)
{
SmokeClouds(o, 4, 3, 3);
sound(SND_SHOT_HIT);
o->Delete();
}
}
}
/*
void c------------------------------() {}
*/
void ai_hoppy(Object *o)
{
switch(o->state)
{
case 0:
{
o->state = 1;
o->nxflags |= NXFLAG_FOLLOW_SLOPE;
}
case 1: // wait for player...
{
o->frame = 0;
if (pdistly(0x10000))
{
o->state = 2;
o->timer = 0;
o->frame = 1;
}
}
break;
case 2: // jump
{
o->timer++;
if (o->timer == 4)
o->frame = 2;
if (o->timer > 12)
{
o->state = 3;
o->frame = 3;
sound(SND_HOPPY_JUMP);
o->xinertia = 0x700;
}
}
break;
case 3: // in air...
{
if (o->y < player->y) o->yinertia = 0xAA;
else if (o->y > player->y) o->yinertia = -0xAA;
if (o->blockl)
{
// don't stop if all of the blockl's are just touching slope
bool stop = false;
for(int i=0;isprite].block_l.count;i++)
{
uint32_t attr = o->GetAttributes(&sprites[o->sprite].block_l[i], 1, NULL);
if (!(attr & TA_SLOPE))
{
stop = true;
break;
}
}
if (stop)
{
o->xinertia = 0;
o->yinertia = 0;
o->state = 4;
o->frame = 2;
o->timer = 0;
}
}
}
break;
case 4:
{
o->timer++;
if (o->timer == 2) o->frame = 1;
if (o->timer == 6) o->frame = 0;
if (o->timer > 16)
o->state = 1;
}
break;
}
o->xinertia -= 0x2A;
LIMITX(0x5ff);
}
/*
void c------------------------------() {}
*/
void ai_sky_dragon(Object *o)
{
switch(o->state)
{
case 0: // standing
{
ANIMATE(30, 0, 1);
}
break;
case 10: // player and kazuma gets on, dragon floats up
{
o->state = 11;
o->frame = 2;
o->animtimer = 0;
o->xmark = o->x - (6 << CSF);
o->ymark = o->y - (16 << CSF);
o->yinertia = 0;
}
case 11:
{
ANIMATE(5, 2, 3);
o->xinertia += (o->x < o->xmark) ? 0x08 : -0x08;
o->yinertia += (o->y < o->ymark) ? 0x08 : -0x08;
}
break;
case 20: // fly away
{
ANIMATE(2, 2, 3);
o->yinertia += (o->y < o->ymark) ? 0x08 : -0x08;
o->xinertia += 0x20;
LIMITX(0x600);
/*player->x = o->x;
player->y = o->y;
run_phase_compensator();*/
}
break;
case 30: // spawn a Sue hanging from mouth
{
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_pixel_cat(Object *o)
{
#ifdef SHOW_DEBUG_KITTY
if (o->state == 0)
{
o->y -= (32 << CSF);
o->state = 1;
}
#endif
}
void ai_little_family(Object *o)
{
o->frame &= 1;
switch(o->state)
{
case 0:
{
o->state = 1;
o->frame = 0;
o->xinertia = 0;
o->nxflags |= NXFLAG_FOLLOW_SLOPE;
}
case 1:
{
if (!random(0, 60))
{
o->state = random(0, 1) ? 2 : 10;
o->timer = 0;
o->frame = 1;
}
}
break;
case 2:
{
if (++o->timer > 8)
{
o->state = 1;
o->frame = 0;
}
}
break;
case 10:
{
o->state = 11;
o->frame = 0;
o->animtimer = 0;
o->dir = random(0, 1) ? LEFT : RIGHT;
o->timer = random(16, 32);
}
case 11:
{
if ((o->blockl && o->dir == LEFT) || \
(o->blockr && o->dir == RIGHT))
{
o->dir ^= 1;
}
XMOVE(0x100);
ANIMATE(4, 0, 1);
if (--o->timer < 0)
o->state = 0;
}
break;
}
switch(o->id2)
{
case 210: o->frame += 2; break; // red mom
case 220: o->frame += 4; break; // little son
}
o->yinertia += 0x20;
LIMITY(0x5ff);
}
================================================
FILE: ai/oside/oside.fdh
================================================
//hash:10bf31fc
//automatically generated by Makegen
/* located in ai/ai.cpp */
//----------------[referenced from ai/oside/oside.cpp]---------------//
Object *SpawnObjectAtActionPoint(Object *o, int otype);
/* located in ai/oside/oside.cpp */
//----------------[referenced from ai/oside/oside.cpp]---------------//
void ai_night_spirit(Object *o);
void ai_night_spirit_shot(Object *o);
void ai_hoppy(Object *o);
void ai_sky_dragon(Object *o);
void ai_pixel_cat(Object *o);
void ai_little_family(Object *o);
/* located in ai/sym/smoke.cpp */
//----------------[referenced from ai/oside/oside.cpp]---------------//
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in sound/sound.cpp */
//----------------[referenced from ai/oside/oside.cpp]---------------//
void sound(int snd);
/* located in common/misc.cpp */
//----------------[referenced from ai/oside/oside.cpp]---------------//
int random(int min, int max);
================================================
FILE: ai/plantation/plantation.cpp
================================================
#include "../stdai.h"
#include "../sand/puppy.fdh"
#include "plantation.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_ORANGEBELL, ai_orangebell);
ONTICK(OBJ_ORANGEBELL_BABY, ai_orangebell_baby);
ONTICK(OBJ_STUMPY, ai_stumpy);
ONTICK(OBJ_MIDORIN, ai_midorin);
ONTICK(OBJ_GUNFISH, ai_gunfish);
ONTICK(OBJ_GUNFISH_SHOT, ai_gunfish_shot);
ONTICK(OBJ_DROLL, ai_droll);
ONTICK(OBJ_DROLL_SHOT, ai_droll_shot);
ONTICK(OBJ_DROLL_GUARD, ai_droll_guard);
ONTICK(OBJ_MIMIGA_FARMER_STANDING, ai_mimiga_farmer);
ONTICK(OBJ_MIMIGA_FARMER_WALKING, ai_mimiga_farmer);
ONTICK(OBJ_ROCKET, ai_rocket);
ONTICK(OBJ_PROXIMITY_PRESS_HOZ, ai_proximity_press_hoz);
ONTICK(OBJ_PUPPY_ITEMS, ai_puppy_wag);
ONTICK(OBJ_NUMAHACHI, ai_numahachi);
// nothing special is needed to keep them from leaving their cages
// because the regular background tiles are set to be solid to NPC's.
// Thus, they are no different from the mimiga farmer object.
ONTICK(OBJ_MIMIGA_JAILED, ai_mimiga_farmer);
ONSPAWN(OBJ_MIMIGA_CAGE, onspawn_mimiga_cage);
GENERIC_NPC_NOFACEPLAYER(OBJ_MEGANE);
GENERIC_NPC_NOFACEPLAYER(OBJ_CHIE);
ONTICK(OBJ_ITOH, ai_npc_itoh);
ONTICK(OBJ_KANPACHI_STANDING, ai_kanpachi_standing);
ONTICK(OBJ_MOMORIN, ai_npc_momorin);
}
/*
void c------------------------------() {}
*/
// dragonfly creature
void ai_stumpy(Object *o)
{
//debug("state: %d",o->state);
//debug("timer: %d",o->timer);
o->frame ^= 1;
switch(o->state)
{
case 0:
{
o->state = 1;
o->flags |= NXFLAG_FOLLOW_SLOPE;
}
case 1:
{
if (pdistlx(240 << CSF) && pdistly(192 << CSF))
{
o->state = 2;
}
}
break;
case 2:
{
o->state = 3;
o->timer = 0;
FACEPLAYER;
}
case 3:
{
if (++o->timer > 50)
o->state = 4;
if (!pdistlx(SCREEN_WIDTH<state = 0;
}
break;
case 4:
{
o->state = 5;
o->timer = 0;
// throw ourselves at player
ThrowObjectAtPlayer(o, 3, 0x400);
o->dir = (o->xinertia >= 0) ? RIGHT : LEFT;
}
case 5:
{
SIFSprite *sprite = &sprites[o->sprite];
// don't bounce off slopes--some crap in here that should probably
// be handled by the main engine somehow, maybe not setting blockl/r
// for contact with slopes.
if (o->xinertia < 0 && o->blockl)
{
if (++o->timer > 2 && !IsSlopeAtPointList(o, &sprite->block_l))
{
o->xinertia = -o->xinertia;
o->dir ^= 1;
}
}
else if (o->xinertia > 0 && o->blockr)
{
if (++o->timer > 2 && !IsSlopeAtPointList(o, &sprite->block_r))
{
o->xinertia = -o->xinertia;
o->dir ^= 1;
}
}
if (CheckStandOnSlope(o))
{
o->yinertia = -0x100;
}
else if (o->CheckAttribute(&sprite->block_d, TA_WATER))
{
o->yinertia = -0x200;
}
else if ((o->yinertia < 0 && o->blocku) || \
(o->yinertia >= 0 && o->blockd))
{
o->yinertia = -o->yinertia;
}
if (++o->timer > 50)
{
o->state = 2;
o->xinertia = 0;
o->yinertia = 0;
}
}
break;
}
}
// very happy green guy who runs back and forth
void ai_midorin(Object *o)
{
switch(o->state)
{
case 0:
{
o->state = 1;
o->timer = 0;
o->frame = 0;
o->xinertia = 0;
}
case 1:
{
if (!random(0, 30))
{
o->state = 2 + random(0, 1);
o->frame = 1;
}
}
break;
case 2: // blinking
{
if (++o->timer > 8)
{
o->state = 1;
o->timer = 0;
o->frame = 0;
}
}
break;
case 3: // running
{
o->state = 4;
o->frame = 0; // this will be toggled into frame 2 just below
o->animtimer = 0;
o->timer = random(48, 64); // how long to run
o->dir = random(0, 1) ? LEFT : RIGHT;
}
case 4:
{
if (o->animtimer ^= 1)
o->frame ^= 2;
if ((o->dir==LEFT && o->blockl) || \
(o->dir==RIGHT && o->blockr))
{
o->dir ^= 1;
}
XMOVE(0x400);
if (--o->timer <= 0)
o->state = 0;
}
break;
}
o->yinertia += 0x20;
LIMITY(0x5ff);
}
/*
void c------------------------------() {}
*/
// large bat with many baby bats
void ai_orangebell(Object *o)
{
switch(o->state)
{
case 0:
{
o->state = 1;
o->ymark = o->y;
o->yinertia = 0x200;
// create baby bats
for(int i=0;i<8;i++)
{
Object *bat = CreateObject(o->CenterX() + random(-0x1000, 0x1000), \
o->CenterY() + random(-0x1000, 0x1000), \
OBJ_ORANGEBELL_BABY);
bat->linkedobject = o;
}
}
case 1:
{
ANIMATE(5, 0, 2);
if ((o->dir==LEFT && o->blockl) || \
(o->dir==RIGHT && o->blockr))
{
o->xinertia = 0;
o->dir ^= 1;
}
XMOVE(0x100);
o->yinertia += (o->y < o->ymark) ? 0x08 : -0x08;
LIMITY(0x200);
}
break;
}
}
void ai_orangebell_baby(Object *o)
{
switch(o->state)
{
case 0:
{
o->xinertia = xinertia_from_angle(random(0, 255), 0x200);
o->yinertia = yinertia_from_angle(random(0, 255), 0x200);
o->flags |= FLAG_IGNORE_SOLID;
o->timer = 0; // time until can dive-bomb
o->ymark2 = random(-32<state = 1;
}
case 1:
{
ANIMATE(1, 0, 2);
if (o->linkedobject)
{
o->xmark = o->linkedobject->CenterX();
o->ymark = o->linkedobject->CenterY() + o->ymark2;
o->dir = o->linkedobject->dir;
}
//DebugCrosshair(o->xmark, o->ymark, random(0,255),random(128,255),random(128,255));
o->xinertia += (o->x < o->xmark) ? 0x08 : -0x08;
o->yinertia += (o->y < o->ymark) ? 0x20 : -0x20;
LIMITX(0x400);
LIMITY(0x400);
// dive-bomb
if (o->timer) o->timer--;
if (pdistlx(8 << CSF) && !o->timer)
{
if (player->y > o->y && ((player->y - o->y) < 175<xinertia /= 4;
o->yinertia = 0;
o->state = 2;
o->flags &= ~FLAG_IGNORE_SOLID;
}
}
}
break;
case 2: // dive-bombing
{
o->frame = 3;
o->yinertia += 0x40;
LIMITY(0x5ff);
if (o->blockd)
{
o->xinertia *= 2;
o->yinertia = 0;
o->timer = 120;
o->state = 1;
o->flags |= FLAG_IGNORE_SOLID;
}
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_gunfish(Object *o)
{
if (player->Bottom() > o->y && \
player->Bottom() < o->Top() + (2<flags &= ~FLAG_SOLID_MUSHY;
o->flags |= FLAG_SOLID_BRICK;
}
else
{ // nice repel effects if he hits sides
o->flags &= ~FLAG_SOLID_BRICK;
o->flags |= FLAG_SOLID_MUSHY;
}
switch(o->state)
{
case 0:
{
o->yinertia = 0;
o->ymark = o->y;
o->state = 1;
o->timer = random(1, 50);
}
case 1: // desync
{
if (--o->timer <= 0)
{
o->yinertia = 0x200;
o->state = 2;
o->timer = 0;
}
}
break;
case 2:
{
ANIMATE(1, 0, 1);
// this variation on FACEPLAYER helps keep them from turning
// around so much when you are on standing on their platform.
if (player->Right() < o->Left()) o->dir = LEFT;
if (player->Left() > o->Right()) o->dir = RIGHT;
if (pdistlx(128<timer > 80)
{
o->state = 10;
o->timer = 0;
o->frame += 2;
}
}
}
break;
case 10:
{
ANIMATE(1, 2, 3);
if (++o->timer > 20)
{
o->state = 20;
o->timer = 0;
o->frame += 2;
}
}
break;
case 20:
{
ANIMATE(1, 4, 5);
if ((++o->timer % 10) == 3)
{
Object *shot = SpawnObjectAtActionPoint(o, OBJ_GUNFISH_SHOT);
shot->xinertia = (o->dir == LEFT) ? -0x400 : 0x400;
shot->yinertia = -0x400;
sound(SND_EM_FIRE);
}
if (o->timer > 60)
{
o->state = 2;
o->timer = 0;
o->frame -= 4;
}
}
break;
}
o->yinertia += (o->y < o->ymark) ? 0x10 : -0x10;
LIMITY(0x100);
}
void ai_gunfish_shot(Object *o)
{
bool hit_something = false;
if (o->xinertia <= 0 && o->blockl) hit_something = true;
if (o->xinertia >= 0 && o->blockr) hit_something = true;
if (o->yinertia <= 0 && o->blocku) hit_something = true;
if (o->yinertia >= 0 && o->blockd) hit_something = true;
if (++o->timer > 10)
{
SIFSprite *sprite = &sprites[o->sprite];
if (o->CheckAttribute(&sprite->block_u, TA_WATER))
{
hit_something = true;
}
}
if (hit_something)
{
for(int i=0;i<5;i++)
{
Caret *c = effect(o->CenterX(), o->CenterY(), EFFECT_GUNFISH_BUBBLE);
c->xinertia = random(-0x400, 0x400);
c->yinertia = random(-0x400, 0);
}
sound(SND_BUBBLE);
o->Delete();
}
o->yinertia += 0x20;
LIMITY(0x5ff);
}
/*
void c------------------------------() {}
*/
void ai_droll(Object *o)
{
switch(o->state)
{
case 0:
{
o->xmark = o->x;
o->state = 1;
}
case 1:
{
ANIMATE(40, 0, 1);
FACEPLAYER;
if (o->shaketime)
o->state = 10;
}
break;
case 10: // prepare to jump
{
o->state = 11;
o->frame = 2;
o->timer = 0;
}
case 11:
{
if (++o->timer > 10)
{ // jump
o->state = 12;
o->frame = 6;
o->timer2 = 0; // have not fired yet
o->xinertia = (o->x >= o->xmark) ? -0x200 : 0x200;
o->yinertia = -0x600;
}
}
break;
case 12: // in air
{
if (o->yinertia >= 0)
{
if (!o->timer2) // have fired yet?
{
FACEPLAYER;
o->timer2 = 1;
o->frame = 7;
EmFireAngledShot(o, OBJ_DROLL_SHOT, 0, 0x600);
sound(SND_EM_FIRE);
}
else if (o->yinertia > 0x200)
{ // after-fire frame
o->frame = 3;
}
if (o->blockd) // already know that yinertia >= 0
{
o->y >>= CSF; o->y <<= CSF;
o->xinertia = 0;
o->state = 13;
o->frame = 2;
o->timer = 0;
}
}
}
break;
case 13: // landed
{
o->xinertia /= 2;
if (++o->timer > 10)
{
o->xinertia = 0;
o->state = 1;
}
}
break;
}
o->yinertia += 0x55;
LIMITY(0x5ff);
}
void ai_droll_shot(Object *o)
{
ANIMATE(0, 0, 2);
if ((++o->timer % 5) == 0)
sound(SND_DROLL_SHOT_FLY);
bool hit_something = false;
if (o->xinertia <= 0 && o->blockl) hit_something = true;
if (o->xinertia >= 0 && o->blockr) hit_something = true;
if (o->yinertia <= 0 && o->blocku) hit_something = true;
if (o->yinertia >= 0 && o->blockd) hit_something = true;
if (hit_something)
{
SmokeClouds(o, 4, 2, 2);
effect(o->CenterX(), o->CenterY(), EFFECT_BOOMFLASH);
o->Delete();
}
}
// stomps you in Teleporter Room
void ai_droll_guard(Object *o)
{
switch(o->state)
{
case 0:
{
o->x += (8 << CSF);
o->state = 1;
}
case 1:
{
ANIMATE(30, 0, 1);
FACEPLAYER;
}
break;
case 10:
{
o->timer = 0;
o->state = 11;
}
case 11:
{
o->frame = 2;
if (++o->timer > 10)
{
o->state = 12;
o->frame = 3;
o->yinertia = -0x600;
XMOVE(0x200);
}
}
break;
case 12: // in air...
{
if (o->yinertia >= 0 && o->blockd)
{
o->frame = 2;
o->state = 13;
o->timer = 0;
}
}
break;
case 13: // landed
{
o->xinertia /= 2;
if (++o->timer > 10)
{
o->xinertia = 0;
o->frame = 0;
o->state = 1;
}
}
break;
}
o->yinertia += 0x40;
LIMITY(0x5ff);
}
/*
void c------------------------------() {}
*/
void ai_mimiga_farmer(Object *o)
{
switch(o->state)
{
case 0:
{
o->frame = 0;
o->xinertia = 0;
o->state = 1;
}
case 1:
{
if (!random(0, 60))
{
if (o->type != OBJ_MIMIGA_FARMER_STANDING && random(0, 1))
{ // walk
o->state = 10;
}
else
{ // blink
o->state = 2;
o->frame = 1;
}
}
}
break;
case 2: // blinking
{
if (++o->timer >= 8)
{
o->state = 0;
o->timer = 0;
}
}
break;
case 10: // walk
{
o->state = 11;
o->frame = 2;
o->animtimer = 0;
o->timer = random(16, 32);
o->dir = random(0, 1);
}
case 11:
{
if ((o->dir == LEFT && o->blockl) || \
(o->dir == RIGHT && o->blockr))
{
o->dir ^= 1;
}
XMOVE(0x200);
ANIMATE(4, 2, 5);
if (!--o->timer)
o->state = 0;
}
break;
}
o->yinertia += 0x20;
LIMITY(0x5ff);
}
void onspawn_mimiga_cage(Object *o)
{
// ...because it isn't guaranteed that onspawn events
// will only be called once during object creation.
if (o->state == 1) return;
o->state = 1;
// object is used both in Jail2 and then reused in Ring2 (Doctor battle),
// but tileset is different then.
if (game.curmap == STAGE_KINGS_TABLE)
o->sprite = SPR_MIMIGA_CAGE_FINAL;
else
o->sprite = SPR_JAIL2_CAGE;
o->x -= (16 << CSF);
}
/*
void c------------------------------() {}
*/
void ai_npc_itoh(Object *o)
{
switch(o->state)
{
case 0:
{
// Option 2 is set when he is in plantation,
// but he still should face left.
o->dir = LEFT;
o->state = 1;
}
case 1:
{
o->xinertia = 0;
o->frame = 0;
randblink(o);
}
break;
case 10: // cower
{
o->frame = 2;
o->xinertia = 0;
}
break;
case 20: // leap away
{
o->state = 21;
o->frame = 2;
o->xinertia = 0x200;
o->yinertia = -0x400;
}
case 21:
{
if (o->blockd && o->yinertia >= 0)
{
o->xinertia = 0;
o->frame = 3;
o->state = 30;
o->timer = 0;
}
}
break;
case 30: // shaking after leap
{
o->xmark = o->x;
o->state = 31;
}
case 31:
{
o->x = o->xmark;
if (++o->timer & 2) o->x += (1 << CSF);
}
break;
case 40: // small vertical hop (from when he jumps out of helicopter at end)
{
o->state = 41;
o->yinertia = -0x200;
o->frame = 2;
}
case 41:
{
if (o->blockd && o->yinertia > 0)
{
o->xinertia = 0;
o->state = 42;
o->frame = 0;
o->dir = RIGHT;
}
}
break;
case 42: // stop begin shocked after blocks fall (same as 0 except he doesn't blink)
{
o->frame = 0;
o->dir = RIGHT;
}
break;
case 50: // run a moment then stop
{
o->state = 51;
o->timer = 0;
o->animtimer = 0;
o->dir = RIGHT;
o->frame = 5;
}
case 51:
{
ANIMATE(3, 4, 7);
XMOVE(0x200);
if (++o->timer > 32)
{
o->frame = 0;
o->xinertia = 0;
o->state = 52;
}
}
break;
}
o->yinertia += 0x40;
LIMITY(0x5ff);
}
void ai_kanpachi_standing(Object *o)
{
switch(o->state)
{
case 10: // walking
case 11:
{
npc_generic_walk(o, 10);
}
break;
case 20: // face away/enter door
{
o->xinertia = 0;
o->frame = 6;
}
break;
default:
ai_generic_npc_nofaceplayer(o);
break;
}
}
void ai_npc_momorin(Object *o)
{
switch(o->state)
{
case 0:
o->frame = 0;
randblink(o);
FACEPLAYER;
break;
case 3: // surprised
o->frame = 2;
break;
}
}
/*
void c------------------------------() {}
*/
void ai_proximity_press_hoz(Object *o)
{
switch(o->state)
{
case 0:
{
if (o->dir == LEFT) o->x -= (8 << CSF);
o->xmark = o->x;
o->state = 1;
}
case 1:
{
if (pdistly2(0x800, 0x1000))
{
if (o->dir == LEFT)
{
if (player->Right() <= o->x)
{
if ((o->x - player->Right()) <= (192<state = 2;
o->frame = 2;
o->timer = 0;
}
}
}
else
{
if (player->x >= o->x)
{
if ((player->x - o->x) <= (192<state = 2;
o->frame = 2;
o->timer = 0;
}
}
}
}
}
break;
case 2: // activated
{
o->damage = 127;
XMOVE(0xC00);
if (++o->timer == 8)
{
sound(SND_BLOCK_DESTROY);
SmokeSide(o, 4, o->dir);
}
if (o->timer > 8)
{
o->damage = 0;
o->xinertia = 0;
o->state = 3;
o->timer = 0;
}
}
break;
case 3: // hit other press
{
if (++o->timer > 50)
{
o->state = 4; // return
o->frame = 1;
o->timer = 0;
}
}
break;
case 4: // return to start pos
{
XMOVE(-0x800);
if (++o->timer > 10)
{
o->frame = 0;
o->xinertia = 0;
o->x = o->xmark;
o->state = 1;
o->timer = 0;
}
}
break;
}
}
/*
void c------------------------------() {}
*/
void ai_rocket(Object *o)
{
switch(o->state)
{
case 0:
break;
case 10: // activated
{
o->state = 11;
o->timer = 0;
}
case 11:
{
o->timer++;
o->yinertia += 8;
if (o->blockd)
{
if (o->timer < 10)
{
o->state = 12;
}
else
{
o->state = 0;
}
}
}
break;
case 12:
{
o->flags &= ~FLAG_SCRIPTONACTIVATE;
o->state = 13;
o->timer = 0;
o->frame = 1;
SmokeClouds(o, 10, 16, 8);
sound(SND_BLOCK_DESTROY);
}
case 13:
{
o->yinertia -= 0x08;
// boosters fire left/right alternating:
o->timer++;
SpawnRocketTrail(o, (o->timer & 1) ? RIGHT : LEFT);
// noise
if ((o->timer % 4) == 1)
sound(SND_FIREBALL);
// smacked into ceiling. note that I didn't check that we're actually
// riding the rocket when I test player->blocku--the original doesn't
// seem to either, so I'm emulating that bug.
if (o->blocku || player->blocku)
{
if (player->cannotride == o)
player->cannotride = NULL;
if (!player->blocku && (player->riding == o || player->lastriding == o))
{
if (o->yinertia < 0 && o->yinertia < player->yinertia)
player->yinertia = o->yinertia;
}
SmokeClouds(o, 6, 16, 8);
sound(SND_BLOCK_DESTROY);
o->yinertia = 0;
o->state = 14;
}
}
break;
case 14: // falling back down
{
o->yinertia += 8;
o->timer++;
if (o->yinertia < 0)
{
if ((o->timer % 4) == 0)
SpawnRocketTrail(o, (o->timer & 8) ? RIGHT : LEFT);
// sound
if ((o->timer % 16) == 1)
sound(SND_FIREBALL);
}
else if (o->blockd)
{
o->y >>= CSF; o->y <<= CSF;
o->flags |= FLAG_SCRIPTONACTIVATE;
o->frame = 0;
o->state = 0;
}
}
break;
}
LIMITY(0x5ff);
}
static Caret *SpawnRocketTrail(Object *o, int side)
{
Caret *trail;
int x, y;
if (side == LEFT)
{
x = o->ActionPointX();
y = o->ActionPointY();
}
else
{
x = o->ActionPoint2X();
y = o->ActionPoint2Y();
}
trail = effect(x, y, EFFECT_SMOKETRAIL);
trail->yinertia = 0x400;
return trail;
}
/*
void c------------------------------() {}
*/
// in the Statue Room, if you enter via the Plantation
void ai_numahachi(Object *o)
{
switch(o->state)
{
case 0:
case 1:
{
o->xinertia = 0;
o->state = 2;
}
case 2:
{
ANIMATE(50, 0, 1);
}
break;
}
o->yinertia += 0x40;
LIMITY(0x5ff);
}
================================================
FILE: ai/plantation/plantation.fdh
================================================
//hash:b57ca8a0
//automatically generated by Makegen
/* located in ObjManager.cpp */
//-----------[referenced from ai/plantation/plantation.cpp]----------//
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//-----------[referenced from ai/plantation/plantation.cpp]----------//
Caret *effect(int x, int y, int effectno);
/* located in slope.cpp */
//-----------[referenced from ai/plantation/plantation.cpp]----------//
bool IsSlopeAtPointList(Object *o, SIFPointList *points);
int CheckStandOnSlope(Object *o);
/* located in trig.cpp */
//-----------[referenced from ai/plantation/plantation.cpp]----------//
void ThrowObjectAtPlayer(Object *o, int rand_variance, int speed);
int xinertia_from_angle(uint8_t angle, int speed);
int yinertia_from_angle(uint8_t angle, int speed);
void EmFireAngledShot(Object *o, int objtype, int rand_variance, int speed);
/* located in ai/ai.cpp */
//-----------[referenced from ai/plantation/plantation.cpp]----------//
Object *SpawnObjectAtActionPoint(Object *o, int otype);
void randblink(Object *o, int blinkframe, int blinktime, int prob);
/* located in ai/plantation/plantation.cpp */
//-----------[referenced from ai/plantation/plantation.cpp]----------//
void ai_stumpy(Object *o);
void ai_midorin(Object *o);
void ai_orangebell(Object *o);
void ai_orangebell_baby(Object *o);
void ai_gunfish(Object *o);
void ai_gunfish_shot(Object *o);
void ai_droll(Object *o);
void ai_droll_shot(Object *o);
void ai_droll_guard(Object *o);
void ai_mimiga_farmer(Object *o);
void onspawn_mimiga_cage(Object *o);
void ai_npc_itoh(Object *o);
void ai_kanpachi_standing(Object *o);
void ai_npc_momorin(Object *o);
void ai_proximity_press_hoz(Object *o);
void ai_rocket(Object *o);
static Caret *SpawnRocketTrail(Object *o, int side);
void ai_numahachi(Object *o);
/* located in ai/npc/npcregu.cpp */
//-----------[referenced from ai/plantation/plantation.cpp]----------//
void npc_generic_walk(Object *o, int basestate);
void ai_generic_npc_nofaceplayer(Object *o);
/* located in ai/sym/smoke.cpp */
//-----------[referenced from ai/plantation/plantation.cpp]----------//
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
void SmokeSide(Object *o, int nclouds, int dir);
/* located in sound/sound.cpp */
//-----------[referenced from ai/plantation/plantation.cpp]----------//
void sound(int snd);
/* located in common/misc.cpp */
//-----------[referenced from ai/plantation/plantation.cpp]----------//
int random(int min, int max);
================================================
FILE: ai/sand/curly_boss.cpp
================================================
#include "../stdai.h"
#include "curly_boss.fdh"
#define CURLYB_FIGHT_START 10
#define CURLYB_WAIT 11
#define CURLYB_WALK_PLAYER 13
#define CURLYB_WALKING_PLAYER 14
#define CURLYB_CHARGE_GUN 20
#define CURLYB_FIRE_GUN 21
#define CURLYB_SHIELD 30
INITFUNC(AIRoutines)
{
ONTICK(OBJ_CURLY_BOSS, ai_curly_boss);
ONTICK(OBJ_CURLYBOSS_SHOT, ai_curlyboss_shot);
}
/*
void c------------------------------() {}
*/
void ai_curly_boss(Object *o)
{
switch(o->state)
{
case CURLYB_FIGHT_START:
{
//o->hp = 12;
o->state = CURLYB_WAIT;
o->timer = random(50, 100);
o->frame = 0;
if (o->x > player->x) o->dir = LEFT; else o->dir = RIGHT;
o->flags |= FLAG_SHOOTABLE;
o->flags &= ~FLAG_INVULNERABLE;
}
case CURLYB_WAIT:
if (o->timer) o->timer--;
else
{
o->state = CURLYB_WALK_PLAYER;
}
break;
case CURLYB_WALK_PLAYER:
o->state = CURLYB_WALKING_PLAYER;
o->frame = 3;
o->timer = random(50, 100);
if (o->x > player->x) o->dir = LEFT; else o->dir = RIGHT;
case CURLYB_WALKING_PLAYER:
if (++o->animtimer > 2)
{
o->animtimer = 0;
if (++o->frame > 6) o->frame = 3;
}
XACCEL(0x40);
if (o->timer) o->timer--;
else
{
o->flags |= FLAG_SHOOTABLE;
o->state = CURLYB_CHARGE_GUN;
o->timer = 0;
sound(SND_CHARGE_GUN);
}
break;
case CURLYB_CHARGE_GUN:
if (o->x > player->x) o->dir = LEFT; else o->dir = RIGHT;
o->xinertia *= 8;
o->xinertia /= 9;
if (++o->frame > 1) o->frame = 0;
if (++o->timer > 50)
{
o->state = CURLYB_FIRE_GUN;
o->frame = 0;
o->timer = 0;
}
break;
case CURLYB_FIRE_GUN:
o->timer++;
if (!(o->timer & 3))
{ // time to fire
// check if player is trying to jump over
if ((abs(o->x - player->x) < (32<y + (10 << CSF)) < o->y))
{ // shoot up instead
o->frame = 2;
curlyboss_fire(o, UP);
}
else
{
o->frame = 0;
curlyboss_fire(o, o->dir);
}
}
if (o->timer > 30) o->state = 10;
break;
case CURLYB_SHIELD:
if (++o->frame > 8) o->frame = 7;
if (++o->timer > 30)
{
o->frame = 0;
o->state = CURLYB_FIGHT_START;
}
break;
}
if (o->state > CURLYB_FIGHT_START && o->state < CURLYB_SHIELD)
{
// curly activates her shield anytime a missile's explosion goes off,
// even if it's nowhere near her at all
if (sound_is_playing(SND_MISSILE_HIT))
{
o->timer = 0;
o->state = CURLYB_SHIELD;
o->frame = 7;
o->flags &= ~FLAG_SHOOTABLE;
o->flags |= FLAG_INVULNERABLE;
o->xinertia = 0;
}
}
if (o->xinertia > 0x1FF) o->xinertia = 0x1FF;
if (o->xinertia < -0x1FF) o->xinertia = -0x1FF;
o->yinertia += 0x40;
LIMITY(0x5ff);
}
static void curlyboss_fire(Object *o, int dir)
{
Object *shot = SpawnObjectAtActionPoint(o, OBJ_CURLYBOSS_SHOT);
shot->damage = 6;
shot->sprite = SPR_SHOT_MGUN_L1;
shot->dir = o->dir;
shot->shot.dir = dir;
effect(shot->CenterX(), shot->CenterY(), EFFECT_STARPOOF);
switch(dir)
{
case LEFT:
shot->xinertia = -4096;
o->apply_xinertia(1 << CSF);
break;
case RIGHT:
shot->xinertia = 4096;
o->apply_xinertia(-(1 << CSF));
break;
case UP:
shot->yinertia = -4096;
shot->sprite++;
break;
}
sound(SND_POLAR_STAR_L1_2);
}
/*
void c------------------------------() {}
*/
void ai_curlyboss_shot(Object *o)
{
if (hitdetect(o, player) && !player->hurt_time)
{
hurtplayer(o->shot.damage);
}
else if (IsBlockedInShotDir(o))
{ }
else
{
return;
}
// we get here only if we've hit the player, or the wall
shot_spawn_effect(o, EFFECT_STARSOLID);
o->Delete();
}
================================================
FILE: ai/sand/curly_boss.fdh
================================================
//hash:676e013b
//automatically generated by Makegen
/* located in ObjManager.cpp */
//--------------[referenced from ai/sand/curly_boss.cpp]-------------//
bool hitdetect(Object *o1, Object *o2);
/* located in caret.cpp */
//--------------[referenced from ai/sand/curly_boss.cpp]-------------//
Caret *effect(int x, int y, int effectno);
/* located in player.cpp */
//--------------[referenced from ai/sand/curly_boss.cpp]-------------//
void hurtplayer(int damage);
/* located in ai/ai.cpp */
//--------------[referenced from ai/sand/curly_boss.cpp]-------------//
Object *SpawnObjectAtActionPoint(Object *o, int otype);
/* located in ai/sand/curly_boss.cpp */
//--------------[referenced from ai/sand/curly_boss.cpp]-------------//
void ai_curly_boss(Object *o);
static void curlyboss_fire(Object *o, int dir);
void ai_curlyboss_shot(Object *o);
/* located in ai/weapons/weapons.cpp */
//--------------[referenced from ai/sand/curly_boss.cpp]-------------//
bool IsBlockedInShotDir(Object *o);
void shot_spawn_effect(Object *o, int effectno);
/* located in sound/sound.cpp */
//--------------[referenced from ai/sand/curly_boss.cpp]-------------//
void sound(int snd);
bool sound_is_playing(int snd);
/* located in common/misc.cpp */
//--------------[referenced from ai/sand/curly_boss.cpp]-------------//
int random(int min, int max);
================================================
FILE: ai/sand/puppy.cpp
================================================
#include "../stdai.h"
#include "puppy.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_PUPPY_WAG, ai_puppy_wag);
ONTICK(OBJ_PUPPY_BARK, ai_puppy_bark);
ONTICK(OBJ_PUPPY_SLEEP, ai_zzzz_spawner);
ONTICK(OBJ_PUPPY_RUN, ai_puppy_run);
AFTERMOVE(OBJ_PUPPY_CARRY, aftermove_puppy_carry);
}
/*
void c------------------------------() {}
*/
// these seem to be used for the the ones in jenka's house
// that you have already gotten.
void ai_puppy_wag(Object *o)
{
// code shared with talking item-giving puppy from Plantation--
// that one doesn't face you.
if (o->type != OBJ_PUPPY_ITEMS)
{
FACEPLAYER;
}
// needed so you can talk to them immediately after giving them to jenka
o->flags |= FLAG_SCRIPTONACTIVATE;
// only wag when player is near
if (pdistlx(56 << CSF))
{
if (++o->animtimer >= 4)
{
o->animtimer = 0;
o->animframe ^= 1;
}
o->frame = o->animframe;
}
else
{
o->animframe = 1;
o->animtimer = 0;
o->frame = 0;
}
randblink(o, 2, 4);
o->yinertia += 0x40;
LIMITY(0x5ff);
}
void ai_puppy_bark(Object *o)
{
#define BARK 5
#define NOBARK 3
if (o->state < 100)
{
FACEPLAYER;
}
switch(o->state)
{
case 0:
case 100:
o->state++;
o->animframe = 0;
o->timer2 = 0;
case 1:
case 101:
// bark when player is near
// note: this is also supposed to run at jenka's house when balrog appears
// but it's ok:
// the player is always near enough because of the way the cutscene is set up
if ((abs(o->x - player->x) < (64 << CSF)) && ((abs(o->y - player->y) < (16 << CSF))))
{
if (++o->animtimer > 6)
{
o->animtimer = 0;
if (o->frame==NOBARK)
{
o->frame = BARK;
sound(SND_PUPPY_BARK);
}
else
{
o->frame = NOBARK;
if (random(0, 8)==0 || ++o->timer2 > 5)
{ // stop barking for a sec
o->state++;
o->timer = o->timer2 = 0;
o->frame = 0;
}
}
}
}
else
{
o->frame = 0;
o->animtimer = 9999; // begin barking as SOON as player gets near
}
break;
case 2:
case 102:
o->frame = 0;
if (++o->timer > 8)
{ // start barking again
o->state--;
o->animtimer = 0;
o->timer2 = 0;
}
break;
// do not bark at all--set during jenka's 1st cutscene with balrog
case 20:
case 120:
o->frame = 0;
break;
}
o->yinertia += 0x40;
LIMITY(0x5ff);
}
void ai_zzzz_spawner(Object *o)
{
if (!o->timer)
{
effect(o->CenterX(), o->CenterY(), EFFECT_ZZZZ);
o->timer = 99;
}
else o->timer--;
}
void ai_puppy_run(Object *o)
{
switch(o->state)
{
case 0:
o->nxflags |= NXFLAG_FOLLOW_SLOPE;
o->flags |= FLAG_SCRIPTONACTIVATE; // for some reason this isn't set on puppy in map
o->state = 1;
case 1:
FACEPLAYER;
o->frame = 0; // necessary for randblink
if (pdistly2((32 << CSF), (16 << CSF)))
{
if (pdistlx(32 << CSF))
{ // run away!!!
FACEAWAYPLAYER;
o->state = 10;
}
else if (pdistlx(96 << CSF))
{
// wag tail
if (++o->animtimer >= 4)
{
o->animtimer = 0;
o->animframe ^= 1;
}
o->frame = o->animframe;
}
}
randblink(o, 2, 4);
break;
case 10:
o->state = 11;
o->frame = 4;
o->animtimer = 0;
case 11: // running
if (o->blockd)
{
if (++o->animtimer > 2)
{
o->animtimer = 0;
o->frame = (o->frame==4) ? 3:4;
}
}
// "bounce" off walls
if (o->dir==RIGHT)
{
if (o->blockr)
{
o->xinertia = -(o->xinertia >> 1);
o->dir = LEFT;
}
}
else
{
if (o->blockl)
{
o->xinertia = -(o->xinertia >> 1);
o->dir = RIGHT;
}
}
o->xinertia += (o->dir==RIGHT) ? 0x40 : -0x40;
if (o->xinertia > 0x5ff) o->xinertia = 0x400;
if (o->xinertia < -0x5ff) o->xinertia = -0x400;
break;
}
}
/*
void c------------------------------() {}
*/
void aftermove_puppy_carry(Object *o)
{
StickToPlayer(o, -1, -13, -23);
o->frame = 0;
randblink(o, 2, 4);
}
================================================
FILE: ai/sand/puppy.fdh
================================================
//hash:a6684331
//automatically generated by Makegen
/* located in caret.cpp */
//-----------------[referenced from ai/sand/puppy.cpp]---------------//
Caret *effect(int x, int y, int effectno);
/* located in ai/ai.cpp */
//-----------------[referenced from ai/sand/puppy.cpp]---------------//
void randblink(Object *o, int blinkframe, int blinktime, int prob);
void StickToPlayer(Object *o, int x_left, int x_right, int off_y);
/* located in ai/sand/puppy.cpp */
//-----------------[referenced from ai/sand/puppy.cpp]---------------//
void ai_puppy_wag(Object *o);
void ai_puppy_bark(Object *o);
void ai_zzzz_spawner(Object *o);
void ai_puppy_run(Object *o);
void aftermove_puppy_carry(Object *o);
/* located in sound/sound.cpp */
//-----------------[referenced from ai/sand/puppy.cpp]---------------//
void sound(int snd);
/* located in common/misc.cpp */
//-----------------[referenced from ai/sand/puppy.cpp]---------------//
int random(int min, int max);
================================================
FILE: ai/sand/sand.cpp
================================================
#include "../stdai.h"
#include "../egg/egg.fdh" // for ai_beetle_horiz
#include "sand.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_BEETLE_BROWN, ai_beetle_horiz);
ONTICK(OBJ_POLISH, ai_polish);
ONDEATH(OBJ_POLISH, ondeath_polish);
ONTICK(OBJ_POLISHBABY, ai_polishbaby);
ONTICK(OBJ_SANDCROC, ai_sandcroc);
ONTICK(OBJ_MIMIGAC1, ai_curlys_mimigas);
ONTICK(OBJ_MIMIGAC2, ai_curlys_mimigas);
ONTICK(OBJ_MIMIGAC_ENEMY, ai_curlys_mimigas);
ONTICK(OBJ_SUNSTONE, ai_sunstone);
ONTICK(OBJ_ARMADILLO, ai_armadillo);
ONTICK(OBJ_CROW, ai_crow);
ONTICK(OBJ_CROWWITHSKULL, ai_crowwithskull);
ONTICK(OBJ_SKULLHEAD, ai_skullhead);
ONTICK(OBJ_SKULLHEAD_CARRIED, ai_skullhead_carried);
AFTERMOVE(OBJ_SKULLHEAD_CARRIED, aftermove_skullhead_carried);
ONTICK(OBJ_SKULLSTEP, ai_skullstep);
ONTICK(OBJ_SKULLSTEP_FOOT, ai_skullstep_foot);
ONTICK(OBJ_SKELETON, ai_skeleton);
ONTICK(OBJ_SKELETON_SHOT, ai_skeleton_shot);
}
/*
void c------------------------------() {}
*/
void ai_polish(Object *o)
{
#define POLISH_ACCEL 0x20
#define POLISH_SPEED 0x200
#define POLISH_BOUNCE 0x100
#define POLISH_CCW_LEFT 1
#define POLISH_CCW_UP 2
#define POLISH_CCW_RIGHT 3
#define POLISH_CCW_DOWN 4
#define POLISH_CW_LEFT 5
#define POLISH_CW_UP 6
#define POLISH_CW_RIGHT 7
#define POLISH_CW_DOWN 8
switch(o->state)
{
case 0: // initilization
{
o->state = (o->dir == LEFT) ? POLISH_CW_RIGHT : POLISH_CCW_LEFT;
// reprocess first frame
ai_polish(o);
}
break;
// -------------- Traveling around counter-clockwise --------------
case POLISH_CCW_LEFT: // traveling left on ceiling
{
o->yinertia -= POLISH_ACCEL;
if (o->yinertia < 0 && o->blocku)
{
o->yinertia = POLISH_BOUNCE;
o->xinertia -= POLISH_BOUNCE;
}
if (o->blockl) o->state = POLISH_CCW_DOWN;
}
break;
case POLISH_CCW_UP: // traveling up right wall
{
o->xinertia += POLISH_ACCEL;
if (o->xinertia > 0 && o->blockr)
{
o->xinertia = -POLISH_BOUNCE;
o->yinertia -= POLISH_BOUNCE;
}
if (o->blocku) o->state = POLISH_CCW_LEFT;
}
break;
case POLISH_CCW_RIGHT: // traveling right on floor
{
o->yinertia += POLISH_ACCEL;
if (o->yinertia > 0 && o->blockd)
{
o->yinertia = -POLISH_BOUNCE;
o->xinertia += POLISH_BOUNCE;
}
if (o->blockr) o->state = POLISH_CCW_UP;
}
break;
case POLISH_CCW_DOWN: // traveling down left wall
{
o->xinertia -= POLISH_ACCEL;
if (o->xinertia < 0 && o->blockl)
{
o->xinertia = POLISH_BOUNCE;
o->yinertia += POLISH_BOUNCE;
}
if (o->blockd) o->state = POLISH_CCW_RIGHT;
}
break;
// -------------- Traveling around clockwise --------------
case POLISH_CW_LEFT: // traveling left on floor
{
o->yinertia += POLISH_ACCEL;
if (o->yinertia > 0 && o->blockd)
{
o->yinertia = -POLISH_BOUNCE;
o->xinertia -= POLISH_BOUNCE;
}
if (o->blockl) o->state = POLISH_CW_UP;
}
break;
case POLISH_CW_UP: // traveling up left wall
{
o->xinertia -= POLISH_ACCEL;
if (o->xinertia < 0 && o->blockl)
{
o->xinertia = POLISH_BOUNCE;
o->yinertia -= POLISH_BOUNCE;
}
if (o->blocku) o->state = POLISH_CW_RIGHT;
}
break;
case POLISH_CW_RIGHT: // traveling right on ceiling
{
o->yinertia -= POLISH_ACCEL;
if (o->yinertia < 0 && o->blocku)
{
o->yinertia = POLISH_BOUNCE;
o->xinertia += POLISH_BOUNCE;
}
if (o->blockr) o->state = POLISH_CW_DOWN;
}
break;
case POLISH_CW_DOWN: // traveling down right wall
{
o->xinertia += POLISH_ACCEL;
if (o->xinertia > 0 && o->blockr)
{
o->xinertia = -POLISH_BOUNCE;
o->yinertia += POLISH_BOUNCE;
}
if (o->blockd) o->state = POLISH_CW_LEFT;
}
break;
}
LIMITX(POLISH_SPEED);
LIMITY(POLISH_SPEED);
// animation
o->animframe ^= 1;
o->frame = o->animframe + 2;
//if (o->state==P_DOWNRIGHT || o->state==P_UPRIGHT) o->frame += 2;
o->dir = RIGHT;
}
void ondeath_polish(Object *o)
{
int i;
int x, y;
x = o->CenterX();
y = o->CenterY();
for(i=0;i<10;i++)
{
CreateObject(x, y, OBJ_POLISHBABY);
}
o->Delete();
}
void ai_polishbaby(Object *o)
{
if (!o->state)
{
o->state = 1;
if (!random(0, 1)) o->xinertia = random(0x100, 0x200);
else o->xinertia = random(-0x200, -0x100);
if (!random(0, 1)) o->yinertia = random(0x100, 0x200);
else o->yinertia = random(-0x200, -0x100);
}
if (o->xinertia > 0 && o->blockr) o->xinertia = -o->xinertia;
if (o->xinertia < 0 && o->blockl) o->xinertia = -o->xinertia;
if (o->yinertia > 0 && o->blockd) o->yinertia = -o->yinertia;
if (o->yinertia < 0 && o->blocku) o->yinertia = -o->yinertia;
o->frame ^= 1;
}
/*
void c------------------------------() {}
*/
void ai_sandcroc(Object *o)
{
int pbottom, crocbottom;
switch(o->state)
{
case 0:
o->state = 1;
o->timer = 0;
o->ymark = o->y;
o->flags &= ~(FLAG_SOLID_MUSHY | FLAG_SHOOTABLE | FLAG_INVULNERABLE | FLAG_IGNORE_SOLID);
case 1:
// track player invisibly underground
o->xinertia = (o->CenterX() < player->CenterX()) ? 0x400:-0x400;
if (pdistlx(19 << CSF))
{
// check if bottoms of player and croc are near
pbottom = player->y + (sprites[player->sprite].bbox.y2 << CSF);
crocbottom = o->y + (sprites[o->sprite].bbox.y2 << CSF) + 0x600;
if (pbottom <= crocbottom && crocbottom - pbottom < (12 << CSF))
{ // attack!!
o->xinertia = 0;
o->state = 2;
o->timer = 0;
sound(SND_JAWS);
o->frame = 0;
}
}
break;
case 2: // attacking
if (++o->animtimer > 3)
{
o->animtimer = 0;
o->frame++;
}
if (o->frame==3) o->damage = (o->type==OBJ_SANDCROC_OSIDE) ? 15:10;
else if (o->frame==4)
{
o->flags |= FLAG_SHOOTABLE;
o->state = 3;
o->timer = 0;
}
break;
case 3:
o->flags |= FLAG_SOLID_MUSHY;
o->damage = 0;
o->timer++;
if (o->shaketime)
{
o->state = 4;
o->timer = 0;
o->yinertia = 0;
o->shaketime += 25; // delay floattext until after we're underground
}
break;
case 4: // retreat
o->y += 0x280;
if (++o->timer == 30)
{
o->flags &= ~(FLAG_SOLID_MUSHY | FLAG_SHOOTABLE);
o->state = 5;
o->timer = 0;
}
break;
case 5:
o->frame = 0;
o->y = o->ymark;
if (o->timer < 100)
{
o->timer++;
// have to wait before moving: till floattext goes away
// else they can see us jump
if (o->timer==98)
{
o->xinertia = (player->CenterX() - o->CenterX());
}
else o->xinertia = 0;
}
else
{
o->state = 0;
}
break;
}
LIMITY(0x100);
// these guys (from oside) don't track
if (o->type == OBJ_SANDCROC_OSIDE) o->xinertia = 0;
}
void ai_sunstone(Object *o)
{
switch(o->state)
{
case 0:
o->flags |= FLAG_IGNORE_SOLID;
o->state = 1;
break;
case 10: // triggered to move by hvtrigger script
o->frame = 1;
o->timer = 0;
o->state++;
case 11:
if (o->dir==LEFT) o->x -= 0x80; else o->x += 0x80;
if ((o->timer & 7) == 0) sound(SND_QUAKE);
o->timer++;
game.quaketime = 20;
break;
}
}
void ai_crow(Object *o)
{
// for crows carrying skullheads
if (o->state >= 100)
{
// if our skullhead dies, go into attack mode
if (!o->linkedobject)
{
o->state = 2;
}
else
{
// link our blockd with it's blockd so we don't fly it through the floor
o->blockd |= o->linkedobject->blockd;
}
}
switch(o->state)
{
case 0:
{
uint8_t angle = random(0, 255);
vector_from_angle(angle, (1<xinertia, &o->yinertia);
o->xmark = o->x + (o->xinertia * 8);
o->ymark = o->y + (o->yinertia * 8);
o->state = 1;
o->nxflags |= NXFLAG_FOLLOW_SLOPE;
o->animframe = random(0, 1);
o->animtimer = random(0, 4);
}
case 1:
case 101:
{
if (o->x > o->xmark) o->xinertia -= 16;
else if (o->x < o->xmark) o->xinertia += 16;
if (o->y > o->ymark) o->yinertia -= 16;
else if (o->y < o->ymark) o->yinertia += 16;
FACEPLAYER;
LIMITX(0x200);
LIMITY(0x200);
if (o->shaketime)
{
o->state++; // state 2/102
o->timer = 0;
if (!o->linkedobject)
{
if (o->dir==RIGHT) o->xinertia = -0x200;
else o->xinertia = 0x200;
}
o->yinertia = 0;
}
}
break;
case 2:
case 102:
{
FACEPLAYER;
if (o->shaketime)
{ // fall while hurt
o->yinertia += 0x20;
o->xinertia = 0;
}
else
{
if (!o->linkedobject)
{ // move towards player
if (o->x < player->x) o->xinertia += 0x10;
else o->xinertia -= 0x10;
if (o->y < player->y) o->yinertia += 0x10;
else o->yinertia -= 0x10;
}
else
{ // carrying a skull; don't chase him
o->state--; // state 1/101
}
}
// bounce off walls
if (o->xinertia < 0 && o->blockl) o->xinertia = 0x200;
if (o->xinertia > 0 && o->blockr) o->xinertia = -0x200;
if (o->yinertia < 0 && o->blocku) o->yinertia = 0x200;
if (o->yinertia > 0 && o->blockd) o->yinertia = -0x200;
LIMITX(0x5ff);
LIMITY(0x5ff);
}
break;
}
if (++o->animtimer >= 2)
{
o->animtimer = 0;
o->animframe ^= 1;
}
o->frame = o->animframe;
if (o->shaketime) o->frame = 4;
}
void ai_crowwithskull(Object *o)
{
Object *skull;
// create the skullhead we're carrying
skull = CreateObject(0, 0, OBJ_SKULLHEAD_CARRIED);
skull->linkedobject = o;
skull->timer = random(0, 50);
o->linkedobject = skull;
// switch over to the main crow AI, but only move up & down
o->yinertia = random(-0x200, -0x100);
o->xmark = o->x;
o->ymark = o->y + random(-(28 << CSF), (10 << CSF));
o->animframe = random(0, 1);
o->animtimer = random(0, 4);
o->state = 101;
o->type = OBJ_CROW;
// run the ai for the normal crow for this first frame
ai_crow(o);
}
/*
void c------------------------------() {}
*/
void ai_skullhead(Object *o)
{
switch(o->state)
{
case 0:
{
o->speed = 0x100; // skullhead_carried shares ai but moves faster
o->state = 1;
o->timer = random(-5, 0);
}
case 1:
{
if (++o->timer > 3)
{
o->yinertia = -0x350;
o->state = 2;
o->frame = 1;
XMOVE(o->speed);
}
else break;
}
case 2:
{
if (o->blockd)
{
o->xinertia = 0;
o->state = 1;
o->timer = 0;
o->frame = 0;
}
if (o->blocku && o->yinertia < 0) o->yinertia = 0;
if (o->yinertia > 0) o->frame = 0; else o->frame = 1;
}
break;
}
if (o->xinertia)
{
if (o->blockl) { o->dir = RIGHT; o->xinertia = o->speed; }
if (o->blockr) { o->dir = LEFT; o->xinertia = -o->speed; }
}
o->yinertia += 0x40;
LIMITY(0x5ff);
}
void ai_skullhead_carried(Object *o)
{
// if our crow dies, change into a regular skullhead
if (!o->linkedobject)
{
o->type = OBJ_SKULLHEAD;
o->state = 2; // falling
o->speed = 0x200;
XMOVE(o->speed);
ai_skullhead(o);
return;
}
switch(o->state)
{
case 0:
case 1: // mouth closed
{
o->frame = 0;
// shoot only when player near
if ((abs(player->x - o->x) < (130 << CSF)) &&
(abs(player->y - o->y) < (100 << CSF)))
{
o->timer++;
}
else o->timer = 49;
if (o->timer >= 50)
{
o->frame = 1;
o->state = 2;
o->timer = 0;
}
}
break;
case 2: // mouth opened
{
o->frame = 1;
o->timer++;
if ((o->timer==30 || o->timer==35) && o->onscreen)
{
EmFireAngledShot(o, OBJ_SKELETON_SHOT, 2, 0x300);
sound(SND_EM_FIRE);
}
else if (o->timer > 50)
{
o->frame = 0;
o->state = 1;
o->timer = 0;
}
}
break;
}
}
void aftermove_skullhead_carried(Object *o)
{
Object *crow;
// keep us in the right spot relative to our crow
if (o->linkedobject)
{
crow = o->linkedobject;
o->x = crow->x + (1 << CSF);
o->y = crow->y + (21 << CSF);
o->dir = crow->dir;
}
}
/*
void c------------------------------() {}
*/
void ai_skeleton_shot(Object *o)
{
ai_animate2(o); // animate at 1 frame per 2 ticks
// bounce off walls
if ((o->blockl && o->xinertia < 0) || (o->blockr && o->xinertia > 0))
{
o->xinertia = -o->xinertia;
o->timer += 5;
}
// bounce off ceiling
if ((o->blocku && o->yinertia < 0))
{
o->yinertia = -o->yinertia;
o->timer += 5;
}
// if hit floor bounce along it...
if (o->blockd)
{
o->yinertia = -0x180;
o->state = 1; // begin falling
o->timer += 4;
}
if (o->state == 1)
{
o->yinertia += 0x10;
LIMITY(0x5ff);
}
if (o->timer >= 10)
{
effect(o->CenterX(), o->CenterY(), EFFECT_FISHY);
o->Delete();
}
}
void ai_armadillo(Object *o)
{
switch(o->state)
{
case 0:
{
FACEPLAYER;
o->state = 1;
}
case 1:
{
if (o->blockl && o->dir == LEFT) o->dir = RIGHT;
if (o->blockr && o->dir == RIGHT) o->dir = LEFT;
XMOVE(0x100);
ANIMATE(4, 0, 1);
}
break;
}
o->yinertia += 0x40;
LIMITY(0x5ff);
}
/*
void c------------------------------() {}
*/
void ai_skullstep(Object *o)
{
Object *foot;
switch(o->state)
{
case 0:
{
o->y += (7 << CSF);
// spawn the feet
foot = CreateObject(0, 0, OBJ_SKULLSTEP_FOOT);
foot->linkedobject = o;
foot = CreateObject(0, 0, OBJ_SKULLSTEP_FOOT);
foot->linkedobject = o;
foot->angleoffset = 128;
o->state = 1;
o->angle = 200;
}
case 1:
{
// spin the feet
o->angle += (o->dir==RIGHT) ? 6 : -6;
// if we hit the ground, slow down. if we have been there for a while,
// our feet must have gone away, so go to explode state
if (o->blockd)
{
o->xinertia *= 3;
o->xinertia /= 4;
if (++o->timer > 60)
{
o->state = 2;
o->timer = 0;
}
}
else o->timer = 0;
// turn around if we run into a wall
if ((o->dir==RIGHT && o->blockr) || (o->dir==LEFT && o->blockl))
{
if (++o->timer2 > 8)
{
o->dir ^= 1;
}
}
else o->timer2 = 0;
}
break;
case 2:
{
o->timer++;
o->shaketime = o->timer; // have to set it to timer and not a constant so it alternates
if (o->timer > 50)
{
SmokeClouds(o, 8, 8, 8);
sound(SND_FUNNY_EXPLODE);
o->Delete();
}
}
break;
}
o->yinertia += 0x80;
if (o->blockd) o->yinertia = 0;
LIMITX(0x2ff);
LIMITY(0x2ff);
}
void ai_skullstep_foot(Object *o)
{
Object *skull = o->linkedobject;
uchar angle;
int circle_x, circle_y;
// skull was destroyed before us?
if (!skull || skull->state==2)
{
o->Delete();
return;
}
angle = skull->angle;
angle += o->angleoffset;
// handle moving up when stepping on the ground
if (o->blockd)
skullstep_do_step(o, skull, angle);
o->dir = skull->dir;
// spin around
vector_from_angle(angle, (10 << CSF), &circle_x, &circle_y);
o->x = skull->x + (3 << CSF) + circle_x;
o->y = skull->y + (8 << CSF) + circle_y;
o->frame = (angle >= 20 && angle <= 108) ? 0:1;
}
// prevent climbing the walls. this didn't seem to be a problem in the original
// game but to me, the feet tend to spin into walls when they're near them and
// "falsely" set blockd resulting in skipping up the wall.
void skullstep_do_step(Object *o, Object *skull, int angle)
{
int x, y;
int i;
// get the coordinates of the tile that's blocking us
// we already KNOW we're blockd, so if it returns false, we're standing on a slope
if (o->CheckAttribute(&sprites[o->sprite].block_d, TA_SOLID_NPC, &x, &y))
{
// if the tile above it is also solid, it can't be a floor, it's a wall!
if (tileattr[map.tiles[x][y-1]] & TA_SOLID_NPC)
{
return;
}
else
{
// it's also a wall if the tile below is solid and neither of the tiles to
// the left or right are solid (top of a wall)
if (tileattr[map.tiles[x][y+1]] & TA_SOLID_NPC)
{
// we have to check TWO tiles to the right and see if EITHER is nonsolid because
// of the two-tile wall on the right-lower "arena" slopey part--kind of a hack,
// i hate to have to put map-specific code in
if (!(tileattr[map.tiles[x+1][y]] & TA_SOLID_NPC) || \
!(tileattr[map.tiles[x+2][y]] & TA_SOLID_NPC))
{
if (!(tileattr[map.tiles[x-1][y]] & TA_SOLID_NPC))
{
return;
}
}
}
}
}
// move us up until we're no longer in the ground
for(i=0;i<10;i++)
{
o->y -= (1<y -= (1<UpdateBlockStates(DOWNMASK);
if (!o->blockd) break;
}
// now move us down so we're just touching the ground
o->y += (1<y += (1<xinertia += (o->dir==RIGHT) ? 0x80 : -0x80;
}
/*
void c------------------------------() {}
*/
void ai_skeleton(Object *o)
{
uchar pnear;
#define SKNEAR_X (352<state)
{
case 0:
{
o->frame = o->blockd ? 0:1;
o->xinertia = 0;
// if player comes near, enter attack state
// also if he shoots us while we're inactive, don't just stand there
// like a ninny, jump around!
if (o->shaketime) o->state = 20;
if (pnear) o->state = 10;
}
break;
case 10: // prepare for jump
o->timer = o->timer2 = o->frame = o->xinertia = 0;
o->state = 11;
case 11:
if (++o->timer > 5 && o->blockd)
{
// jump if player near, else go to idle
o->state = pnear ? 20:0;
}
if (o->state != 20) break;
case 20:
{
o->state = 21;
o->frame = 1;
o->timer2 = 0;
o->yinertia = -(random(1, 3) << CSF);
// jump towards player, unless we've been hurt; in that case jump away
if (!o->shaketime)
{
o->xinertia += (o->x > player->x) ? -0x100:0x100;
}
else
{
o->xinertia += (o->x > player->x) ? 0x100:-0x100;
}
}
case 21:
{
if (o->yinertia > 0)
{
if (o->timer2 == 0)
{
o->timer2++;
EmFireAngledShot(o, OBJ_SKELETON_SHOT, 0, 0x300);
if (o->onscreen) sound(SND_EM_FIRE);
}
if (o->blockd)
{
o->state = 10;
o->frame = 0;
}
}
else
{
if (o->blocku) o->yinertia = 0;
}
}
break;
}
if (o->state >= 10) FACEPLAYER;
o->yinertia += 0x33;
LIMITX(0x5ff);
LIMITY(0x5ff);
}
// curly's mimiga's
void ai_curlys_mimigas(Object *o)
{
static const uint8_t mimiga_walk_frames[5] = { 0, 2, 0, 3 };
switch(o->state)
{
case 0: // init/set initial anim state
o->frame = 0;
if (o->type==OBJ_MIMIGAC1) o->state = 100;
else
{ // OBJ_MIMIGAC2 & OBJ_MIMIGA_ENEMY
o->state = 2; // stand and blink
if (o->type==OBJ_MIMIGAC2)
{
if (o->dir == RIGHT)
o->state = 110; // sleeping
}
}
ai_curlys_mimigas(o); // re-process again with correct state
break;
case 2: // init stand and blink
o->state = 3;
case 3: // stand and blink
o->frame = 0;
randblink(o, 1, 8);
break;
// sitting mimiga (when facing right)
// facing away mimiga (when facing left)
case 100:
o->frame = 4;
break;
case 110: // sleeping facing left mimiga
o->frame = 7;
ai_zzzz_spawner(o);
break;
/// ******************** Fighting Mimiga Code ********************
case 10:
o->flags |= FLAG_SHOOTABLE;
o->hp = 1000;
o->state = 11;
o->timer = random(0, 50);
o->frame = 0;
//fall thru to state 11
case 11:
if (o->timer) o->timer--;
else o->state = 13;
break;
case 13:
o->state = 14;
o->timer = random(0, 50);
o->animframe = 0;
if (o->x <= player->x) o->dir = RIGHT;
else o->dir = LEFT;
// fall thru
case 14:
if (++o->animtimer > 2)
{
o->animtimer = 0;
if (++o->animframe > 3) o->animframe = 0;
}
o->frame = mimiga_walk_frames[o->animframe];
if (o->dir==LEFT) o->xinertia -= 0x40;
else o->xinertia += 0x40;
if (o->timer)
{
o->timer--;
}
else
{ // enter hop state
o->state = 15;
o->frame = 2;
o->yinertia = -0x200;
o->damage = 2;
}
break;
case 15: // hopping
if (o->blockd)
{ // landed
o->xinertia = 0;
o->state = 10;
o->damage = 0;
}
break;
case 20: // aiiie! got shot!!
if (o->blockd)
{
o->xinertia = 0;
o->state = 21;
if (o->frame==6) o->frame = 7;
else o->frame = 8;
o->timer = random(300, 400);
}
break;
case 21: // lying on ground knocked out
if (o->timer)
{
o->timer--;
break;
}
o->flags |= FLAG_SHOOTABLE;
o->hp = 1000;
o->state = 11;
o->timer = random(0, 50);
o->frame = 0;
break;
}
if (o->state > 10 && o->state < 20 && o->hp != 1000)
{ // got shot by player
o->state = 20;
o->yinertia = -0x200;
o->frame = random(5, 6);
o->damage = 0;
o->flags &= ~FLAG_SHOOTABLE;
}
o->yinertia += 0x20;
LIMITY(0x5ff);
LIMITX(0x1ff);
}
================================================
FILE: ai/sand/sand.fdh
================================================
//hash:00b4d2dc
//automatically generated by Makegen
/* located in ObjManager.cpp */
//-----------------[referenced from ai/sand/sand.cpp]----------------//
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//-----------------[referenced from ai/sand/sand.cpp]----------------//
Caret *effect(int x, int y, int effectno);
/* located in trig.cpp */
//-----------------[referenced from ai/sand/sand.cpp]----------------//
void vector_from_angle(uint8_t angle, int speed, int *xs, int *ys);
void EmFireAngledShot(Object *o, int objtype, int rand_variance, int speed);
/* located in ai/ai.cpp */
//-----------------[referenced from ai/sand/sand.cpp]----------------//
void ai_animate2(Object *o);
void randblink(Object *o, int blinkframe, int blinktime, int prob);
/* located in ai/sand/sand.cpp */
//-----------------[referenced from ai/sand/sand.cpp]----------------//
void ai_polish(Object *o);
void ondeath_polish(Object *o);
void ai_polishbaby(Object *o);
void ai_sandcroc(Object *o);
void ai_sunstone(Object *o);
void ai_crow(Object *o);
void ai_crowwithskull(Object *o);
void ai_skullhead(Object *o);
void ai_skullhead_carried(Object *o);
void aftermove_skullhead_carried(Object *o);
void ai_skeleton_shot(Object *o);
void ai_armadillo(Object *o);
void ai_skullstep(Object *o);
void ai_skullstep_foot(Object *o);
void skullstep_do_step(Object *o, Object *skull, int angle);
void ai_skeleton(Object *o);
void ai_curlys_mimigas(Object *o);
/* located in ai/sand/puppy.cpp */
//-----------------[referenced from ai/sand/sand.cpp]----------------//
void ai_zzzz_spawner(Object *o);
/* located in ai/sym/smoke.cpp */
//-----------------[referenced from ai/sand/sand.cpp]----------------//
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in sound/sound.cpp */
//-----------------[referenced from ai/sand/sand.cpp]----------------//
void sound(int snd);
/* located in common/misc.cpp */
//-----------------[referenced from ai/sand/sand.cpp]----------------//
int random(int min, int max);
================================================
FILE: ai/sand/toroko_frenzied.cpp
================================================
#include "../stdai.h"
#include "toroko_frenzied.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_TOROKO_FRENZIED, ai_toroko_frenzied);
ONTICK(OBJ_TOROKO_BLOCK, ai_toroko_block);
AFTERMOVE(OBJ_TOROKO_BLOCK, aftermove_toroko_block);
ONTICK(OBJ_TOROKO_FLOWER, ai_toroko_flower);
}
/*
void c------------------------------() {}
*/
void ai_toroko_frenzied(Object *o)
{
Object *block = o->linkedobject;
#define SPAWNBLOCK \
{ \
block = CreateObject(0, 0, OBJ_TOROKO_BLOCK); \
block->PushBehind(o); \
block->linkedobject = o; \
o->linkedobject = block; \
block->flags &= ~FLAG_INVULNERABLE; \
}
#define THROWBLOCK \
{ \
block->x += (16 << CSF) * ((o->dir==RIGHT) ? 1 : -1); \
block->y += (9 << CSF); \
block->flags |= FLAG_INVULNERABLE; \
ThrowObjectAtPlayer(block, 1, 0x900); \
o->linkedobject = block->linkedobject = NULL; \
sound(SND_EM_FIRE); \
}
#define HOLDBRICKTIME 30
switch(o->state)
{
case 0:
o->state = 1;
o->frame = 9;
o->flags &= ~(FLAG_SCRIPTONACTIVATE | FLAG_SHOOTABLE | FLAG_IGNORE_SOLID);
case 1: // wait a sec before morphing
if (++o->timer > 50)
{
o->timer = 0;
o->state = 2;
o->frame = 8;
}
break;
case 2: // morph into big toroko
ANIMATE(0, 9, 10);
if (++o->timer > 50)
{
o->state = 3;
o->timer = 0;
o->flags |= FLAG_SHOOTABLE;
}
break;
case 3: // rest a moment, then jump
o->frame = 1;
if (++o->timer > 5)
{
o->state = 10;
o->flags |= FLAG_SHOOTABLE;
}
break;
case 10: // wait a moment then ATTACK!!
o->state = 11;
o->frame = 0;
o->animtimer = 0;
o->timer = random(20, 130);
o->xinertia = 0;
case 11:
FACEPLAYER;
ANIMATE(4, 0, 1);
///FIXME:: I think Toroko does not like fireball either?
if (o->frame==0 && (sound_is_playing(SND_MISSILE_HIT) /*|| sound_is_playing(0)*/))
{
o->state = 20;
}
if (!o->timer)
{
o->state = (random(0, 1) ? 20 : 50);
}
else o->timer--;
break;
case 20: // init for a jump
o->state = 21;
o->frame = 2;
o->timer = 0;
case 21: // preparing to jump
if (++o->timer > 10)
{
o->state = 22;
o->timer = 0;
o->frame = 3;
o->yinertia = -0x5ff;
XMOVE(0x200);
}
break;
case 22: // jumping up
if (++o->timer > 10) { o->state = 23; o->timer = 0; o->frame = 6; SPAWNBLOCK; }
break;
case 23: // preparing to throw block
if (++o->timer > HOLDBRICKTIME) { o->state = 24; o->timer = 0; o->frame = 7; THROWBLOCK; }
FACEPLAYER;
break;
case 24: // threw block
if (++o->timer > 3) { o->state = 25; o->frame = 3; }
break;
case 25: // coming back down
if (o->blockd)
{
o->state = 26;
o->timer = 0;
o->frame = 2;
sound(SND_QUAKE);
game.quaketime = 20;
}
break;
case 26: // landed
o->xinertia *= 8;
o->xinertia /= 9;
if (++o->timer > 20)
{
o->state = 10;
o->frame = 0;
}
break;
case 50: // throw a block (standing on ground)
o->state = 51;
o->timer = 0;
o->frame = 4;
SPAWNBLOCK;
case 51:
if (++o->timer > HOLDBRICKTIME)
{
o->state = 52;
o->timer = 0;
o->frame = 5;
THROWBLOCK;
}
FACEPLAYER;
break;
case 52:
if (++o->timer > 3) { o->state = 10; o->frame = 0; }
break;
case 100: // defeated (set by Script On Death)
o->frame = 3;
o->state = 101;
o->flags &= ~FLAG_SHOOTABLE;
SmokeClouds(o, 8, 8, 8);
case 101: // wait till fall to ground
if (o->blockd)
{
o->state = 102;
o->frame = 2;
o->timer = 0;
sound(SND_QUAKE);
game.quaketime = 20;
}
break;
case 102: // crouching & smoking
o->xinertia *= 8; o->xinertia /= 9;
if (++o->timer > 50) { o->state = 103; o->timer = 0; o->frame = 10; }
break;
case 103: // looks pained
if (++o->timer > 50) { o->state = 104; o->timer = 0; o->frame = 9; }
break;
case 104: // morphing back into normal toroko
o->frame = (o->frame==9) ? 10:9;
if (++o->timer > 100) { o->state = 105; o->timer = 0; o->frame = 9; }
break;
case 105: // back to normal
if (++o->timer > 50) { o->state = 106; o->animtimer = 0; o->frame = 11; }
break;
case 106: // red goes out of her eyes, she falls down
if (++o->animtimer > 50)
{ // collapse
o->animtimer = 0;
if (++o->frame > 12) o->frame = 12;
}
break;
case 140: // disappear
o->state = 141;
o->timer = 0;
o->frame = 12;
sound(SND_TELEPORT);
case 141:
o->invisible ^= 1;
if (++o->timer > 100)
{
// normal SmokeClouds() doesn't spawn in the right place because the sprite
// is still sized for big toroko, so I made an Action Point for this frame.
SmokePuff(o->ActionPointX(), o->ActionPointY());
SmokePuff(o->ActionPointX(), o->ActionPointY());
SmokePuff(o->ActionPointX(), o->ActionPointY());
SmokePuff(o->ActionPointX(), o->ActionPointY());
o->Delete();
}
break;
}
if (o->state > 100 && o->state <= 105)
{
if ((o->timer % 9)==1)
{
SmokeClouds(o, 1, 8, 8);
}
}
o->yinertia += 0x20;
LIMITY(0x5ff);
}
/*
void c------------------------------() {}
*/
// the blocks Frenzied Toroko throws
void ai_toroko_block(Object *o)
{
int hit;
o->frame ^= 1;
// if he's still holding us, just let the _am routine stick us to his action point
if (o->linkedobject) return;
hit = 0;
if (o->xinertia < 0) hit = o->blockl;
else if (o->xinertia > 0) hit = o->blockr;
if (o->yinertia < 0) hit |= o->blocku;
else if (o->yinertia > 0) hit |= o->blockd;
if (hit)
{
SmokeClouds(o, 6, 8, 8);
effect(o->CenterX(), o->CenterY(), EFFECT_FISHY);
sound(SND_BLOCK_DESTROY);
o->ChangeType(OBJ_TOROKO_FLOWER);
o->frame = 0;
o->state = 20;
o->xinertia = 0;
o->flags &= ~FLAG_INVULNERABLE;
o->flags |= FLAG_SHOOTABLE;
o->BringToFront(); // block was behind toro, but flowers are in front
}
}
void aftermove_toroko_block(Object *o)
{
if (o->linkedobject)
aftermove_StickToLinkedActionPoint(o);
}
void ai_toroko_flower(Object *o)
{
switch(o->state)
{
case 10:
o->state = 11;
o->timer = o->frame = 0;
case 11:
if (++o->timer > 30)
{
o->state = 12;
o->frame = 1;
o->animtimer = 0;
}
break;
case 12:
ANIMATE_FWD(8);
if (o->frame == 3)
{
o->state = 20;
o->yinertia = -0x200;
o->xinertia = (o->x > player->x) ? -0x200 : 0x200;
}
break;
case 20: // falling/jumping
if (o->yinertia > -0x80) o->frame = 4; else o->frame = 3;
if (o->blockd)
{
o->frame = 2;
o->state = 21;
o->timer = o->xinertia = 0;
sound(SND_THUD);
}
break;
case 21:
if (++o->timer > 10) { o->state = 10; o->frame = 0; }
break;
}
o->yinertia += 0x40;
LIMITY(0x5ff);
}
================================================
FILE: ai/sand/toroko_frenzied.fdh
================================================
//hash:d1502efe
//automatically generated by Makegen
/* located in ObjManager.cpp */
//------------[referenced from ai/sand/toroko_frenzied.cpp]----------//
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//------------[referenced from ai/sand/toroko_frenzied.cpp]----------//
Caret *effect(int x, int y, int effectno);
/* located in trig.cpp */
//------------[referenced from ai/sand/toroko_frenzied.cpp]----------//
void ThrowObjectAtPlayer(Object *o, int rand_variance, int speed);
/* located in ai/ai.cpp */
//------------[referenced from ai/sand/toroko_frenzied.cpp]----------//
void aftermove_StickToLinkedActionPoint(Object *o);
/* located in ai/sand/toroko_frenzied.cpp */
//------------[referenced from ai/sand/toroko_frenzied.cpp]----------//
void ai_toroko_frenzied(Object *o);
void ai_toroko_block(Object *o);
void aftermove_toroko_block(Object *o);
void ai_toroko_flower(Object *o);
/* located in ai/sym/smoke.cpp */
//------------[referenced from ai/sand/toroko_frenzied.cpp]----------//
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
Object *SmokePuff(int x, int y);
/* located in sound/sound.cpp */
//------------[referenced from ai/sand/toroko_frenzied.cpp]----------//
void sound(int snd);
bool sound_is_playing(int snd);
/* located in common/misc.cpp */
//------------[referenced from ai/sand/toroko_frenzied.cpp]----------//
int random(int min, int max);
================================================
FILE: ai/stdai.h
================================================
#ifndef _STDAI_H
#define _STDAI_H
#include "../nx.h"
extern InitList AIRoutines;
#define ONTICK(OBJTYPE, FUNCTION) objprop[OBJTYPE].ai_routines.ontick = FUNCTION;
#define ONDEATH(OBJTYPE, FUNCTION) objprop[OBJTYPE].ai_routines.ondeath = FUNCTION;
#define AFTERMOVE(OBJTYPE, FUNCTION) objprop[OBJTYPE].ai_routines.aftermove = FUNCTION;
#define ONSPAWN(OBJTYPE, FUNCTION) objprop[OBJTYPE].ai_routines.onspawn = FUNCTION;
#define GENERIC_NPC(O) \
{ \
ONSPAWN(O, onspawn_generic_npc); \
ONTICK(O, ai_generic_npc); \
}
#define GENERIC_NPC_NOFACEPLAYER(O) \
{ \
ONSPAWN(O, onspawn_generic_npc); \
ONTICK(O, ai_generic_npc_nofaceplayer); \
}
void aftermove_StickToLinkedActionPoint(Object *o);
void onspawn_set_frame_from_id2(Object *o);
void onspawn_snap_to_ground(Object *o);
void ai_generic_angled_shot(Object *o);
void ai_generic_npc(Object *o);
void ai_generic_npc_nofaceplayer(Object *o);
void onspawn_generic_npc(Object *o);
void ai_animate1(Object *o);
void ai_animate2(Object *o);
void ai_animate3(Object *o);
void ai_animate4(Object *o);
void ai_animate5(Object *o);
void KillObjectsOfType(int type);
void DeleteObjectsOfType(int type);
#endif
================================================
FILE: ai/sym/smoke.cpp
================================================
#include "../stdai.h"
#include "smoke.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_SMOKE_CLOUD, ai_smokecloud);
}
/*
void c------------------------------() {}
*/
// spawn a single smoke puff at x,y and heading off in a random direction
Object *SmokePuff(int x, int y)
{
Object *o = CreateObject(x, y, OBJ_SMOKE_CLOUD);
vector_from_angle(random(0,255), random(0x200,0x5ff), &o->xinertia, &o->yinertia);
return o;
}
// spawn a cloud of smoke centered around object o and starting within "range" distance.
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind)
{
SmokeXY(o->CenterX(), o->CenterY(), nclouds, rangex, rangey, push_behind);
}
void SmokeXY(int x, int y, int nclouds, int rangex, int rangey, Object *push_behind)
{
Object *s;
for(int i=0;iPushBehind(push_behind);
}
}
// spawns smoke from the given side of the object,
// as if it the object had smacked into something.
// for example if an object smashed into ground you could pass DOWN in dir.
void SmokeSide(Object *o, int nclouds, int dir)
{
int xmin, xmax, ymin, ymax;
int xi_min, xi_max, yi_min, yi_max;
static const int SSLOW = 0x155;
static const int SFAST = 0x600;
switch(dir)
{
case UP:
case DOWN:
{
xmin = 0;
xmax = o->Width();
xi_min = -SSLOW;
xi_max = SSLOW;
if (dir == UP)
{
ymin = ymax = 0;
yi_min = 0;
yi_max = SFAST;
}
else
{
ymin = ymax = (o->Height() - (2<Height();
yi_min = -SSLOW;
yi_max = SSLOW;
if (dir == LEFT)
{
xmin = xmax = 0;
xi_min = 0;
xi_max = SFAST;
}
else
{
xmin = xmax = (o->Width() - (2<Width();
ymin = 0; ymax = o->Height();
xi_min = -SSLOW; xi_max = SSLOW;
yi_min = -SSLOW; yi_max = 0;
}
break;
}
for(int i=0;ix + random(xmin, xmax),
o->y + random(ymin, ymax),
OBJ_SMOKE_CLOUD,
random(xi_min, xi_max),
random(yi_min, yi_max));
}
}
void SmokeCloudsSlow(int x, int y, int nclouds)
{
for(int i=0;iCenterX() + random(-16<CenterY() + random(-16<state)
{
if (!random(0, 1)) o->frame = 1;
o->state = 1;
}
if (++o->animtimer >= 5)
{
o->animtimer = 0;
if (++o->frame >= sprites[o->sprite].nframes)
o->Delete();
}
o->xinertia *= 20; o->xinertia /= 21;
o->yinertia *= 20; o->yinertia /= 21;
}
================================================
FILE: ai/sym/smoke.fdh
================================================
//hash:19c7b1dc
//automatically generated by Makegen
/* located in ObjManager.cpp */
//-----------------[referenced from ai/sym/smoke.cpp]----------------//
Object *CreateObject(int x, int y, int type);
/* located in trig.cpp */
//-----------------[referenced from ai/sym/smoke.cpp]----------------//
void vector_from_angle(uint8_t angle, int speed, int *xs, int *ys);
/* located in ai/sym/smoke.cpp */
//-----------------[referenced from ai/sym/smoke.cpp]----------------//
Object *SmokePuff(int x, int y);
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
void SmokeXY(int x, int y, int nclouds, int rangex, int rangey, Object *push_behind);
void SmokeSide(Object *o, int nclouds, int dir);
void SmokeCloudsSlow(int x, int y, int nclouds);
void SmokeBoomUp(Object *o);
void ai_smokecloud(Object *o);
/* located in common/misc.cpp */
//-----------------[referenced from ai/sym/smoke.cpp]----------------//
int random(int min, int max);
================================================
FILE: ai/sym/sym.cpp
================================================
#include "../stdai.h"
#include "sym.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_NULL, ai_null);
ONTICK(OBJ_HVTRIGGER, ai_hvtrigger);
ONTICK(OBJ_XP, ai_xp);
ONTICK(OBJ_HEART, ai_powerup);
ONTICK(OBJ_HEART3, ai_powerup);
ONTICK(OBJ_MISSILE, ai_powerup);
ONTICK(OBJ_MISSILE3, ai_powerup);
ONTICK(OBJ_HIDDEN_POWERUP, ai_hidden_powerup);
ONTICK(OBJ_DOOR, ai_door);
ONTICK(OBJ_LARGEDOOR, ai_largedoor);
ONTICK(OBJ_SAVE_POINT, ai_save_point);
ONTICK(OBJ_RECHARGE, ai_recharge);
ONTICK(OBJ_CHEST_CLOSED, ai_chest_closed);
ONTICK(OBJ_CHEST_OPEN, ai_chest_open);
ONTICK(OBJ_TELEPORTER, ai_teleporter);
ONTICK(OBJ_TELEPORTER_LIGHTS, ai_animate2);
ONTICK(OBJ_COMPUTER, ai_animate4);
ONTICK(OBJ_TERMINAL, ai_terminal);
ONTICK(OBJ_LIFE_CAPSULE, ai_animate4);
ONTICK(OBJ_XP_CAPSULE, ai_xp_capsule);
ONTICK(OBJ_SPRINKLER, ai_sprinkler);
ONTICK(OBJ_WATER_DROPLET, ai_water_droplet);
ONTICK(OBJ_LAVA_DROPLET, ai_water_droplet);
ONTICK(OBJ_DROPLET_SPAWNER, ai_droplet_spawner);
ONTICK(OBJ_FAN_UP, ai_fan_vert);
ONTICK(OBJ_FAN_DOWN, ai_fan_vert);
ONTICK(OBJ_FAN_LEFT, ai_fan_hoz);
ONTICK(OBJ_FAN_RIGHT, ai_fan_hoz);
ONTICK(OBJ_FAN_DROPLET, ai_fan_droplet);
ONTICK(OBJ_PRESS, ai_press);
ONTICK(OBJ_HIDDEN_SPARKLE, ai_animate4);
ONTICK(OBJ_LIGHTNING, ai_lightning);
ONTICK(OBJ_STRAINING, ai_straining);
ONTICK(OBJ_BUBBLE_SPAWNER, ai_bubble_spawner);
ONTICK(OBJ_CHINFISH, ai_chinfish);
ONTICK(OBJ_FIREPLACE, ai_fireplace);
ONTICK(OBJ_SMOKE_DROPPER, ai_smoke_dropper);
ONSPAWN(OBJ_SPIKE_SMALL, onspawn_spike_small);
ONTICK(OBJ_SCROLL_CONTROLLER, ai_scroll_controller);
ONTICK(OBJ_QUAKE, ai_quake);
}
/*
void c------------------------------() {}
*/
// ai routine for OBJ_NULL
void ai_null(Object *o)
{
if (o->state == 0)
{
o->state = 1;
// FLAG_FACES_RIGHT is causes the object to drop down one tile when actually
// seen in the game. I think this was used to make map editing easier in
// places where things were getting really crouded with entities.
if (o->dir == RIGHT)
{
o->y += (TILE_H << CSF);
// precedence hack for Boulder Chamber
if (game.curmap == STAGE_BOULDER_CHAMBER)
{
Object *boulder = Objects::FindByType(OBJ_BOULDER);
if (boulder) o->PushBehind(boulder);
}
}
}
}
// H/V Trigger
//
// By default, triggers on vertical axis.
// If set to face right, it triggers on horizontal axis instead.
//
// If FLAG_SCRIPTONTOUCH is set, projects an invisible horizontal or vertical "Beam"
// which is blocked by solid bricks, and only by intersecting the beam
// can the player trip the trigger.
//
void ai_hvtrigger(Object *o)
{
// init: find bounding box within which we will trigger
if (o->state == 0)
{
o->state = 1;
o->hvt.is_horizontal = (o->dir == LEFT);
// start with a trigger box around object which
// encloses only the object's tile itself.
o->hvt.x1 = o->x;
o->hvt.y1 = o->y;
o->hvt.x2 = o->x + ((TILE_W - 1) << CSF);
o->hvt.y2 = o->y + ((TILE_H - 1) << CSF);
// now expand the trigger box as appropriate
if (o->flags & FLAG_SCRIPTONTOUCH)
{
o->flags &= ~FLAG_SCRIPTONTOUCH;
hv_project_beam(o);
}
else if (o->hvt.is_horizontal)
{
o->hvt.x1 = 0;
o->hvt.x2 = (map.xsize * TILE_W) << CSF;
}
else
{
o->hvt.y1 = 0;
o->hvt.y2 = (map.ysize * TILE_H) << CSF;
}
}
if (game.debug.DrawBoundingBoxes)
AddDebugMark(o->hvt.x1, o->hvt.y1, o->hvt.x2, o->hvt.y2, DM_BOX, 255, 0, 255);
int px = player->CenterX();
if (px > o->hvt.x2) return;
if (px < o->hvt.x1) return;
int py = player->CenterY();
if (py > o->hvt.y2) return;
if (py < o->hvt.y1) return;
if (game.debug.DrawBoundingBoxes)
AddDebugMark(o->hvt.x1, o->hvt.y1, o->hvt.x2, o->hvt.y2, DM_BOX, 0, 255, 0);
// ok then, we can trigger, except for:
if (GetCurrentScript() == -1 && // no override other scripts
game.switchstage.mapno == -1) // no repeat exec after id2, o);
StartScript(o->id2);
}
}
// project the Option 1 beam and set the hvtrigger's y1/y2 or x1/x2
static void hv_project_beam(Object *o)
{
int tilex = (o->x >> CSF) / TILE_W;
int tiley = (o->y >> CSF) / TILE_H;
int x, y, t;
if (!o->hvt.is_horizontal)
{
for(y=tiley;y>=0;y--)
{
t = map.tiles[tilex][y];
if (tileattr[t] & TA_SOLID) { y++; break; }
}
o->hvt.y1 = (y * TILE_H) << CSF;
for(y=tiley;yhvt.y2 = ((y * TILE_H) + (TILE_H - 1)) << CSF;
}
else
{
for(x=tilex;x>=0;x--)
{
t = map.tiles[x][tiley];
if (tileattr[t] & TA_SOLID) { x++; break; }
}
o->hvt.x1 = (x * TILE_W) << CSF;
for(x=tilex;xhvt.x2 = ((x * TILE_W) + (TILE_W - 1)) << CSF;
}
}
/*
void c------------------------------() {}
*/
void ai_xp(Object *o)
{
if (o->state == 0)
{
o->yinertia = random(-400, 0);
o->state = 1;
}
if (Handle_Falling_Left(o))
{ // left-falling bouncing
if (map.scrolltype == BK_FASTLEFT_LAYERS) // as opposed to Ironhead (BK_FASTLEFT)
{
if (o->blockl)
{
if (o->onscreen || pdistly((SCREEN_HEIGHT - (SCREEN_HEIGHT / 3)) << CSF))
sound(SND_XP_BOUNCE);
o->xinertia = 0x100;
o->yinertia *= 2;
o->yinertia /= 3;
}
if (o->blocku || o->blockd)
{
o->yinertia = -o->yinertia;
}
}
}
else
{ // normal bouncing
if (o->blockd)
{
// disappear if we were spawned embedded in ground
// added for XP spawned by sandcrocs
if (o->blocku || (o->blockl && o->blockr))
{
o->Delete();
return;
}
if (o->onscreen || pdistlx((SCREEN_WIDTH - (SCREEN_WIDTH / 3)) << CSF))
sound(SND_XP_BOUNCE);
o->yinertia = -0x280;
o->xinertia *= 2;
o->xinertia /= 3;
}
else
{
o->yinertia += 42;
}
if (o->blockl || o->blockr)
{
o->xinertia = -o->xinertia;
}
}
if (++o->animtimer >= 3)
{
o->animtimer = 0;
if (++o->frame > 5) o->frame = 0;
}
if (++o->timer > 0x1f4)
{
o->Delete();
return;
}
else if (o->timer > 0x1f2)
{ // twinkle before disappearing
o->frame = 0;
o->invisible = 0;
return;
}
else if (o->timer > 0x190)
{
o->invisible = (o->timer & 2);
}
// let player get it!
if (hitdetect(o, player))
{
switch(o->sprite)
{
case SPR_XP_SMALL: AddXP(XP_SMALL_AMT); break;
case SPR_XP_MED: AddXP(XP_MED_AMT); break;
case SPR_XP_LARGE: AddXP(XP_LARGE_AMT); break;
}
o->Delete();
}
}
// Hearts and Missiles
void ai_powerup(Object *o)
{
// if o->state == 0, then was present in map; not dropped by an enemy...lasts forever
if (o->state > 0)
{
Handle_Falling_Left(o);
switch(o->state)
{
case 1: // animating
case 101: // animating (in left-fall mode)
if (++o->timer >= 256) { o->timer = 0; o->state++; }
else break;
case 2: // start blinking--we're about to go away!!
case 102: // blinking (in left-fall mode)
if (++o->timer > 48)
{
effect(o->CenterX()-(1<CenterY()-(1<Delete();
return;
}
o->invisible = (o->timer2 & 2);
o->timer2++;
break;
}
// animation/frame selection
if (++o->animtimer > 2)
{
o->animtimer = 0;
o->frame ^= 1;
}
}
else if (!o->state)
{ // adjust position of map-spawned missiles
if (o->type == OBJ_MISSILE)
{
o->x += (3 << CSF);
o->y += (4 << CSF);
}
o->state = -1;
}
// hand over the powerup if player touches it
if (hitdetect(o, player))
{
switch(o->type)
{
case OBJ_HEART: sound(SND_HEALTH_REFILL); AddHealth(2); break;
case OBJ_HEART3: sound(SND_HEALTH_REFILL); AddHealth(6); break;
case OBJ_MISSILE:
case OBJ_MISSILE3:
{
int amt = (o->type == OBJ_MISSILE3) ? 3 : 1;
int wpn = (player->weapons[WPN_SUPER_MISSILE].hasWeapon) ? \
WPN_SUPER_MISSILE : WPN_MISSILE;
sound(SND_GET_MISSILE);
AddAmmo(wpn, amt);
}
break;
}
o->Delete();
}
}
bool Handle_Falling_Left(Object *o)
{
if (map.scrolltype == BK_FASTLEFT || \
map.scrolltype == BK_FASTLEFT_LAYERS)
{
if (o->state < 100) // initilize
{
o->state += 100;
o->yinertia = random(-0x20, 0x20);
o->xinertia = random(127, 256);
//o->nxflags |= NXFLAG_FOLLOW_SLOPE;
}
o->xinertia -= 0x08;
if (o->xinertia < -0x600) o->xinertia = -0x600;
if (map.scrolltype == BK_FASTLEFT)
{
if (o->x < ((5 * TILE_W) << CSF)) o->Delete(); // went off screen in IronH
}
if (o->blockl && o->xinertia <= 0) o->xinertia = 0x40;
if (o->blocku && o->yinertia <= 0) o->yinertia = 0x40;
if (o->blockd && o->yinertia >= 0) o->yinertia = -0x40;
return 1;
}
return 0;
}
// hidden heart/missile
void ai_hidden_powerup(Object *o)
{
if (o->hp < 990)
{
SmokeBoomUp(o);
sound(SND_EXPL_SMALL);
o->ChangeType((o->dir == LEFT) ? OBJ_HEART : OBJ_MISSILE);
if (o->type == OBJ_HEART)
{
o->x += (3 << CSF);
o->y += (4 << CSF);
}
}
}
void ai_xp_capsule(Object *o)
{
ANIMATE(4, 0, 1);
if (o->hp < 100)
{
o->SpawnXP(o->id1);
SmokeClouds(o, 8, 2, 2);
sound(SND_FUNNY_EXPLODE);
o->Delete();
}
}
/*
void c------------------------------() {}
*/
void ai_save_point(Object *o)
{
if (o->state == 0)
{
smoke_if_bonus_item(o);
o->flags |= FLAG_SCRIPTONACTIVATE; // needed for SP after Sisters fight
o->state = 1;
}
ai_animate3(o);
o->yinertia += 0x40;
LIMITY(0x5ff);
}
void ai_recharge(Object *o)
{
switch(o->state)
{
case 0:
{
smoke_if_bonus_item(o);
o->state = 1;
}
case 1: // flickery animation
{
int x = random(0, 30);
if (x < 10) o->state = 2;
else if (x < 25) o->state = 3;
else o->state = 4;
o->timer = random(16, 64);
o->animtimer = 0;
}
break;
case 2: o->frame = 0; break; // solid on
case 3: // flickery
o->animtimer++;
o->frame = (o->animtimer & 1);
break;
case 4: o->frame = 1; break; // solid off
}
if (--o->timer <= 0)
o->state = 1;
o->yinertia += 0x40;
LIMITY(0x5ff);
}
void ai_chest_closed(Object *o)
{
if (o->state == 0)
{
smoke_if_bonus_item(o);
o->flags |= FLAG_SCRIPTONACTIVATE; // isn't always set
o->state = 1;
// stop motion of chest spawned from Kulala
if (settings->emulate_bugs)
o->xinertia = 0;
}
// gleaming animation
if (++o->timer < 3) o->frame = 1;
else if (o->timer < 6) o->frame = 2;
else
{
o->frame = 0;
if (o->timer >= 80) o->timer = 0;
}
// need this for the big jelly that drops a chest in Weed
if (o->blockd)
o->xinertia = 0;
// fall
o->yinertia += 0x40;
LIMITY(0x5ff);
}
void ai_chest_open(Object *o)
{
o->flags |= FLAG_SCRIPTONACTIVATE;
}
// save points, recharges, and chests make smoke and jump in air for a moment
// when spawned as a bonus item (e.g. after a boss fight). That they should do
// this is indicated by the script setting it's direction to RIGHT.
static void smoke_if_bonus_item(Object *o)
{
if (o->dir == RIGHT)
{
SmokeClouds(o, 4, 8, 8);
o->yinertia = -0x200;
}
}
/*
void c------------------------------() {}
*/
void ai_lightning(Object *o)
{
switch(o->state)
{
case 0:
{
o->invisible = true;
o->state = 1;
if (o->dir == RIGHT)
flashscreen.Start();
}
case 1:
{
if (++o->timer > 10)
{
o->state = 2;
o->invisible = false;
sound(SND_LIGHTNING_STRIKE);
}
}
break;
case 2:
{
if (++o->animtimer > 2)
{
o->animtimer = 0;
if (o->frame >= 3)
{
for(int i=0;i<5;i++)
SmokePuff(o->ActionPointX(), o->ActionPointY());
effect(o->ActionPointX(), o->ActionPointY(), EFFECT_BOOMFLASH);
o->Delete();
}
else
{
if (++o->frame == 2)
o->damage = 10;
}
}
}
break;
}
}
void ai_teleporter(Object *o)
{
if (o->state==0)
{
o->frame = 0;
}
else
{
o->frame ^= 1;
}
}
void ai_door(Object *o)
{
switch(o->state)
{
case 0:
o->frame = (o->dir == RIGHT) ? 1:0;
break;
case 1: // being banged on
o->shaketime = 20;
o->state = 0;
break;
}
}
void ai_largedoor(Object *o)
{
switch(o->state)
{
case 0:
o->state = 1;
if (o->dir==RIGHT)
{
//o->frame = 1;
o->x -= (TILE_W << CSF);
}
o->xmark = o->x;
break;
case 10: // door opens into frame
o->state = 11;
o->timer = 0;
o->flags |= FLAG_IGNORE_SOLID;
o->clip_enable = 1;
case 11:
{
int px;
o->timer++;
if ((o->timer & 7)==0)
{
sound(SND_QUAKE);
}
px = (o->timer >> 3);
if (o->dir==LEFT)
{
o->x = o->xmark - (px << CSF);
o->clipx1 = px;
}
else
{
o->x = o->xmark + (px << CSF);
o->clipx2 = (16 - px);
}
if (o->timer==104) o->Delete();
}
}
}
void ai_press(Object *o)
{
switch(o->state)
{
case 0:
{
if (!o->blockd)
{
o->state = 10;
o->frame = 1;
}
}
break;
case 10: // fall
{
if (o->frame < 2)
ANIMATE_FWD(2);
o->yinertia += 0x20;
LIMITY(0x5ff);
if (o->y < player->y)
{
o->flags &= ~FLAG_SOLID_BRICK;
o->damage = 127;
}
else
{
o->flags |= FLAG_SOLID_BRICK;
o->damage = 0;
}
if (o->blockd)
{
SmokeSide(o, 4, DOWN);
quake(10);
o->state = 0;
o->frame = 0;
o->damage = 0;
o->flags |= FLAG_SOLID_BRICK;
}
}
break;
}
}
void ai_terminal(Object *o)
{
switch(o->state)
{
case 0:
case 1:
o->frame = 0;
if (pdistlx(8<frame = 1;
o->state = 10;
}
break;
case 10:
ANIMATE(0, 1, 2);
break;
}
}
/*
void c------------------------------() {}
*/
#define FAN_BLOW_FORCE 0x88
void ai_fan_vert(Object *o)
{
if (o->dir == LEFT)
{ // fan off
o->frame = 0;
return;
}
int blowdir = (o->type == OBJ_FAN_UP) ? UP : DOWN;
ANIMATE(0, 0, 2);
// spawn droplet effects
if (pdistlx(SCREEN_WIDTH << CSF) && pdistly(SCREEN_HEIGHT << CSF))
{
if (!random(0, 5))
{
int x = o->x + (random(4, 12) << CSF);
int y = (blowdir == DOWN) ? o->Bottom() : o->y;
Object *drop = CreateObject(x, y, OBJ_FAN_DROPLET);
drop->dir = blowdir;
}
}
// blow player
if (pdistlx(8 << CSF) && pdistly(96 << CSF))
{
if (blowdir == UP && player->y < o->y)
player->yinertia -= FAN_BLOW_FORCE;
if (blowdir == DOWN && player->y > o->Bottom())
player->yinertia += FAN_BLOW_FORCE;
}
}
void ai_fan_hoz(Object *o)
{
if (o->dir == LEFT)
{ // fan off
o->frame = 0;
return;
}
int blowdir = (o->type == OBJ_FAN_LEFT) ? LEFT : RIGHT;
ANIMATE(0, 0, 2);
// spawn droplet effects
if (pdistlx(SCREEN_WIDTH << CSF) && pdistly(SCREEN_HEIGHT << CSF))
{
if (!random(0, 5))
{
int x = (blowdir == LEFT) ? o->x : o->Right();
int y = o->y + (random(4, 12) << CSF);
Object *drop = CreateObject(x, y, OBJ_FAN_DROPLET);
drop->dir = blowdir;
}
}
// blow player
if (pdistlx(96 << CSF) && pdistly(8 << CSF))
{
if (blowdir == LEFT && player->x < o->x)
player->xinertia -= FAN_BLOW_FORCE;
if (blowdir == RIGHT && player->x > o->Right())
player->xinertia += FAN_BLOW_FORCE;
}
}
// the visible moving air current from fans
void ai_fan_droplet(Object *o)
{
switch(o->state)
{
case 0:
o->state = 1;
o->frame = random(0, 2);
o->xinertia = o->yinertia = 0;
switch(o->dir)
{
case LEFT: o->xinertia = -1; break;
case RIGHT: o->xinertia = 1; break;
case UP: o->yinertia = -1; break;
case DOWN: o->yinertia = 1; break;
}
o->dir = RIGHT; // so frame is correct
o->xinertia *= random((2 << CSF), (4 << CSF));
o->yinertia *= random((2 << CSF), (4 << CSF));
case 1:
ANIMATE_FWD(6);
if (o->frame > 4) o->Delete();
break;
}
}
/*
void c------------------------------() {}
*/
// Yamashita Farm and Plantation water-droplet emitter
// throws out oodles of water splash droplets
void ai_sprinkler(Object *o)
{
if (o->dir == RIGHT) return;
if (++o->animtimer & 1)
o->frame ^= 1;
if (pdistlx(0x28000) && pdistly(0x1E000))
{
Object *drop;
drop = CreateObject(o->CenterX() + (1<CenterY() + (1<xinertia = random(-(2 << CSF), (2 << CSF));
drop->yinertia = random(-(3 << CSF), 384);
}
}
// generates small splash water droplets
void ai_droplet_spawner(Object *o)
{
if (pdistlx(SCREEN_WIDTH << CSF) && pdistly(SCREEN_HEIGHT << CSF))
{
if (!random(0, 80))
{
CreateObject(o->x + (random(2, (TILE_W - 2)) << CSF), o->y, OBJ_WATER_DROPLET);
}
}
}
// small flying water droplet from splashes or sprinklers
void ai_water_droplet(Object *o)
{
static const Point waterattrpoint[] = { 0, -3 };
o->flags &= ~FLAG_IGNORE_SOLID;
o->yinertia += 0x20;
if (o->yinertia > 0x5ff) o->yinertia = 0x5ff;
o->frame = random(0, 4);
if (++o->timer > 10)
{
if (o->blockl || o->blockr || o->blockd || \
(o->GetAttributes(waterattrpoint, 1, NULL) & TA_WATER))
{
o->Delete();
}
}
}
/*
void c------------------------------() {}
*/
void ai_bubble_spawner(Object *o)
{
Object *ko;
if (o->dir == LEFT)
{ // spawn smoke (broken motorcycle in Grass)
if (!random(0, 40))
{
ko = CreateObject(o->x + (random(-20, 20) << CSF), o->y, OBJ_SMOKE_CLOUD);
ko->xinertia = 0x100;
ko->yinertia = -0x200;
}
}
else
{ // spawn "bubbles" (IronH battle)
ko = CreateObject(o->x + (random(-160, 160) << CSF), \
o->y + (random(-128, 128) << CSF), \
OBJ_FAN_DROPLET);
ko->dir = RIGHT;
ko->xinertia = 0x100;
}
}
void ai_chinfish(Object *o)
{
switch(o->state)
{
case 0:
o->state = 1;
o->xmark = o->x;
o->ymark = o->y;
o->yinertia = 0x88;
case 1:
o->yinertia += (o->y > o->ymark) ? -8:8;
LIMITY(0x100);
ANIMATE(4, 0, 1);
if (o->shaketime) o->frame = 2;
break;
}
}
void ai_fireplace(Object *o)
{
switch(o->state)
{
case 0: // burn
o->frame = 0;
o->state = 1;
o->invisible = 0;
case 1:
ai_animate4(o);
break;
case 10: // extinguished by Jellyfish Juice
o->state = 11;
effect(o->CenterX(), o->CenterY(), EFFECT_BOOMFLASH);
SmokeClouds(o, 8, 16, 16);
case 11:
o->invisible = 1;
break;
}
}
// straining effect from Boulder Chamber
void ai_straining(Object *o)
{
switch(o->state)
{
case 0:
{
if (o->dir == LEFT)
{ // curly's straining
o->x += (14 << CSF);
o->y -= (18 << CSF);
}
else
{ // player's straining
o->x = player->x - (6 << CSF);
o->y = player->y - (2 << CSF);
}
o->state = 1;
}
case 1:
{
if (++o->animtimer > 8)
{
o->animtimer = 0;
o->frame ^= 1;
if (++o->timer2 >= 8)
o->Delete();
}
}
break;
}
}
// used by CMP to delay smoke created during a PRI until the PRI is released.
// See the description in tsc.cpp.
void ai_smoke_dropper(Object *o)
{
SmokeXY(o->x, o->y, o->timer2, TILE_W/2, TILE_H/2);
o->Delete();
}
/*
void c------------------------------() {}
*/
// this object is used in a few places, such as during the Red Demon fight (last cave),
// and during some of the end sequences. It seems to be primarily involved with providing
// "extra" map scrolling modes. Generally you'll state, o->dirparam, o->linkedobject);
switch(o->state)
{
// stay above player's head. This is used during the "mad run" Balcony2 stage;
// you'll notice there is not normal scrolling during this part.
case 10:
{
o->x = player->x;
o->y = player->y - (32 << CSF);
}
break;
// pan in the specified direction. used when you get the good ending
// to pan over all the scenes from the island just before it crashes.
case 20:
{
switch(o->dir)
{
case LEFT: o->x -= (2 << CSF); break;
case UP: o->y -= (2 << CSF); break;
case RIGHT: o->x += (2 << CSF); break;
case DOWN: o->y += (2 << CSF); break;
}
// player is invisible during this part. dragging him along is
// what makes all the monsters, falling spikes etc react.
player->x = o->x;
player->y = o->y;
}
break;
// stay below player.
case 30:
{
o->x = player->x;
o->y = player->y + (80 << CSF);
}
break;
// stay mid-way between player and the specified object.
// used during the Red Demon fight in Last Cave (hidden).
case 100:
{
o->state = 101;
if (o->dirparam == 0)
{
o->linkedobject = game.stageboss.object;
if (!o->linkedobject)
{
staterr("sctrl: no stageboss object!");
o->Delete();
}
}
else
{
o->linkedobject = FindObjectByID2(o->dirparam);
if (o->linkedobject)
{
staterr("sctrl: successfully linked to object %08x", o->linkedobject);
}
else
{
staterr("sctrl: failed to link to id2 %d: object not found", o->id2);
o->Delete();
}
}
}
case 101:
{
if (o->linkedobject)
{
o->x = (player->x + o->linkedobject->x) / 2;
o->y = (player->y + o->linkedobject->y) / 2;
}
}
break;
}
}
// makes a perpetual quake. used during end-run and Hell.
void ai_quake(Object *o)
{
if (!settings->no_quake_in_hell || \
(game.curmap != STAGE_HELL1 && \
game.curmap != STAGE_HELL2 && \
game.curmap != STAGE_HELL3 && \
game.curmap != STAGE_HELL4 && \
game.curmap != STAGE_HELL42 && \
game.curmap != STAGE_STATUE_CHAMBER && \
game.curmap != STAGE_CORRIDOR && \
game.curmap != STAGE_SEAL_CHAMBER))
{
game.quaketime = 10;
}
}
/*
void c------------------------------() {}
*/
void ai_generic_angled_shot(Object *o)
{
// enemies can set the shot's ttl by setting an initial timer value
// after they spawn us. Or, they can leave it at zero and we
// will set a default.
if (o->state == 0)
{
o->state = 1;
if (o->timer == 0)
o->timer = 200;
}
if (o->sprite == SPR_GAUDI_FLYING_SHOT)
{
ANIMATE(0, 0, sprites[o->sprite].nframes - 1);
}
else
{
ANIMATE(2, 0, sprites[o->sprite].nframes - 1);
}
if (o->blockl && o->xinertia < 0) goto del;
if (o->blockr && o->xinertia > 0) goto del;
if (o->blocku && o->yinertia < 0) goto del;
if (o->blockd && o->yinertia > 0) goto del;
if (--o->timer < 0)
{
del: ;
effect(o->CenterX(), o->CenterY(), EFFECT_FISHY);
o->Delete();
}
}
/*
void c------------------------------() {}
*/
void onspawn_spike_small(Object *o)
{
o->frame = o->id2;
// hack to remove 2 spikes in First Cave which are
// extraneous and invisible because they are embedded
// in the wall, but due to slight engine differences
// you can still sometimes get hurt by them in our engine.
int tile = map.tiles[(o->CenterX() >> CSF) / TILE_W][(o->CenterY() >> CSF) / TILE_H];
if (tileattr[tile] & TA_SOLID)
{
stat("onspawn_spike_small: spike %08x embedded in wall, deleting", o);
o->Delete();
}
}
================================================
FILE: ai/sym/sym.fdh
================================================
//hash:3ee94f7a
//automatically generated by Makegen
/* located in game.cpp */
//------------------[referenced from ai/sym/sym.cpp]-----------------//
void quake(int quaketime, int snd);
/* located in ObjManager.cpp */
//------------------[referenced from ai/sym/sym.cpp]-----------------//
bool hitdetect(Object *o1, Object *o2);
Object *CreateObject(int x, int y, int type);
/* located in map.cpp */
//------------------[referenced from ai/sym/sym.cpp]-----------------//
Object *FindObjectByID2(int id2);
/* located in caret.cpp */
//------------------[referenced from ai/sym/sym.cpp]-----------------//
Caret *effect(int x, int y, int effectno);
/* located in playerstats.cpp */
//------------------[referenced from ai/sym/sym.cpp]-----------------//
void AddXP(int xp, bool quiet);
void AddHealth(int hp);
void AddAmmo(int wpn, int ammo);
/* located in tsc.cpp */
//------------------[referenced from ai/sym/sym.cpp]-----------------//
int GetCurrentScript(void);
ScriptInstance *StartScript(int scriptno, int pageno);
/* located in debug.cpp */
//------------------[referenced from ai/sym/sym.cpp]-----------------//
void AddDebugMark(int x, int y, int x2, int y2, char type, uchar r, uchar g, uchar b);
/* located in ai/ai.cpp */
//------------------[referenced from ai/sym/sym.cpp]-----------------//
void ai_animate3(Object *o);
void ai_animate4(Object *o);
/* located in ai/sym/sym.cpp */
//------------------[referenced from ai/sym/sym.cpp]-----------------//
void ai_null(Object *o);
void ai_hvtrigger(Object *o);
static void hv_project_beam(Object *o);
void ai_xp(Object *o);
void ai_powerup(Object *o);
bool Handle_Falling_Left(Object *o);
void ai_hidden_powerup(Object *o);
void ai_xp_capsule(Object *o);
void ai_save_point(Object *o);
void ai_recharge(Object *o);
void ai_chest_closed(Object *o);
void ai_chest_open(Object *o);
static void smoke_if_bonus_item(Object *o);
void ai_lightning(Object *o);
void ai_teleporter(Object *o);
void ai_door(Object *o);
void ai_largedoor(Object *o);
void ai_press(Object *o);
void ai_terminal(Object *o);
void ai_fan_vert(Object *o);
void ai_fan_hoz(Object *o);
void ai_fan_droplet(Object *o);
void ai_sprinkler(Object *o);
void ai_droplet_spawner(Object *o);
void ai_water_droplet(Object *o);
void ai_bubble_spawner(Object *o);
void ai_chinfish(Object *o);
void ai_fireplace(Object *o);
void ai_straining(Object *o);
void ai_smoke_dropper(Object *o);
void ai_scroll_controller(Object *o);
void ai_quake(Object *o);
void ai_generic_angled_shot(Object *o);
void onspawn_spike_small(Object *o);
/* located in ai/sym/smoke.cpp */
//------------------[referenced from ai/sym/sym.cpp]-----------------//
void SmokeBoomUp(Object *o);
void SmokeClouds(Object *o, int nclouds, int rangex, int rangey, Object *push_behind);
Object *SmokePuff(int x, int y);
void SmokeSide(Object *o, int nclouds, int dir);
void SmokeXY(int x, int y, int nclouds, int rangex, int rangey, Object *push_behind);
/* located in sound/sound.cpp */
//------------------[referenced from ai/sym/sym.cpp]-----------------//
void sound(int snd);
/* located in common/stat.cpp */
//------------------[referenced from ai/sym/sym.cpp]-----------------//
void stat(const char *fmt, ...);
void staterr(const char *fmt, ...);
/* located in common/misc.cpp */
//------------------[referenced from ai/sym/sym.cpp]-----------------//
int random(int min, int max);
================================================
FILE: ai/village/balrog_boss_running.cpp
================================================
#include "../stdai.h"
#include "../balrog_common.h"
#include "balrog_boss_running.fdh"
#define STATE_CHARGE 10
#define STATE_JUMP 20
#define STATE_SLOW_DOWN 30
#define STATE_CAUGHT_PLAYER 40
INITFUNC(AIRoutines)
{
ONTICK(OBJ_BALROG_BOSS_RUNNING, ai_balrog_boss_running);
ONDEATH(OBJ_BALROG_BOSS_RUNNING, ondeath_balrog_boss_running);
}
/*
void c------------------------------() {}
*/
void ai_balrog_boss_running(Object *o)
{
// try to catch player
if (o->state == STATE_CHARGE+1 || o->state == STATE_JUMP)
{
if ((pdistlx(12 << CSF) && pdistly(8 << CSF)) && o->timer > 8)
{
hurtplayer(2);
balrog_grab_player(o);
o->state = STATE_CAUGHT_PLAYER;
}
}
switch(o->state)
{
case 0:
{
FACEPLAYER;
o->flags |= FLAG_SHOOTABLE;
o->frame = 0;
o->state = 1;
}
case 1:
{
if (++o->timer > 30)
{
o->state = STATE_CHARGE;
o->timer2++;
}
}
break;
// running towards player
case STATE_CHARGE:
{
o->state++;
o->timer = 0;
o->frame = 9;
o->animtimer = 0;
}
case STATE_CHARGE+1:
{
XACCEL(0x10);
walking_animation(o);
if (++o->timer > 75 || \
(o->dir == LEFT && o->blockl) ||
(o->dir == RIGHT && o->blockr))
{
o->frame = 0;
o->state = STATE_SLOW_DOWN;
break;
}
// can jump every 3rd time, but if he catches the player
// before he gets a chance to he does NOT jump on the next charge.
if ((o->timer2 & 3) == 0)
{
if (o->timer > 25)
{ // initiate jump
o->frame = 3;
o->yinertia = -0x400;
o->state = STATE_JUMP;
}
}
}
break;
// jumping
case STATE_JUMP:
{
if (o->blockd && o->yinertia >= 0)
{
o->frame = 2; // <-- Landed frame.
quake(30);
o->state = STATE_SLOW_DOWN;
}
}
break;
// slowing down after charging or jumping
case STATE_SLOW_DOWN:
{
o->xinertia *= 4;
o->xinertia /= 5;
if (o->xinertia == 0)
o->state = 0;
}
break;
// caught player
case STATE_CAUGHT_PLAYER:
{
if (balrog_toss_player_away(o))
o->state = 0;
}
break;
}
o->yinertia += 0x20;
LIMITX(0x400);
LIMITY(0x5FF);
}
static void walking_animation(Object *o)
{
if (++o->animtimer > 3)
{
o->animtimer = 0;
if (++o->frame > 12)
o->frame = 9;
if (o->frame == 10 || o->frame == 12)
{
sound(SND_THUD);
}
}
}
/*
void c------------------------------() {}
*/
void ondeath_balrog_boss_running(Object *o)
{
o->xinertia = 0;
o->yinertia = 0;
}
================================================
FILE: ai/village/balrog_boss_running.fdh
================================================
//hash:01c3aee9
//automatically generated by Makegen
/* located in game.cpp */
//--------[referenced from ai/village/balrog_boss_running.cpp]-------//
void quake(int quaketime, int snd);
/* located in player.cpp */
//--------[referenced from ai/village/balrog_boss_running.cpp]-------//
void hurtplayer(int damage);
/* located in ai/village/balrog_boss_running.cpp */
//--------[referenced from ai/village/balrog_boss_running.cpp]-------//
void ai_balrog_boss_running(Object *o);
static void walking_animation(Object *o);
void ondeath_balrog_boss_running(Object *o);
/* located in ai/maze/balrog_boss_missiles.cpp */
//--------[referenced from ai/village/balrog_boss_running.cpp]-------//
static void walking_animation(Object *o);
/* located in ai/balrog_common.cpp */
//--------[referenced from ai/village/balrog_boss_running.cpp]-------//
void balrog_grab_player(Object *o);
bool balrog_toss_player_away(Object *o);
/* located in sound/sound.cpp */
//--------[referenced from ai/village/balrog_boss_running.cpp]-------//
void sound(int snd);
================================================
FILE: ai/village/ma_pignon.cpp
================================================
#include "../stdai.h"
#include "ma_pignon.fdh"
enum
{
MP_Fight_Start = 100, // scripted
MP_BaseState = 110,
MP_Jump = 120,
MP_In_Air = 130,
MP_Landed = 140,
MP_ChargeAttack = 200,
MP_Hit_Wall = 220,
MP_CloneAttack = 300,
MP_Fly_Up = 310,
MP_Spawn_Clones = 330,
MP_Defeated = 500 // scripted
};
INITFUNC(AIRoutines)
{
ONTICK(OBJ_MA_PIGNON, ai_ma_pignon);
ONTICK(OBJ_MA_PIGNON_ROCK, ai_ma_pignon_rock);
ONTICK(OBJ_MA_PIGNON_CLONE, ai_ma_pignon_clone);
}
/*
void c------------------------------() {}
*/
void ai_ma_pignon(Object *o)
{
/*debug("state: %d", o->state);
debug("timer: %d", o->timer);
debug("timer2: %d", o->timer2);
debug("timer3: %d", o->timer3);
debug("xinertia: %d", o->xinertia);
debug("yinertia: %d", o->yinertia);
debug("frame: %d", o->frame);
*/
switch(o->state)
{
case 0:
{
o->SnapToGround();
o->state = 1;
}
case 1:
{
FACEPLAYER;
o->frame = 0;
randblink(o);
}
break;
case MP_Fight_Start: // set by script
{
o->state = MP_BaseState;
o->timer = 0;
o->timer2 = 0;
o->flags |= FLAG_SHOOTABLE;
}
case MP_BaseState:
{
FACEPLAYER;
o->damage = 1;
o->frame = 0;
if (++o->timer > 4)
{
o->timer = 0;
o->state = MP_Jump;
if (++o->timer3 > 12)
{
o->timer3 = 0;
o->state = MP_CloneAttack;
}
}
}
break;
case MP_Jump: // pause a moment and jump
{
o->frame = 2;
if (++o->timer > 4)
{
o->state = MP_In_Air;
o->frame = 3;
o->xinertia = random(-0x400, 0x400);
o->yinertia = -0x800;
sound(SND_ENEMY_JUMP);
o->timer2++;
}
}
break;
case MP_In_Air: // jumping or falling after clone attack
{
o->yinertia += 0x80;
// for when falling back onscreen after clone attack
if (o->y > (8 * TILE_H) << CSF)
o->flags &= ~FLAG_IGNORE_SOLID;
else
o->blockd = false;
// bounce off walls
if ((o->blockl && o->xinertia < 0) || \
(o->blockr && o->xinertia > 0))
{
o->xinertia = -o->xinertia;
}
FACEPLAYER;
// select frame
if (o->yinertia < -0x200)
{
o->frame = 3;
}
else if (o->yinertia > 0x200)
{
o->frame = 4;
}
else
{
o->frame = 0;
}
if (o->blockd && o->yinertia > 0)
{
o->state = MP_Landed;
o->timer = 0;
o->frame = 2;
o->xinertia = 0;
}
if (o->timer2 > 4)
{
if (player->y < (o->y + 0x800))
{
o->state = MP_ChargeAttack;
o->timer = 0;
o->xinertia = 0;
o->yinertia = 0;
}
}
}
break;
case MP_Landed:
{
o->frame = 2;
if (++o->timer > 4)
{
o->state = MP_BaseState;
}
}
break;
case MP_ChargeAttack: // charge attack
{
o->frame = 5;
if (++o->timer > 10)
{
o->state = MP_ChargeAttack+1;
o->frame = 6;
XMOVE(0x5ff);
sound(SND_FUNNY_EXPLODE);
o->flags &= ~FLAG_SHOOTABLE;
o->flags |= FLAG_INVULNERABLE;
o->damage = 10;
}
}
break;
case MP_ChargeAttack+1: // in-air during charge attack
{
ANIMATE(0, 6, 7);
if ((o->xinertia < 0 && o->blockl) || \
(o->xinertia > 0 && o->blockr))
{
o->state = MP_Hit_Wall;
}
}
break;
case MP_Hit_Wall: // hit wall
{
o->state++;
o->timer = 0;
quake(16);
}
case MP_Hit_Wall+1:
{
o->damage = 4;
ANIMATE(0, 6, 7);
if ((++o->timer % 6) == 0)
{
int x = (random(4, 16) * TILE_W) << CSF;
CreateObject(x, (16 << CSF), OBJ_MA_PIGNON_ROCK);
}
if (o->timer > 30)
{
o->timer2 = 0;
o->state = MP_In_Air;
o->flags |= FLAG_SHOOTABLE;
o->flags &= ~FLAG_INVULNERABLE;
o->damage = 3;
}
}
break;
case MP_CloneAttack: // begin clone-attack sequence
{
o->state++;
o->frame = 9;
FACEPLAYER;
}
case MP_CloneAttack+1: // walk at player before attack
{
ANIMATE(0, 9, 11);
XMOVE(0x400);
if (pdistlx(3 << CSF))
{
o->state = MP_Fly_Up;
o->timer = 0;
o->frame = 2;
o->xinertia = 0;
}
}
break;
case MP_Fly_Up: // jump and fly up for clone attack
{
o->frame = 2;
if (++o->timer > 4)
{
o->state++;
o->frame = 12;
o->yinertia = -0x800;
sound(SND_FUNNY_EXPLODE);
o->flags |= FLAG_IGNORE_SOLID;
o->flags &= ~FLAG_SHOOTABLE;
o->flags |= FLAG_INVULNERABLE;
o->damage = 10;
}
}
break;
case MP_Fly_Up+1: // flying up
{
ANIMATE(0, 12, 13);
if (o->y < (16<state = MP_Spawn_Clones;
}
break;
case MP_Spawn_Clones: // offscreen, spawning clones
{
o->yinertia = 0;
o->state++;
o->timer = 0;
quake(10);
}
case MP_Spawn_Clones+1:
{
ANIMATE(0, 12, 13);
if ((++o->timer % 6) == 0)
{
int x = (random(4, 16) * TILE_W) << CSF;
CreateObject(x, (16 << CSF), OBJ_MA_PIGNON_CLONE);
}
if (o->timer > 30)
{
o->timer2 = 0;
o->state = MP_In_Air; // fall back down to ground
o->flags |= FLAG_SHOOTABLE;
o->flags &= ~FLAG_INVULNERABLE;
}
}
break;
case MP_Defeated: // defeated -- set by script
{
KillObjectsOfType(OBJ_MA_PIGNON_CLONE);
o->flags &= ~FLAG_SHOOTABLE;
o->state++;
o->timer = 0;
o->frame = 8;
o->damage = 0;
}
case MP_Defeated+1:
{
o->yinertia += 0x20;
if (o->blockd)
{
o->xinertia *= 7;
o->xinertia /= 8;
}
o->display_xoff = (++o->timer & 1);
}
break;
}
// ma pignon is invulnerable to missiles and Blade.
if (o->state >= MP_Fight_Start && o->state < MP_Defeated)
{
// ....he's invulnerable anyway during these two states so don't mess with that.
if (o->state != MP_ChargeAttack+1 && o->state != MP_Fly_Up+1)
{
bool found_weapons = false;
if (o->type != OBJ_MA_PIGNON_CLONE)
{
Object *c;
FOREACH_OBJECT(c)
{
if (c->type == OBJ_MISSILE_SHOT || \
c->type == OBJ_SUPERMISSILE_SHOT || \
c->type == OBJ_MISSILE_BOOM_SPAWNER || \
c->type == OBJ_BLADE12_SHOT || \
c->type == OBJ_BLADE3_SHOT || \
c->type == OBJ_BLADE_SLASH)
{
found_weapons = true;
break;
}
}
}
if (found_weapons)
{
o->flags &= ~FLAG_SHOOTABLE;
o->flags |= FLAG_INVULNERABLE;
}
else
{
o->flags |= FLAG_SHOOTABLE;
o->flags &= ~FLAG_INVULNERABLE;
}
}
}
// don't use LIMITY, it limits upwards too and breaks his jumps
if (o->yinertia > 0x5ff)
o->yinertia = 0x5ff;
}
/*
void c------------------------------() {}
*/
void ai_ma_pignon_rock(Object *o)
{
ANIMATE(6, 0, 2);
switch(o->state)
{
case 0:
{
o->timer3 = 0;
o->state = 1;
o->flags |= (FLAG_INVULNERABLE | FLAG_IGNORE_SOLID);
o->frame = random(0, 2);
o->damage = 10;
}
case 1:
{
o->yinertia += 0x40;
LIMITY(0x700);
if (o->y > (8 * TILE_H) << CSF)
{
o->flags &= ~FLAG_IGNORE_SOLID;
if (o->blockd)
{
o->yinertia = -0x200;
o->state = 2;
o->flags |= FLAG_IGNORE_SOLID;
sound(SND_BLOCK_DESTROY);
game.quaketime = 10;
// these smoke clouds appear BEHIND the map tiles
for(int i=0;i<2;i++)
{
Object *smoke = CreateObject(o->CenterX() + random(-12<Bottom()+(16<xinertia = random(-0x155, 0x155);
smoke->yinertia = random(-0x600, 0);
}
}
}
}
break;
case 2:
{
o->yinertia += 0x40;
if (o->y > (map.ysize * TILE_H) << CSF)
o->Delete();
}
break;
}
}
void ai_ma_pignon_clone(Object *o)
{
switch(o->state)
{
case 0:
{
o->frame = 3;
o->yinertia += 0x80;
LIMITY(0x5ff);
if (o->y > (8 * TILE_H) << CSF)
{
o->state = 130;
o->flags &= ~FLAG_IGNORE_SOLID;
}
}
break;
default:
o->timer2 = o->timer3 = 0;
ai_ma_pignon(o);
break;
}
if (++o->substate > 300)
{
effect(o->CenterX(), o->CenterY(), EFFECT_BOOMFLASH);
o->Delete();
}
}
================================================
FILE: ai/village/ma_pignon.fdh
================================================
//hash:976221c5
//automatically generated by Makegen
/* located in game.cpp */
//-------------[referenced from ai/village/ma_pignon.cpp]------------//
void quake(int quaketime, int snd);
/* located in ObjManager.cpp */
//-------------[referenced from ai/village/ma_pignon.cpp]------------//
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//-------------[referenced from ai/village/ma_pignon.cpp]------------//
Caret *effect(int x, int y, int effectno);
/* located in ai/ai.cpp */
//-------------[referenced from ai/village/ma_pignon.cpp]------------//
void randblink(Object *o, int blinkframe, int blinktime, int prob);
void KillObjectsOfType(int type);
/* located in ai/village/ma_pignon.cpp */
//-------------[referenced from ai/village/ma_pignon.cpp]------------//
void ai_ma_pignon(Object *o);
void ai_ma_pignon_rock(Object *o);
void ai_ma_pignon_clone(Object *o);
/* located in sound/sound.cpp */
//-------------[referenced from ai/village/ma_pignon.cpp]------------//
void sound(int snd);
/* located in common/misc.cpp */
//-------------[referenced from ai/village/ma_pignon.cpp]------------//
int random(int min, int max);
================================================
FILE: ai/village/village.cpp
================================================
#include "../stdai.h"
#include "../weed/weed.fdh"
#include "village.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_TOROKO_SHACK, ai_toroko_shack);
ONTICK(OBJ_MUSHROOM_ENEMY, ai_mushroom_enemy);
ONTICK(OBJ_GIANT_MUSHROOM_ENEMY, ai_mushroom_enemy);
ONTICK(OBJ_GRAVEKEEPER, ai_gravekeeper);
ONTICK(OBJ_CAGE, ai_cage);
ONSPAWN(OBJ_FLOWERS_PENS1, onspawn_snap_to_ground);
}
/*
void c------------------------------() {}
*/
// scared toroko attacking in Shack
void ai_toroko_shack(Object *o)
{
//debug("Y:%d Yinertia:%d blockd:%d flags:%d", o->y>>CSF, o->yinertia, o->blockd, o->flags);
switch(o->state)
{
case 0:
o->timer = 0;
o->yinertia = -(2 << CSF);
o->y -= (2 << CSF);
o->flags |= FLAG_IGNORE_SOLID;
o->state = 1;
case 1:
{
ANIMATE(2, 0, 3);
XMOVE(0x100);
if (o->yinertia >= 0)
{
o->flags &= ~FLAG_IGNORE_SOLID;
if (o->blockd)
{
ASSERT((o->y % TILE_H) == 0);
o->yinertia = 0;
o->state = 2;
}
}
}
break;
case 2:
o->frame = o->timer = o->animtimer = 0;
o->state = 3;
case 3:
{
ANIMATE(2, 0, 3);
XACCEL(0x40);
if (++o->timer >= 50)
{
o->timer = 40;
o->xinertia = -o->xinertia;
o->dir = (o->dir == RIGHT) ? LEFT:RIGHT;
}
if (o->timer >= 35)
o->flags |= FLAG_SHOOTABLE;
if (o->shaketime)
{
o->state = 4;
o->frame = 4;
o->yinertia = -(2 << CSF);
o->flags &= ~FLAG_SHOOTABLE;
o->damage = 0;
o->timer = 0;
}
}
break;
case 4:
XMOVE(0x100);
if (++o->timer > 2 && o->blockd)
{
o->state = 5;
o->flags |= FLAG_SCRIPTONACTIVATE;
}
break;
case 5:
o->xinertia = 0;
o->frame = 5;
break;
}
o->yinertia += 0x40;
LIMITX(0x400);
LIMITY(0x5ff);
}
/*
void c------------------------------() {}
*/
// mushroom enemy ("Pignon") from Mimiga Graveyard
void ai_mushroom_enemy(Object *o)
{
enum {
INIT = 0,
STANDING,
BLINKING,
WALKING, WALKING2,
SHOT
};
switch(o->state)
{
case 0:
o->frame = 0;
o->animtimer = 0;
o->xinertia = 0;
o->state = STANDING;
case STANDING: // stand around
{
if (!random(0, 100))
{ // blink
o->state = BLINKING;
o->frame = 1;
o->timer = 0;
}
else
{
if (!random(0, 150))
o->dir ^= 1;
// start walking
if (!random(0, 150))
{
o->state = WALKING;
o->frame = 0;
o->timer = 50;
}
}
}
break;
case BLINKING: // eyes closed/blinking
{
if (++o->timer > 8)
{
o->frame = 0;
o->state = STANDING;
}
}
break;
case WALKING: // walking
o->state++;
o->frame = 2;
o->animtimer = 0;
case WALKING+1:
{
if (!--o->timer)
o->state = INIT;
if (o->blockl && o->dir == LEFT)
{
o->dir = RIGHT;
o->xinertia = 0x200;
}
else if (o->blockr && o->dir == RIGHT)
{
o->dir = LEFT;
o->xinertia = -0x200;
}
ANIMATE(2, 2, 4);
XMOVE(0x100);
}
break;
case SHOT: // hit by shot
if (o->blockd)
o->state = INIT;
break;
}
if (o->shaketime && o->state != SHOT)
{
o->state = SHOT;
o->yinertia = -0x200;
o->frame = 6;
}
o->yinertia += 0x40;
LIMITY(0x5ff);
}
// guy with knife, Mimiga Graveyard
void ai_gravekeeper(Object *o)
{
switch(o->state)
{
case 0:
o->flags |= FLAG_SHOOTABLE;
o->flags |= FLAG_INVULNERABLE;
o->nxflags |= NXFLAG_FOLLOW_SLOPE;
o->damage = 0;
o->state = 1;
case 1:
{
o->frame = 0;
FACEPLAYER;
// start walking when player comes near
if (pdistlx(128 << CSF) && pdistly2(48<state = 2;
o->animtimer = 0;
}
// start walking if shot
if (o->shaketime)
{
o->state = 2;
o->frame = 1;
o->animtimer = 0;
o->flags |= FLAG_INVULNERABLE;
}
}
break;
case 2: // walking
{
ANIMATE(6, 0, 3);
// reached knife range of player?
// (no, he doesn't check Y)
if (pdistlx(10 << CSF))
{
o->state = 3;
o->timer = 0;
sound(SND_FIREBALL);
o->flags &= ~FLAG_INVULNERABLE;
}
FACEPLAYER;
XMOVE(0x100);
}
break;
case 3: // knife raised
{
o->frame = 4;
o->xinertia = 0;
if (++o->timer > 40)
{
o->state = 4;
o->timer = 0;
sound(SND_SLASH);
}
}
break;
case 4: // knife frame 2
{
o->frame = 5;
o->damage = 10;
if (++o->timer > 2)
{
o->state = 5;
o->timer = 0;
}
}
break;
case 5: // knife frame 3
{
o->frame = 6;
if (++o->timer > 60)
o->state = 0;
if (o->xinertia > 0 && o->blockl) o->xinertia = 0;
if (o->xinertia < 0 && o->blockr) o->xinertia = 0;
}
break;
}
o->yinertia += 0x20;
LIMITX(0x400);
LIMITY(0x5ff);
}
/*
void c------------------------------() {}
*/
void ai_cage(Object *o)
{
if (o->state == 0)
{
// the Cage's drawpoint is used to tweak the positioning
// of the camera, which is x += o->DrawPointX();
o->y += o->DrawPointY();
o->state = 1;
}
}
================================================
FILE: ai/village/village.fdh
================================================
//hash:8be69c8c
//automatically generated by Makegen
/* located in ai/village/village.cpp */
//--------------[referenced from ai/village/village.cpp]-------------//
void ai_toroko_shack(Object *o);
void ai_mushroom_enemy(Object *o);
void ai_gravekeeper(Object *o);
void ai_cage(Object *o);
/* located in sound/sound.cpp */
//--------------[referenced from ai/village/village.cpp]-------------//
void sound(int snd);
/* located in common/misc.cpp */
//--------------[referenced from ai/village/village.cpp]-------------//
int random(int min, int max);
================================================
FILE: ai/weapons/blade.cpp
================================================
#include "weapons.h"
#include "blade.fdh"
// how far away the area-of-effect slashes are spawned when
// the blade hits something and pauses for a moment dealing extra damage.
#define BLADE_AOE (64 << CSF)
#define STATE_FLYING 0
#define STATE_AOE 1
INITFUNC(AIRoutines)
{
AFTERMOVE(OBJ_BLADE12_SHOT, aftermove_blade_l12_shot);
ONTICK(OBJ_BLADE3_SHOT, ai_blade_l3_shot);
AFTERMOVE(OBJ_BLADE_SLASH, aftermove_blade_slash);
}
/*
void c------------------------------() {}
*/
void ai_blade_l3_shot(Object *o)
{
switch(o->state)
{
case STATE_FLYING:
{
if ((++o->timer % 4) == 1)
{
Object *slash = CreateObject(o->x, o->y - (12 << CSF), OBJ_BLADE_SLASH);
if (++o->timer2 & 1)
{
slash->dir = LEFT;
slash->x += (10 << CSF);
}
else
{
slash->dir = RIGHT;
slash->x -= (10 << CSF);
}
sound(SND_SLASH);
}
if (++o->timer2 > o->shot.ttl)
{
shot_dissipate(o);
return;
}
// damage enemies and hit walls
if (o->timer2 >= 5)
{
Object *enemy;
if ((enemy = damage_enemies(o)))
{
if (enemy->flags & FLAG_INVULNERABLE)
{
shot_spawn_effect(o, EFFECT_STARSOLID);
sound(SND_SHOT_HIT);
o->Delete();
}
else
{
o->x += o->xinertia;
o->y += o->yinertia;
o->xinertia = 0;
o->yinertia = 0;
o->state = STATE_AOE;
o->frame = 1;
o->timer = 0;
}
}
else if (IsBlockedInShotDir(o))
{
if (!shot_destroy_blocks(o))
sound(SND_SHOT_HIT);
shot_spawn_effect(o, EFFECT_STARSOLID);
o->Delete();
}
}
}
break;
case STATE_AOE:
{
if (!random(0, 2))
{
Object *slash = CreateObject(o->x + random(-BLADE_AOE, BLADE_AOE),
o->y + random(-BLADE_AOE, BLADE_AOE),
OBJ_BLADE_SLASH);
slash->dir = random(0, 1) ? LEFT : RIGHT;
sound(SND_SLASH);
}
if (++o->timer > 50)
o->Delete();
}
break;
}
o->invisible = (o->timer & 1);
}
void aftermove_blade_slash(Object *o)
{
ANIMATE_FWD(2);
if (o->frame >= 4)
{
o->Delete();
return;
}
o->x += (o->dir == LEFT) ? -0x400 : 0x400;
o->y += 0x400;
static const int damage_for_frames[] = { 0, 1, 2, 2, 2 };
o->shot.damage = damage_for_frames[o->frame];
// deal damage to anything we touch.
Object *enemy = damage_enemies(o);
if (enemy && (enemy->flags & FLAG_INVULNERABLE))
o->Delete();
}
/*
void c------------------------------() {}
*/
void aftermove_blade_l12_shot(Object *o)
{
int level = (o->shot.btype - B_BLADE_L1);
ANIMATE(1, 0, 3);
if (--o->shot.ttl < 0)
{
shot_dissipate(o);
return;
}
// only start damaging enemies after we've passed the player
// as it starts slightly behind him
if (++o->timer >= 4)
{
Object *enemy;
if ((enemy = damage_enemies(o)))
{
// on level 2 we can deal damage up to 3 times (18 max)
if (level == 0 || \
++o->timer2 >= 3 || (enemy->flags & FLAG_INVULNERABLE))
{
o->Delete();
return;
}
}
else if (IsBlockedInShotDir(o))
{
if (!shot_destroy_blocks(o))
sound(SND_SHOT_HIT);
shot_dissipate(o, EFFECT_STARSOLID);
return;
}
}
switch(level)
{
case 0:
if ((o->timer % 5) == 1)
sound(SND_FIREBALL);
break;
case 1:
if ((o->timer % 7) == 1)
sound(SND_SLASH);
break;
}
}
================================================
FILE: ai/weapons/blade.fdh
================================================
//hash:90bd36fc
//automatically generated by Makegen
/* located in ObjManager.cpp */
//---------------[referenced from ai/weapons/blade.cpp]--------------//
Object *CreateObject(int x, int y, int type);
/* located in ai/weapons/weapons.cpp */
//---------------[referenced from ai/weapons/blade.cpp]--------------//
void shot_dissipate(Object *o, int effectno);
Object *damage_enemies(Object *o, uint32_t flags_to_exclude);
void shot_spawn_effect(Object *o, int effectno);
bool IsBlockedInShotDir(Object *o);
bool shot_destroy_blocks(Object *o);
/* located in ai/weapons/blade.cpp */
//---------------[referenced from ai/weapons/blade.cpp]--------------//
void ai_blade_l3_shot(Object *o);
void aftermove_blade_slash(Object *o);
void aftermove_blade_l12_shot(Object *o);
/* located in sound/sound.cpp */
//---------------[referenced from ai/weapons/blade.cpp]--------------//
void sound(int snd);
/* located in common/misc.cpp */
//---------------[referenced from ai/weapons/blade.cpp]--------------//
int random(int min, int max);
================================================
FILE: ai/weapons/bubbler.cpp
================================================
#include "weapons.h"
#include "bubbler.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_BUBBLER12_SHOT, ai_bubbler_l12);
ONTICK(OBJ_BUBBLER3_SHOT, ai_bubbler_l3);
ONTICK(OBJ_BUBBLER_SHARP, ai_bubbler_sharp);
}
/*
void c------------------------------() {}
*/
void ai_bubbler_l12(Object *o)
{
int decel;
if (o->shot.level == 1 && o->state == 0)
{
o->nxflags |= NXFLAG_FOLLOW_SLOPE;
o->state = 1;
int variance = random(-0x100, 0x100);
switch(o->shot.dir)
{
case LEFT:
case RIGHT: o->yinertia = variance; break;
case UP:
case DOWN: o->xinertia = variance; break;
}
}
if (damage_enemies(o))
{
o->Delete();
return;
}
if (IsBlockedInShotDir(o))
{
shot_dissipate(o, EFFECT_FISHY);
return;
}
if (--o->shot.ttl < 0)
{
effect(o->x, o->y, EFFECT_BUBBLE_BURST);
o->Delete();
return;
}
if (o->shot.level == 0)
decel = 0x2A;
else
decel = 0x10;
switch(o->shot.dir)
{
case LEFT: o->xinertia += decel; break;
case RIGHT: o->xinertia -= decel; break;
case UP: o->yinertia += decel; break;
case DOWN: o->yinertia -= decel; break;
}
if (o->frame < 3)
ANIMATE_FWD(3);
}
void ai_bubbler_l3(Object *o)
{
if (damage_enemies(o))
{
o->Delete();
return;
}
if (--o->shot.ttl < 0 || !inputs[FIREKEY])
{
effect(o->CenterX(), o->CenterY(), EFFECT_FISHY);
sound(SND_BUBBLER_LAUNCH);
Object *shot = CreateObject(o->x, o->y, OBJ_BUBBLER_SHARP);
shot->dir = player->dir;
shot->shot.dir = (player->look) ? player->look : player->dir;
shot->shot.damage = 3;
shot->shot.ttl = 32;
o->Delete();
return;
}
if (o->state == 0)
{
int bigspeed = random(0x200, 0x400);
int smallspeed = (random(-4, 4) << CSF) / 2;
switch(o->shot.dir)
{
case LEFT:
o->xinertia = -bigspeed;
o->yinertia = smallspeed;
break;
case RIGHT:
o->xinertia = bigspeed;
o->yinertia = smallspeed;
break;
case UP:
o->xinertia = smallspeed;
o->yinertia = -bigspeed;
break;
case DOWN:
o->xinertia = smallspeed;
o->yinertia = bigspeed;
break;
}
o->state = 1;
}
// track player
if (o->CenterX() > player->CenterX()) o->xinertia -= 0x20;
if (o->CenterX() < player->CenterX()) o->xinertia += 0x20;
if (o->CenterY() > player->CenterY()) o->yinertia -= 0x20;
if (o->CenterY() < player->CenterY()) o->yinertia += 0x20;
// bouncy
if (o->xinertia < 0 && o->blockl)
o->xinertia = 0x400;
if (o->xinertia > 0 && o->blockr)
o->xinertia = -0x400;
if (o->yinertia < 0 && o->blocku)
o->yinertia = 0x400;
if (o->yinertia > 0 && o->blockd)
o->yinertia = -0x400;
// animate
if (o->frame < 3)
ANIMATE_FWD(3);
}
void ai_bubbler_sharp(Object *o)
{
if (run_shot(o, true))
return;
if (o->state == 0)
{
o->state = 1;
int speed = (random(10, 16) << CSF) / 2;
switch(o->shot.dir)
{
case LEFT: o->xinertia = -speed; break;
case RIGHT: o->xinertia = speed; break;
case UP: o->yinertia = -speed; break;
case DOWN: o->yinertia = speed; break;
}
o->x -= o->xinertia;
o->y -= o->yinertia;
}
else
{
ANIMATE(1, 0, 1);
}
}
================================================
FILE: ai/weapons/bubbler.fdh
================================================
//hash:5ebaab6e
//automatically generated by Makegen
/* located in ObjManager.cpp */
//--------------[referenced from ai/weapons/bubbler.cpp]-------------//
Object *CreateObject(int x, int y, int type);
/* located in caret.cpp */
//--------------[referenced from ai/weapons/bubbler.cpp]-------------//
Caret *effect(int x, int y, int effectno);
/* located in ai/weapons/weapons.cpp */
//--------------[referenced from ai/weapons/bubbler.cpp]-------------//
Object *damage_enemies(Object *o, uint32_t flags_to_exclude);
bool IsBlockedInShotDir(Object *o);
void shot_dissipate(Object *o, int effectno);
uint8_t run_shot(Object *o, bool destroys_blocks);
/* located in ai/weapons/bubbler.cpp */
//--------------[referenced from ai/weapons/bubbler.cpp]-------------//
void ai_bubbler_l12(Object *o);
void ai_bubbler_l3(Object *o);
void ai_bubbler_sharp(Object *o);
/* located in sound/sound.cpp */
//--------------[referenced from ai/weapons/bubbler.cpp]-------------//
void sound(int snd);
/* located in common/misc.cpp */
//--------------[referenced from ai/weapons/bubbler.cpp]-------------//
int random(int min, int max);
================================================
FILE: ai/weapons/fireball.cpp
================================================
#include "weapons.h"
#include "fireball.fdh"
INITFUNC(AIRoutines)
{
ONTICK(OBJ_FIREBALL1, ai_fireball);
ONTICK(OBJ_FIREBALL23, ai_fireball_level_23);
ONTICK(OBJ_FIREBALL_TRAIL, ai_fireball_trail);
}
/*
void c------------------------------() {}
*/
// shared between all weapon levels
void ai_fireball(Object *o)
{
if (--o->shot.ttl < 0)
{
shot_dissipate(o, EFFECT_STARPOOF);
return;
}
// bounce
if (o->blockl || o->blockr || o->blockd)
{
sound(SND_FIREBALL);
if (o->blockd) o->yinertia = -0x400;
if (o->blockl) o->xinertia = 0x400;
if (o->blockr) o->xinertia = -0x400;
// dissipate immediately if we somehow get entirely embedded in a wall.
if (o->blockl && o->blockr && o->blocku && o->blockd)
{
shot_dissipate(o, EFFECT_STARPOOF);
return;
}
}
// fall
o->yinertia += 0x55;
if (o->yinertia > 0x3ff) o->yinertia = 0x3ff;
// hit ceil
if (o->blocku && o->yinertia < 0) o->yinertia = 0;
// spin in shot direction
if (o->dir==RIGHT)
{
if (++o->frame >= sprites[o->sprite].nframes) o->frame = 0;
}
else
{
if (--o->frame < 0) o->frame = sprites[o->sprite].nframes-1;
}
Object *enemy;
if ((enemy = check_hit_enemy(o)))
{
// bounce off of invulnerable non-enemy objects instead of dissipating
// (prevents incorrect dissipation if a fireball hits the Lift in Almond)
if ((enemy->flags & FLAG_INVULNERABLE) && enemy->damage == 0)
{
static const Point embedpt[] = { 8, 8 };
static const Point pcheckl[] = { { -1, 4 }, { -1, 12 } };
static const Point pcheckr[] = { { 16, 4 }, { 16, 12 } };
static const Point pchecku[] = { { 4, -1 }, { 12, -1 } };
static const Point pcheckd[] = { { 4, 16 }, { 12, 16 } };
// keeps us from bouncing around forever if something gets screwed up
if (!o->CheckSolidIntersect(enemy, embedpt, 1))
{
// figure out whether we're on top, to the left, or etc of whatever we hit
// so we know which way to bounce off
if (o->CheckSolidIntersect(enemy, pcheckl, 2))
{ o->xinertia = 0x400; return; }
if (o->CheckSolidIntersect(enemy, pcheckr, 2))
{ o->xinertia = -0x400; return; }
if (o->CheckSolidIntersect(enemy, pchecku, 2))
{ o->yinertia = 0x400; return; }
if (o->CheckSolidIntersect(enemy, pcheckd, 2))
{ o->yinertia = -0x400; return; }
}
shot_dissipate(o, EFFECT_STARPOOF);
return;
}
// "Fireball will barrel through weaker enemies, dealing only half damage
// and continuing on if the enemy is killed by that much damage."
// So, our damage is set to half of what it should be, and we'll let ourselves
// deal it up to twice.
enemy->DealDamage(o->shot.damage);
if (o->timer3 == 1)
shot_dissipate(o, EFFECT_STARPOOF);
else
o->timer3 = 1;
}
}
void ai_fireball_level_23(Object *o)
{
// everything from level 1, and...
ai_fireball(o);
if (o->deleted) return;
// ...spawn trails
if ((++o->timer2 & 1) == 0)
{
create_fire_trail(o, OBJ_FIREBALL_TRAIL, o->shot.level);
}
}
/*
void c------------------------------() {}`
*/
// shared between Fireball and Snake
Object *create_fire_trail(Object *o, int objtype, int level)
{
Object *trail = CreateObject(o->x, o->y, objtype);
trail->sprite = (level == 2) ? SPR_FIREBALL_TRAIL3 : SPR_FIREBALL_TRAIL2;
trail->dir = o->dir;
// be sure and show the 1st frame
trail->animframe = -1;
// draw the trail BEHIND the lead fireball
trail->PushBehind(o);
return trail;
}
void ai_fireball_trail(Object *o)
{
static const int ccw_trail_frames[] = { 2, 1, 0, 5, 4, 3, 8, 7, 6 };
if (++o->animframe >= sprites[o->sprite].nframes)
{
o->Delete();
}
else
{
if (o->dir == RIGHT)
{
o->frame = o->animframe;
}
else
{
o->frame = ccw_trail_frames[o->animframe];
}
}
}
================================================
FILE: ai/weapons/fireball.fdh
================================================
//hash:b87b3dad
//automatically generated by Makegen
/* located in ObjManager.cpp */
//--------------[referenced from ai/weapons/fireball.cpp]------------//
Object *CreateObject(int x, int y, int type);
/* located in ai/weapons/weapons.cpp */
//--------------[referenced from ai/weapons/fireball.cpp]------------//
void shot_dissipate(Object *o, int effectno);
Object *check_hit_enemy(Object *shot, uint32_t flags_to_exclude);
/* located in ai/weapons/fireball.cpp */
//--------------[referenced from ai/weapons/fireball.cpp]------------//
void ai_fireball(Object *o);
void ai_fireball_level_23(Object *o);
Object *create_fire_trail(Object *o, int objtype, int level);
void ai_fireball_trail(Object *o);
/* located in sound/sound.cpp */
//--------------[referenced from ai/weapons/fireball.cpp]------------//
void sound(int snd);
================================================
FILE: ai/weapons/missile.cpp
================================================
#include "weapons.h"
#include "missile.fdh"
#define STATE_WAIT_RECOIL_OVER 1
#define STATE_RECOIL_OVER 2
#define STATE_MISSILE_CAN_EXPLODE 3
struct MissileSettings
{
int maxspeed; // max speed of missile
int accel; // rate of acceleration
int smokeamt; // how much smoke to make on explosion (higher = more)
int num_booms; // number of boomflashes to create on impact
int boomrange; // max dist away to create the boomflashes
int damage; // damage dealt by a direct hit of the missile itself
int boomdamage; // damage dealt by contact with a boomflash (AoE damage)
}
missile_settings[] =
{
// Level 1-3 regular missile
// have on record here for damage 4, 6, 4; check if that's correct
// maxspd acl smk, nboom, range, dmg, bmdmg
0xA00, 0x80, 4, 4, 16, 8, 1,
0xA00, 0x100, 6, 6, 32, 15, 2,
0xA00, 0x80, 12, 2, 40, 8, 2,
// Level 1-3 super missile
// maxspd acl smk, nboom, range, dmg, bmdmg
0x1400, 0x200, 8, 4, 16, 18, 1,
0x1400, 0x200, 6, 5, 32, 30, 2,
0x1400, 0x200, 12, 3, 40, 18, 2,
};
/*
Direct Hits:
L1 Super Missile deals 18 damage, boomflashes are 2 apiece I think
l1 super missile spawns 8 smoke clouds, 2 per frame
and so it appears that there are 4 booms and the booms are spawning the smoke
*/
INITFUNC(AIRoutines)
{
AFTERMOVE(OBJ_MISSILE_SHOT, ai_missile_shot);
AFTERMOVE(OBJ_SUPERMISSILE_SHOT, ai_missile_shot);
AFTERMOVE(OBJ_MISSILE_BOOM_SPAWNER, ai_missile_boom_spawner);
}
/*
void c------------------------------() {}
*/
void ai_missile_shot(Object *o)
{
int index = o->shot.level + ((o->type == OBJ_SUPERMISSILE_SHOT) ? 3 : 0);
MissileSettings *settings = &missile_settings[index];
if (o->state == 0)
{
o->shot.damage = settings->damage;
if (o->shot.level == 2)
{
// initilize wavey effect
if (o->shot.dir == LEFT || o->shot.dir == RIGHT)
o->ymark = -0x20;
else
o->xmark = -0x20;
// don't let it explode until the "recoil" effect is over.
o->state = STATE_WAIT_RECOIL_OVER;
// record position we were fired at (we won't explode until we pass it)
o->xmark2 = player->x;
o->ymark2 = player->y;
}
else
{
o->state = STATE_MISSILE_CAN_EXPLODE;
}
}
// accelerate according to current type and level of missile
// don't use LIMITX here as it can mess up recoil of level 3 super missiles
switch(o->shot.dir)
{
case RIGHT:
o->xinertia += settings->accel;
if (o->xinertia > settings->maxspeed) o->xinertia = settings->maxspeed;
break;
case LEFT:
o->xinertia -= settings->accel;
if (o->xinertia < -settings->maxspeed) o->xinertia = -settings->maxspeed;
break;
case UP:
o->yinertia -= settings->accel;
if (o->yinertia < -settings->maxspeed) o->yinertia = -settings->maxspeed;
break;
case DOWN:
o->yinertia += settings->accel;
if (o->yinertia > settings->maxspeed) o->yinertia = settings->maxspeed;
break;
}
// wavey effect for level 3
// (markx/y is used as a "speed" value here)
if (o->shot.level == 2)
{
if (o->shot.dir == LEFT || o->shot.dir == RIGHT)
{
o->yinertia += o->ymark;
if (o->ymark > 0 && o->yinertia > 0x100) o->ymark = -o->ymark;
if (o->ymark < 0 && o->yinertia < -0x100) o->ymark = -o->ymark;
}
else
{
o->xinertia += o->xmark;
if (o->xmark > 0 && o->xinertia > 0x100) o->xmark = -o->xmark;
if (o->xmark < 0 && o->xinertia < -0x100) o->xmark = -o->xmark;
}
}
// check if we hit an enemy
// level 3 missiles can not blow up while they are "recoiling"
// what we do is first wait until they're traveling in the direction
// they're pointing, then wait till they pass the player's original position.
switch(o->state)
{
case STATE_WAIT_RECOIL_OVER:
switch(o->shot.dir)
{
case LEFT: if (o->xinertia <= 0) o->state = STATE_RECOIL_OVER; break;
case RIGHT: if (o->xinertia >= 0) o->state = STATE_RECOIL_OVER; break;
case UP: if (o->yinertia <= 0) o->state = STATE_RECOIL_OVER; break;
case DOWN: if (o->yinertia >= 0) o->state = STATE_RECOIL_OVER; break;
}
if (o->state != STATE_RECOIL_OVER)
break;
case STATE_RECOIL_OVER:
switch(o->shot.dir)
{
case LEFT: if (o->x <= o->xmark2-(2<state = STATE_MISSILE_CAN_EXPLODE; break;
case RIGHT: if (o->x >= o->xmark2+(2<state = STATE_MISSILE_CAN_EXPLODE; break;
case UP: if (o->y <= o->ymark2-(2<state = STATE_MISSILE_CAN_EXPLODE; break;
case DOWN: if (o->y >= o->ymark2+(2<state = STATE_MISSILE_CAN_EXPLODE; break;
}
if (o->state != STATE_MISSILE_CAN_EXPLODE)
break;
case STATE_MISSILE_CAN_EXPLODE:
{
bool blow_up = false;
if (damage_enemies(o))
{
blow_up = true;
}
else
{ // check if we hit a wall
if (o->shot.dir==LEFT && o->blockl) blow_up = true;
else if (o->shot.dir==RIGHT && o->blockr) blow_up = true;
else if (o->shot.dir==UP && o->blocku) blow_up = true;
else if (o->shot.dir==DOWN && o->blockd) blow_up = true;
}
if (blow_up)
{
sound(SND_MISSILE_HIT);
// create the boom-spawner object for the flashes, smoke, and AoE damage
Object *sp = CreateObject(o->CenterX(), o->CenterY(), OBJ_MISSILE_BOOM_SPAWNER);
sp->shot.boomspawner.range = settings->boomrange;
sp->shot.boomspawner.booms_left = settings->num_booms;
sp->shot.damage = settings->boomdamage;
o->Delete();
return;
}
}
break;
}
if (--o->shot.ttl < 0)
shot_dissipate(o, EFFECT_STARPOOF);
// smoke trails
if (++o->timer > 2)
{
o->timer = 0;
Caret *trail = effect(o->CenterX() - o->xinertia, \
o->CenterY() - o->yinertia, EFFECT_SMOKETRAIL);
const int trailspd = 0x400;
switch(o->shot.dir)
{
case LEFT: trail->xinertia = trailspd; trail->y -= (2<xinertia = -trailspd; trail->y -= (2<yinertia = trailspd; trail->x -= (1<