diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000000..be3f7b28e5
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,661 @@
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 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 Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+our General Public Licenses are 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.
+
+ 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.
+
+ Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+ A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate. Many developers of free software are heartened and
+encouraged by the resulting cooperation. However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+ The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community. It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server. Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+ An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals. This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
+
+ 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 Affero 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. Remote Network Interaction; Use with the GNU General Public License.
+
+ Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software. This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
+
+ 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 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 work with which it is combined will remain governed by version
+3 of the GNU General Public License.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU Affero 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 Affero 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 Affero 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 Affero 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 Affero 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 Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+ 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 AGPL, see
+.
diff --git a/Makefile b/Makefile
index 091c78056b..b3458c8eb0 100644
--- a/Makefile
+++ b/Makefile
@@ -135,7 +135,7 @@ clean:
git clean -fdx function_calls/
git clean -fdx sotn_calltree.txt
-format: format-src format-tools format-symbols
+format: format-src format-tools format-symbols format-license
format-src: bin/clang-format
@# find explainer:
@@ -176,6 +176,13 @@ format-symbols:
./tools/symbols.py remove-orphans config/splat.us.tt_000.yaml
./tools/symbols.py remove-orphans config/splat.hd.tt_000.yaml
./tools/symbols.py remove-orphans config/splat.us.stmad.yaml
+format-license:
+ find src/ | grep -E '\.c$$|\.h$$' | grep -vE 'PsyCross|mednafen|psxsdk|3rd|saturn/lib' | python3 ./tools/lint-license.py - AGPL-3.0-or-later
+ python3 ./tools/lint-license.py include/game.h AGPL-3.0-or-later
+ python3 ./tools/lint-license.py include/entity.h AGPL-3.0-or-later
+ python3 ./tools/lint-license.py include/items.h AGPL-3.0-or-later
+ python3 ./tools/lint-license.py include/lba.h AGPL-3.0-or-later
+ python3 ./tools/lint-license.py include/memcard.h AGPL-3.0-or-later
# fast-format
ff: MAKEFLAGS += --jobs
diff --git a/include/entity.h b/include/entity.h
index c9b01ef098..8414c49e68 100644
--- a/include/entity.h
+++ b/include/entity.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/**
* Custom Entity Subtypes
*/
diff --git a/include/game.h b/include/game.h
index af02a5939f..f99be77bde 100644
--- a/include/game.h
+++ b/include/game.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef GAME_H
#define GAME_H
#include "common.h"
diff --git a/include/items.h b/include/items.h
index 5b99327c05..b33860da95 100644
--- a/include/items.h
+++ b/include/items.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
typedef enum ItemSlots {
LEFT_HAND_SLOT,
RIGHT_HAND_SLOT,
diff --git a/include/lba.h b/include/lba.h
index 141a7ad67f..b99c044165 100644
--- a/include/lba.h
+++ b/include/lba.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#define OFF_WARNING_TIM 24545
#define LEN_WARNING_TIM 327700
diff --git a/include/memcard.h b/include/memcard.h
index c75ee62a40..022baaf7a4 100644
--- a/include/memcard.h
+++ b/include/memcard.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef MEMCARD_H
#define MEMCARD_H
diff --git a/src/LICENSE b/src/LICENSE
new file mode 100644
index 0000000000..5370518e7b
--- /dev/null
+++ b/src/LICENSE
@@ -0,0 +1,30 @@
+sotn-decomp, re-interpretation of the game Castlevania:Symphony of the Night
+Copyright (C) 2024 Luciano Ciccariello and all the contributors
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero 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 Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
+
+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 AGPL,
+see .
diff --git a/src/config_us.h b/src/config_us.h
index 0a59308a6d..75c3f45396 100644
--- a/src/config_us.h
+++ b/src/config_us.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "game.h"
// clang-format off
diff --git a/src/destroy_entities_from_index.h b/src/destroy_entities_from_index.h
index 9b73fc8e9f..3d0e4ce690 100644
--- a/src/destroy_entities_from_index.h
+++ b/src/destroy_entities_from_index.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef HARD_LINK
void DestroyEntitiesFromIndex(s16 index) {
Entity* entity = &g_Entities[index];
diff --git a/src/destroy_entity.h b/src/destroy_entity.h
index 3f4aa0817d..1b9eeb53cc 100644
--- a/src/destroy_entity.h
+++ b/src/destroy_entity.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef HARD_LINK
void DestroyEntity(Entity* entity) {
s32 i;
diff --git a/src/dra/42398.c b/src/dra/42398.c
index 4e58ec1344..acf216c2cf 100644
--- a/src/dra/42398.c
+++ b/src/dra/42398.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "lba.h"
diff --git a/src/dra/47BB8.c b/src/dra/47BB8.c
index 80d41d749b..9fffbbcc41 100644
--- a/src/dra/47BB8.c
+++ b/src/dra/47BB8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "lba.h"
diff --git a/src/dra/4A538.c b/src/dra/4A538.c
index e9633684df..9e891aff6d 100644
--- a/src/dra/4A538.c
+++ b/src/dra/4A538.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
diff --git a/src/dra/5087C.c b/src/dra/5087C.c
index f50e366100..59f76be764 100644
--- a/src/dra/5087C.c
+++ b/src/dra/5087C.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "menu.h"
diff --git a/src/dra/5D5BC.c b/src/dra/5D5BC.c
index 211114d4ab..ce95d7b641 100644
--- a/src/dra/5D5BC.c
+++ b/src/dra/5D5BC.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "objects.h"
diff --git a/src/dra/627C4.c b/src/dra/627C4.c
index 7e8462671f..57a5d0d5b5 100644
--- a/src/dra/627C4.c
+++ b/src/dra/627C4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "objects.h"
diff --git a/src/dra/63ED4.c b/src/dra/63ED4.c
index 967e64e557..f7f0f55017 100644
--- a/src/dra/63ED4.c
+++ b/src/dra/63ED4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "objects.h"
diff --git a/src/dra/692E8.c b/src/dra/692E8.c
index 84e7b6a1b2..3ea582c340 100644
--- a/src/dra/692E8.c
+++ b/src/dra/692E8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "sfx.h"
diff --git a/src/dra/6D59C.c b/src/dra/6D59C.c
index a2722f874e..2fd6915f9b 100644
--- a/src/dra/6D59C.c
+++ b/src/dra/6D59C.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "sfx.h"
diff --git a/src/dra/704D0.c b/src/dra/704D0.c
index 98e5987e7a..4c9acecd68 100644
--- a/src/dra/704D0.c
+++ b/src/dra/704D0.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "sfx.h"
diff --git a/src/dra/71830.c b/src/dra/71830.c
index 1f9b042597..d8811e30bc 100644
--- a/src/dra/71830.c
+++ b/src/dra/71830.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "objects.h"
diff --git a/src/dra/72BB0.c b/src/dra/72BB0.c
index bb2398581c..2bc32448fd 100644
--- a/src/dra/72BB0.c
+++ b/src/dra/72BB0.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "sfx.h"
diff --git a/src/dra/75F54.c b/src/dra/75F54.c
index 73e24658ad..dc6ae9cb53 100644
--- a/src/dra/75F54.c
+++ b/src/dra/75F54.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "objects.h"
diff --git a/src/dra/78D0C.c b/src/dra/78D0C.c
index 84d346d294..4f6bf81587 100644
--- a/src/dra/78D0C.c
+++ b/src/dra/78D0C.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "objects.h"
#include "sfx.h"
diff --git a/src/dra/7A4D0.c b/src/dra/7A4D0.c
index 56971db8b7..61c22e38dc 100644
--- a/src/dra/7A4D0.c
+++ b/src/dra/7A4D0.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "objects.h"
diff --git a/src/dra/7E4BC.c b/src/dra/7E4BC.c
index 3c8d6fb27a..d6764d3b72 100644
--- a/src/dra/7E4BC.c
+++ b/src/dra/7E4BC.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "objects.h"
diff --git a/src/dra/843B0.c b/src/dra/843B0.c
index b9a4b7f42a..47536fe880 100644
--- a/src/dra/843B0.c
+++ b/src/dra/843B0.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "objects.h"
#include "sfx.h"
diff --git a/src/dra/8A0A4.c b/src/dra/8A0A4.c
index 015b8476c9..57cd16daf3 100644
--- a/src/dra/8A0A4.c
+++ b/src/dra/8A0A4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "sfx.h"
diff --git a/src/dra/8D3E8.c b/src/dra/8D3E8.c
index 7646e38303..603533b480 100644
--- a/src/dra/8D3E8.c
+++ b/src/dra/8D3E8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "objects.h"
diff --git a/src/dra/91EBC.c b/src/dra/91EBC.c
index e48d2eb413..95ea122918 100644
--- a/src/dra/91EBC.c
+++ b/src/dra/91EBC.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "objects.h"
diff --git a/src/dra/92F60.c b/src/dra/92F60.c
index b894193162..1b449a7379 100644
--- a/src/dra/92F60.c
+++ b/src/dra/92F60.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "objects.h"
diff --git a/src/dra/93290.c b/src/dra/93290.c
index ed6557a937..ab1b077fd1 100644
--- a/src/dra/93290.c
+++ b/src/dra/93290.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "objects.h"
diff --git a/src/dra/93BDC.c b/src/dra/93BDC.c
index 7aefc94db7..330d191b8a 100644
--- a/src/dra/93BDC.c
+++ b/src/dra/93BDC.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "objects.h"
diff --git a/src/dra/94F50.c b/src/dra/94F50.c
index ea0b4d007f..9a5955a2df 100644
--- a/src/dra/94F50.c
+++ b/src/dra/94F50.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "objects.h"
diff --git a/src/dra/953A0.c b/src/dra/953A0.c
index 4bb10c40d0..2a3627b7c7 100644
--- a/src/dra/953A0.c
+++ b/src/dra/953A0.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "objects.h"
diff --git a/src/dra/bss.c b/src/dra/bss.c
index e7d613c16d..54a881c563 100644
--- a/src/dra/bss.c
+++ b/src/dra/bss.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include "disk.h"
diff --git a/src/dra/cd.c b/src/dra/cd.c
index ea75274159..5ea070df81 100644
--- a/src/dra/cd.c
+++ b/src/dra/cd.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "lba.h"
diff --git a/src/dra/collider.c b/src/dra/collider.c
index 0c89f12895..4309455c22 100644
--- a/src/dra/collider.c
+++ b/src/dra/collider.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
typedef enum {
diff --git a/src/dra/config_jp.c b/src/dra/config_jp.c
index 99afe771c7..a6c68bc57f 100644
--- a/src/dra/config_jp.c
+++ b/src/dra/config_jp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "game.h"
// !!! IMPORTANT !!!
diff --git a/src/dra/config_us.c b/src/dra/config_us.c
index cb8f44ca23..8a95dea63a 100644
--- a/src/dra/config_us.c
+++ b/src/dra/config_us.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../config_us.h"
diff --git a/src/dra/d_10798.c b/src/dra/d_10798.c
index 315d17ad54..fa04419261 100644
--- a/src/dra/d_10798.c
+++ b/src/dra/d_10798.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
AnimationFrame D_800B0798[] = {
diff --git a/src/dra/d_24CEC.c b/src/dra/d_24CEC.c
index a21d257b44..c305f2f31f 100644
--- a/src/dra/d_24CEC.c
+++ b/src/dra/d_24CEC.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
u8 D_800C4CEC[] = {
diff --git a/src/dra/d_2F324.c b/src/dra/d_2F324.c
index a67b1588bd..920cb629d6 100644
--- a/src/dra/d_2F324.c
+++ b/src/dra/d_2F324.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
typedef struct {
diff --git a/src/dra/d_3B0D4.c b/src/dra/d_3B0D4.c
index 4db28c4cee..6c0b9b6fc7 100644
--- a/src/dra/d_3B0D4.c
+++ b/src/dra/d_3B0D4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
u16 D_800DB0D4[] = {
diff --git a/src/dra/d_C910.c b/src/dra/d_C910.c
index b59409cb8d..8dfed7b9dd 100644
--- a/src/dra/d_C910.c
+++ b/src/dra/d_C910.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#if defined(VERSION_US)
diff --git a/src/dra/d_CD80.c b/src/dra/d_CD80.c
index 66e79029bb..0995233727 100644
--- a/src/dra/d_CD80.c
+++ b/src/dra/d_CD80.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
Vram g_Vram = {
diff --git a/src/dra/d_CF74.c b/src/dra/d_CF74.c
index 330a0e9250..d6c07196c4 100644
--- a/src/dra/d_CF74.c
+++ b/src/dra/d_CF74.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "sfx.h"
diff --git a/src/dra/d_DBD4.c b/src/dra/d_DBD4.c
index 8de131963d..0dfea6390a 100644
--- a/src/dra/d_DBD4.c
+++ b/src/dra/d_DBD4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
AnimationFrame D_800ADBD4[] = {
diff --git a/src/dra/d_E294.c b/src/dra/d_E294.c
index b2bbebdb49..2ecbb5e0f7 100644
--- a/src/dra/d_E294.c
+++ b/src/dra/d_E294.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
AnimationFrame D_800AE294[] = {
diff --git a/src/dra/demo.c b/src/dra/demo.c
index d0ada88856..8658a3e160 100644
--- a/src/dra/demo.c
+++ b/src/dra/demo.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
extern u8 D_800A243C[32] = {
diff --git a/src/dra/dra.h b/src/dra/dra.h
index c398f17dd3..ea4efd6146 100644
--- a/src/dra/dra.h
+++ b/src/dra/dra.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef DRA_H
#define DRA_H
diff --git a/src/dra/dra_bss.h b/src/dra/dra_bss.h
index 7f8fa920f4..2cffa9f560 100644
--- a/src/dra/dra_bss.h
+++ b/src/dra/dra_bss.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
// BSS shared
diff --git a/src/dra/dra_header.c b/src/dra/dra_header.c
index 3712c9f152..8f99f1e185 100644
--- a/src/dra/dra_header.c
+++ b/src/dra/dra_header.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
typedef void (*Entrypoint)(void);
diff --git a/src/dra/lang_us.c b/src/dra/lang_us.c
index 7bb61ba5e5..f6a27a5659 100644
--- a/src/dra/lang_us.c
+++ b/src/dra/lang_us.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "game.h"
diff --git a/src/dra/lba_stage.c b/src/dra/lba_stage.c
index c41b49bee3..698838b2b6 100644
--- a/src/dra/lba_stage.c
+++ b/src/dra/lba_stage.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "game.h"
// clang-format off
diff --git a/src/dra/loading.c b/src/dra/loading.c
index 72803c916e..9edacd4bd1 100644
--- a/src/dra/loading.c
+++ b/src/dra/loading.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "sfx.h"
diff --git a/src/dra/menu.c b/src/dra/menu.c
index 916d28978d..3210cdc051 100644
--- a/src/dra/menu.c
+++ b/src/dra/menu.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "menu.h"
diff --git a/src/dra/menu.h b/src/dra/menu.h
index e5aedf6864..76aa77d7ba 100644
--- a/src/dra/menu.h
+++ b/src/dra/menu.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef MENU_H
#define MENU_H
diff --git a/src/dra/pads.c b/src/dra/pads.c
index 4f84c81e9c..e1f2773c4c 100644
--- a/src/dra/pads.c
+++ b/src/dra/pads.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
// BSS
diff --git a/src/dra/play.c b/src/dra/play.c
index af324ce489..f4faf4d2aa 100644
--- a/src/dra/play.c
+++ b/src/dra/play.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "sfx.h"
diff --git a/src/dra/save_mgr.c b/src/dra/save_mgr.c
index 518a2affca..45a0110cff 100644
--- a/src/dra/save_mgr.c
+++ b/src/dra/save_mgr.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "dra_bss.h"
#include "../save_mgr.h"
diff --git a/src/dra/save_mgr_pre.c b/src/dra/save_mgr_pre.c
index 7eed17de85..7d4cfc1051 100644
--- a/src/dra/save_mgr_pre.c
+++ b/src/dra/save_mgr_pre.c
@@ -1,2 +1,3 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dra.h"
#include "../save_mgr_pre.h"
diff --git a/src/main/main.c b/src/main/main.c
index 4681d0e1c0..d1b63b4fde 100644
--- a/src/main/main.c
+++ b/src/main/main.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "common.h"
#include "game.h"
diff --git a/src/main/psxsdk/libsnd/sstick.c b/src/main/psxsdk/libsnd/sstick.c
index 2d36bbe68d..21aff8a5b9 100644
--- a/src/main/psxsdk/libsnd/sstick.c
+++ b/src/main/psxsdk/libsnd/sstick.c
@@ -1,4 +1,3 @@
-
#include "libsnd_i.h"
void SsSetTickMode(long tick_mode) {
diff --git a/src/pc/io.c b/src/pc/io.c
index b56a4562be..343d3798dd 100644
--- a/src/pc/io.c
+++ b/src/pc/io.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include "pc.h"
diff --git a/src/pc/log.c b/src/pc/log.c
index 00bc3cff54..c47ef68689 100644
--- a/src/pc/log.c
+++ b/src/pc/log.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include
diff --git a/src/pc/null.c b/src/pc/null.c
index 63cbe2b555..2762642381 100644
--- a/src/pc/null.c
+++ b/src/pc/null.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// something is off with the headers in this target
#include "../../include/common.h"
#include "../../include/psxsdk/libgpu.h"
diff --git a/src/pc/pc.c b/src/pc/pc.c
index 46831333d5..2179c29850 100644
--- a/src/pc/pc.c
+++ b/src/pc/pc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include
diff --git a/src/pc/pc.h b/src/pc/pc.h
index e3d38e52f7..fb6259cd7f 100644
--- a/src/pc/pc.h
+++ b/src/pc/pc.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef PC_H
#define PC_H
diff --git a/src/pc/pl_arc.c b/src/pc/pl_arc.c
index 23e1e08922..12284a7696 100644
--- a/src/pc/pl_arc.c
+++ b/src/pc/pl_arc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include "pc.h"
diff --git a/src/pc/pl_ric.c b/src/pc/pl_ric.c
index 9b3b62584b..913e0308d7 100644
--- a/src/pc/pl_ric.c
+++ b/src/pc/pl_ric.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
extern PlayerOvl RIC_player;
diff --git a/src/pc/plat_unix.c b/src/pc/plat_unix.c
index ef8c763cf2..fe19bae7e3 100644
--- a/src/pc/plat_unix.c
+++ b/src/pc/plat_unix.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include
diff --git a/src/pc/plat_win.c b/src/pc/plat_win.c
index f95e221148..0a8dd8df7f 100644
--- a/src/pc/plat_win.c
+++ b/src/pc/plat_win.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include
diff --git a/src/pc/psxsdk/cdc.h b/src/pc/psxsdk/cdc.h
index 74fc68a1c0..e9207b33e3 100644
--- a/src/pc/psxsdk/cdc.h
+++ b/src/pc/psxsdk/cdc.h
@@ -1,5 +1,3 @@
-
-
#ifndef CDC_H
#define CDC_H
#include
diff --git a/src/pc/render_gl.c b/src/pc/render_gl.c
index 5c2ee8bc3a..21b0d8d186 100644
--- a/src/pc/render_gl.c
+++ b/src/pc/render_gl.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include
diff --git a/src/pc/render_shared.c b/src/pc/render_shared.c
index 0738f3a23d..5b0b978a44 100644
--- a/src/pc/render_shared.c
+++ b/src/pc/render_shared.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include
diff --git a/src/pc/render_soft.c b/src/pc/render_soft.c
index 0c7c41edb1..000ada4034 100644
--- a/src/pc/render_soft.c
+++ b/src/pc/render_soft.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include
diff --git a/src/pc/sdl2.c b/src/pc/sdl2.c
index c7438e8769..5518fbd6cf 100644
--- a/src/pc/sdl2.c
+++ b/src/pc/sdl2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include
diff --git a/src/pc/sdl2_macros.c b/src/pc/sdl2_macros.c
index 05e204225e..5d1a6eb48e 100644
--- a/src/pc/sdl2_macros.c
+++ b/src/pc/sdl2_macros.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#ifdef _MSC_VER
#define SDL_MAIN_HANDLED
diff --git a/src/pc/sdl2_macros.h b/src/pc/sdl2_macros.h
index 9b335ce512..edc7f48c0c 100644
--- a/src/pc/sdl2_macros.h
+++ b/src/pc/sdl2_macros.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef MACRO_H
#define MACRO_H
#include "game.h"
diff --git a/src/pc/sdl_defs.h b/src/pc/sdl_defs.h
index 5dd288ceb7..1f2150f9c6 100644
--- a/src/pc/sdl_defs.h
+++ b/src/pc/sdl_defs.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef SDL_DEFS_H
#define SDL_DEFS_H
typedef enum {
diff --git a/src/pc/sim_pc.c b/src/pc/sim_pc.c
index 9c1785aa6b..3f6ccb132b 100644
--- a/src/pc/sim_pc.c
+++ b/src/pc/sim_pc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "dra_bss.h"
#include
diff --git a/src/pc/sotn.c b/src/pc/sotn.c
index 797aa63ff9..5b2213c8ba 100644
--- a/src/pc/sotn.c
+++ b/src/pc/sotn.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "pc.h"
#include "dra.h"
#include "dra_bss.h"
diff --git a/src/pc/stages/stage_dummy.c b/src/pc/stages/stage_dummy.c
index a196533e44..0b3848732e 100644
--- a/src/pc/stages/stage_dummy.c
+++ b/src/pc/stages/stage_dummy.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include
diff --git a/src/pc/stages/stage_loader.c b/src/pc/stages/stage_loader.c
index b168915b38..a94309bf20 100644
--- a/src/pc/stages/stage_loader.c
+++ b/src/pc/stages/stage_loader.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include
diff --git a/src/pc/stages/stage_loader.h b/src/pc/stages/stage_loader.h
index 309edb05ab..a0bce66cf5 100644
--- a/src/pc/stages/stage_loader.h
+++ b/src/pc/stages/stage_loader.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef STAGE_LOADER_H
#define STAGE_LOADER_H
diff --git a/src/pc/stages/stage_sel.c b/src/pc/stages/stage_sel.c
index 45fae1b957..8f64f76ee6 100644
--- a/src/pc/stages/stage_sel.c
+++ b/src/pc/stages/stage_sel.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../../st/sel/sel.h"
#include "../pc.h"
diff --git a/src/pc/stages/stage_wrp.c b/src/pc/stages/stage_wrp.c
index 7740fe2f5a..d12c0ae723 100644
--- a/src/pc/stages/stage_wrp.c
+++ b/src/pc/stages/stage_wrp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include
diff --git a/src/pc/str.c b/src/pc/str.c
index 515bc18cf2..117fa5d0ba 100644
--- a/src/pc/str.c
+++ b/src/pc/str.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "pc.h"
#include
#include
diff --git a/src/pc/stubs.c b/src/pc/stubs.c
index 3e1e0dcb5a..3bc8e8eaf7 100644
--- a/src/pc/stubs.c
+++ b/src/pc/stubs.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "pc.h"
#include "dra.h"
#include "memcard.h"
diff --git a/src/pc/weapon_pc.c b/src/pc/weapon_pc.c
index d05ce5aa6f..af3ca6694c 100644
--- a/src/pc/weapon_pc.c
+++ b/src/pc/weapon_pc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "weapon.h"
#include "pc.h"
#include
diff --git a/src/pc/weapon_pc.h b/src/pc/weapon_pc.h
index a53cc11f47..bd7add9333 100644
--- a/src/pc/weapon_pc.h
+++ b/src/pc/weapon_pc.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef WEAPON_PC_H
#define WEAPON_PC_H
diff --git a/src/ric/1AC60.c b/src/ric/1AC60.c
index 67e65501de..67f87e8610 100644
--- a/src/ric/1AC60.c
+++ b/src/ric/1AC60.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* File: 1AC60.c
* Overlay: RIC
diff --git a/src/ric/1CB04.c b/src/ric/1CB04.c
index 7d95d2af67..47d417a90c 100644
--- a/src/ric/1CB04.c
+++ b/src/ric/1CB04.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
#include "player.h"
#include "sfx.h"
diff --git a/src/ric/1FCD0.c b/src/ric/1FCD0.c
index 2a9d4b9933..4c0a58a2f7 100644
--- a/src/ric/1FCD0.c
+++ b/src/ric/1FCD0.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
#include "sfx.h"
diff --git a/src/ric/202A8.c b/src/ric/202A8.c
index 5acd96e96c..cc758d2b0f 100644
--- a/src/ric/202A8.c
+++ b/src/ric/202A8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
diff --git a/src/ric/20920.c b/src/ric/20920.c
index dce001356d..40942c1e53 100644
--- a/src/ric/20920.c
+++ b/src/ric/20920.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
void RicSetAnimation(AnimationFrame* anim) {
diff --git a/src/ric/21250.c b/src/ric/21250.c
index 8d0d479d28..71c4bed17f 100644
--- a/src/ric/21250.c
+++ b/src/ric/21250.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
#include "sfx.h"
diff --git a/src/ric/24788.c b/src/ric/24788.c
index 628fdf9b19..fb6175be89 100644
--- a/src/ric/24788.c
+++ b/src/ric/24788.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
Entity* RicGetFreeEntity(s16 start, s16 end);
diff --git a/src/ric/26C84.c b/src/ric/26C84.c
index 0fcb1a92d7..660d715840 100644
--- a/src/ric/26C84.c
+++ b/src/ric/26C84.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
// same as DRA/func_8011BD48
diff --git a/src/ric/2A060.c b/src/ric/2A060.c
index 91aaeb795e..5a723b80fd 100644
--- a/src/ric/2A060.c
+++ b/src/ric/2A060.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
#include "sfx.h"
diff --git a/src/ric/2C4C4.c b/src/ric/2C4C4.c
index 5136348eac..60a9a157a2 100644
--- a/src/ric/2C4C4.c
+++ b/src/ric/2C4C4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
#include "sfx.h"
diff --git a/src/ric/319C4.c b/src/ric/319C4.c
index 742ff3011f..b9673b5401 100644
--- a/src/ric/319C4.c
+++ b/src/ric/319C4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
#include "sfx.h"
diff --git a/src/ric/bss.c b/src/ric/bss.c
index 79cf711225..1bab4b88c2 100644
--- a/src/ric/bss.c
+++ b/src/ric/bss.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
ButtonComboState g_bladeDashButtons;
diff --git a/src/ric/d_18568.c b/src/ric/d_18568.c
index f33127c12d..af5c17d683 100644
--- a/src/ric/d_18568.c
+++ b/src/ric/d_18568.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
s16 D_80154568[4] = {0, -8, -16, 0};
diff --git a/src/ric/e_giant_spinning_cross.c b/src/ric/e_giant_spinning_cross.c
index ad7290d5e6..6ff9d6a233 100644
--- a/src/ric/e_giant_spinning_cross.c
+++ b/src/ric/e_giant_spinning_cross.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
static SVECTOR D_80155EFC = {-8, -72, -4, 0};
diff --git a/src/ric/pl_anims.c b/src/ric/pl_anims.c
index 3d00754b9b..41bcaebf05 100644
--- a/src/ric/pl_anims.c
+++ b/src/ric/pl_anims.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
AnimationFrame* D_8015538C[] = {ric_anim_stand, ric_anim_stand};
diff --git a/src/ric/pl_header.c b/src/ric/pl_header.c
index 8a3f226b70..7b40b1d5ed 100644
--- a/src/ric/pl_header.c
+++ b/src/ric/pl_header.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
void RicMain(void);
diff --git a/src/ric/ric.h b/src/ric/ric.h
index c613950afe..ed125f4448 100644
--- a/src/ric/ric.h
+++ b/src/ric/ric.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
diff --git a/src/ric/spriteparts.c b/src/ric/spriteparts.c
index cf68122b1a..17bfdf87cc 100644
--- a/src/ric/spriteparts.c
+++ b/src/ric/spriteparts.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "ric.h"
s16 D_80153400[];
diff --git a/src/saturn/alucard.c b/src/saturn/alucard.c
index 9be0ab2591..bdf87c0fd3 100644
--- a/src/saturn/alucard.c
+++ b/src/saturn/alucard.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "inc_asm.h"
#include "sattypes.h"
diff --git a/src/saturn/game.c b/src/saturn/game.c
index 58796a9e93..a1b09a9b70 100644
--- a/src/saturn/game.c
+++ b/src/saturn/game.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "inc_asm.h"
#include "sattypes.h"
#include "game.h"
diff --git a/src/saturn/game.h b/src/saturn/game.h
index bc594141b9..cf0d174614 100644
--- a/src/saturn/game.h
+++ b/src/saturn/game.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef GAME_H
#define GAME_H
diff --git a/src/saturn/inc_asm.h b/src/saturn/inc_asm.h
index fb121a71b3..fef0226216 100644
--- a/src/saturn/inc_asm.h
+++ b/src/saturn/inc_asm.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef INCLUDE_ASM_H
#define INCLUDE_ASM_H
diff --git a/src/saturn/lib/mth.h b/src/saturn/lib/mth.h
index 4c847e1152..59a8caa1ef 100644
--- a/src/saturn/lib/mth.h
+++ b/src/saturn/lib/mth.h
@@ -1,5 +1,3 @@
-
-
#ifndef MTH_H
#define MTH_H
diff --git a/src/saturn/lib/sys.h b/src/saturn/lib/sys.h
index b325b69097..d11de65898 100644
--- a/src/saturn/lib/sys.h
+++ b/src/saturn/lib/sys.h
@@ -1,5 +1,3 @@
-
-
#ifndef SYS_H
#define SYS_H
diff --git a/src/saturn/sattypes.h b/src/saturn/sattypes.h
index baf7d5dab6..b91e20d16c 100644
--- a/src/saturn/sattypes.h
+++ b/src/saturn/sattypes.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef SATURN_TYPES_H
#define SATURN_TYPES_H
diff --git a/src/saturn/stage_02.c b/src/saturn/stage_02.c
index 3c508b8055..dfa958427e 100644
--- a/src/saturn/stage_02.c
+++ b/src/saturn/stage_02.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "stage_02.h"
#include "inc_asm.h"
#include "sattypes.h"
diff --git a/src/saturn/stage_02.h b/src/saturn/stage_02.h
index 3dd88ade2c..43ae4a655d 100644
--- a/src/saturn/stage_02.h
+++ b/src/saturn/stage_02.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef STAGE_02_H
#define STAGE_02_H
diff --git a/src/saturn/t_bat.c b/src/saturn/t_bat.c
index c2f018b28e..a1e620937c 100644
--- a/src/saturn/t_bat.c
+++ b/src/saturn/t_bat.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "inc_asm.h"
#include "sattypes.h"
diff --git a/src/saturn/warp.c b/src/saturn/warp.c
index aec70c0d36..7e90b19d49 100644
--- a/src/saturn/warp.c
+++ b/src/saturn/warp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "inc_asm.h"
#include "sattypes.h"
diff --git a/src/saturn/zero.c b/src/saturn/zero.c
index e12e30515c..7f98b05eee 100644
--- a/src/saturn/zero.c
+++ b/src/saturn/zero.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "zero.h"
#include "inc_asm.h"
#include "sattypes.h"
diff --git a/src/saturn/zero.h b/src/saturn/zero.h
index 5ca3ebe62d..44ced4fabe 100644
--- a/src/saturn/zero.h
+++ b/src/saturn/zero.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef ZERO_BIN_H
#define ZERO_BIN_H
#include "sattypes.h"
diff --git a/src/save_mgr.h b/src/save_mgr.h
index 7d3838730a..0c26275c0c 100644
--- a/src/save_mgr.h
+++ b/src/save_mgr.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "memcard.h"
void SetupEvents(void) {
diff --git a/src/save_mgr_pre.h b/src/save_mgr_pre.h
index 5ef4bfa5ac..df611b33e7 100644
--- a/src/save_mgr_pre.h
+++ b/src/save_mgr_pre.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "memcard.h"
s32 g_MemcardPortMask[] = {-2, -3};
diff --git a/src/servant/tt_000/10E8.c b/src/servant/tt_000/10E8.c
index 7c53b4c552..6dfd349b42 100644
--- a/src/servant/tt_000/10E8.c
+++ b/src/servant/tt_000/10E8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include
diff --git a/src/servant/tt_000/448.c b/src/servant/tt_000/448.c
index 04e140c3d3..cd0b309eff 100644
--- a/src/servant/tt_000/448.c
+++ b/src/servant/tt_000/448.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "common.h"
u16 D_80170448[] = {
diff --git a/src/servant/tt_000/45E4.c b/src/servant/tt_000/45E4.c
index b48c39b886..d6086a5100 100644
--- a/src/servant/tt_000/45E4.c
+++ b/src/servant/tt_000/45E4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
#include
diff --git a/src/servant/tt_000/4A8.c b/src/servant/tt_000/4A8.c
index 6b3c27b1e0..652d9754a1 100644
--- a/src/servant/tt_000/4A8.c
+++ b/src/servant/tt_000/4A8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
AnimationFrame D_801704A8[] = {
diff --git a/src/servant/tt_000/608.c b/src/servant/tt_000/608.c
index 1234cbf5d6..db492bbdd4 100644
--- a/src/servant/tt_000/608.c
+++ b/src/servant/tt_000/608.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "servant.h"
Sprite D_80170608[] = {
diff --git a/src/servant/tt_000/spriteparts.c b/src/servant/tt_000/spriteparts.c
index b98a9ec412..f02572fd55 100644
--- a/src/servant/tt_000/spriteparts.c
+++ b/src/servant/tt_000/spriteparts.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "servant.h"
int D_801700C8[];
diff --git a/src/set_prim_rect.h b/src/set_prim_rect.h
index 58c69e0c1d..b0955011e3 100644
--- a/src/set_prim_rect.h
+++ b/src/set_prim_rect.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void SetPrimRect(Primitive* poly, s32 x, s32 y, s32 width, s32 height) {
poly->x0 = x;
poly->y0 = y;
diff --git a/src/st/adjust_value_within_threshold.h b/src/st/adjust_value_within_threshold.h
index c5ec2e2c56..1d43b1920b 100644
--- a/src/st/adjust_value_within_threshold.h
+++ b/src/st/adjust_value_within_threshold.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
u8 AdjustValueWithinThreshold(u8 threshold, u8 currentValue, u8 targetValue) {
u8 absoluteDifference;
s8 relativeDifference = targetValue - currentValue;
diff --git a/src/st/alloc_entity.h b/src/st/alloc_entity.h
index 2b5a1817d9..1c2415a400 100644
--- a/src/st/alloc_entity.h
+++ b/src/st/alloc_entity.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
Entity* AllocEntity(Entity* start, Entity* end) {
Entity* current = start;
diff --git a/src/st/animate_entity.h b/src/st/animate_entity.h
index 63654c9ac2..836031029b 100644
--- a/src/st/animate_entity.h
+++ b/src/st/animate_entity.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
u8 AnimateEntity(u8 frames[], Entity* entity) {
u16 flag;
u16 currentFrameIndex;
diff --git a/src/st/blink_item.h b/src/st/blink_item.h
index 82ea7a1239..5c018f64fd 100644
--- a/src/st/blink_item.h
+++ b/src/st/blink_item.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "game.h"
void BlinkItem(Entity* self, u16 renderFlags) {
diff --git a/src/st/blit_char.h b/src/st/blit_char.h
index 5387bc7a6e..f370e19ef9 100644
--- a/src/st/blit_char.h
+++ b/src/st/blit_char.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
//
// Section Sizes:
//
diff --git a/src/st/cen/14264.c b/src/st/cen/14264.c
index 9e47d5ecc7..ce7b657acc 100644
--- a/src/st/cen/14264.c
+++ b/src/st/cen/14264.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "cen.h"
#include "sfx.h"
diff --git a/src/st/cen/18084.c b/src/st/cen/18084.c
index 1cc4762120..9b06d4f3a7 100644
--- a/src/st/cen/18084.c
+++ b/src/st/cen/18084.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "cen.h"
#include "../check_coll_offsets.h"
diff --git a/src/st/cen/1B274.c b/src/st/cen/1B274.c
index 547edc2ecb..66177a3b0c 100644
--- a/src/st/cen/1B274.c
+++ b/src/st/cen/1B274.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "cen.h"
#include "../entity_soul_steal_orb.h"
diff --git a/src/st/cen/D4F0.c b/src/st/cen/D4F0.c
index 0daffe6737..e63affce91 100644
--- a/src/st/cen/D4F0.c
+++ b/src/st/cen/D4F0.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "types.h"
const u8 D_8018D4F0[8] = {
diff --git a/src/st/cen/D600.c b/src/st/cen/D600.c
index c776d2108e..94f84323ac 100644
--- a/src/st/cen/D600.c
+++ b/src/st/cen/D600.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* File: D600.c
* Overlay: CEN
diff --git a/src/st/cen/F890.c b/src/st/cen/F890.c
index b7324173ee..60eb9ed3b1 100644
--- a/src/st/cen/F890.c
+++ b/src/st/cen/F890.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "cen.h"
#include "game.h"
#include "sfx.h"
diff --git a/src/st/cen/blit_char.c b/src/st/cen/blit_char.c
index dcd77c4c0e..c30a4b304f 100644
--- a/src/st/cen/blit_char.c
+++ b/src/st/cen/blit_char.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../blit_char.h"
diff --git a/src/st/cen/cen.h b/src/st/cen/cen.h
index 7537bbce48..a4db6a8290 100644
--- a/src/st/cen/cen.h
+++ b/src/st/cen/cen.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef CEN_H
#define CEN_H
diff --git a/src/st/cen/collision.c b/src/st/cen/collision.c
index 075265617f..ac4b650865 100644
--- a/src/st/cen/collision.c
+++ b/src/st/cen/collision.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../collision.h"
diff --git a/src/st/cen/create_entity.c b/src/st/cen/create_entity.c
index 02907d3a0e..d38bce00f5 100644
--- a/src/st/cen/create_entity.c
+++ b/src/st/cen/create_entity.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../create_entity.h"
diff --git a/src/st/cen/e_collect.c b/src/st/cen/e_collect.c
index f819390dbc..950b856406 100644
--- a/src/st/cen/e_collect.c
+++ b/src/st/cen/e_collect.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_collect.h"
diff --git a/src/st/cen/e_red_door.c b/src/st/cen/e_red_door.c
index cd9dc7a561..10dc8ebb85 100644
--- a/src/st/cen/e_red_door.c
+++ b/src/st/cen/e_red_door.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_red_door.h"
diff --git a/src/st/cen/entity.c b/src/st/cen/entity.c
index 69b97ab8df..5b4c1b93af 100644
--- a/src/st/cen/entity.c
+++ b/src/st/cen/entity.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "game.h"
#include "stage.h"
diff --git a/src/st/cen/entity_heart_drop.c b/src/st/cen/entity_heart_drop.c
index a7cd9b112b..0fb2b505d8 100644
--- a/src/st/cen/entity_heart_drop.c
+++ b/src/st/cen/entity_heart_drop.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "cen.h"
// Bizarre variable - u16 here, but u8 in EntityHolyGlassesCutscene
extern u16 D_801805D8[];
diff --git a/src/st/cen/entity_message_box.c b/src/st/cen/entity_message_box.c
index 0cbd6e3920..6adf0c0e57 100644
--- a/src/st/cen/entity_message_box.c
+++ b/src/st/cen/entity_message_box.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "cen.h"
#include "../entity_message_box.h"
diff --git a/src/st/cen/entity_relic_orb.c b/src/st/cen/entity_relic_orb.c
index 16064a364a..42934e48b9 100644
--- a/src/st/cen/entity_relic_orb.c
+++ b/src/st/cen/entity_relic_orb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "cen.h"
#include "../entity_relic_orb.h"
diff --git a/src/st/cen/header.c b/src/st/cen/header.c
index 9d13937995..c99cbcfc86 100644
--- a/src/st/cen/header.c
+++ b/src/st/cen/header.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "cen.h"
extern RoomHeader OVL_EXPORT(rooms)[];
diff --git a/src/st/cen/holyglassescutscene.c b/src/st/cen/holyglassescutscene.c
index d40e115b69..a0911089fc 100644
--- a/src/st/cen/holyglassescutscene.c
+++ b/src/st/cen/holyglassescutscene.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "cen.h"
#include "game.h"
diff --git a/src/st/cen/prim_helpers.c b/src/st/cen/prim_helpers.c
index 96d47f7df3..54fc9a0c68 100644
--- a/src/st/cen/prim_helpers.c
+++ b/src/st/cen/prim_helpers.c
@@ -1,2 +1,3 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../prim_helpers.h"
diff --git a/src/st/cen/random.c b/src/st/cen/random.c
index 04cd68787f..179dd6ac49 100644
--- a/src/st/cen/random.c
+++ b/src/st/cen/random.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../random.h"
diff --git a/src/st/cen/tile_data.c b/src/st/cen/tile_data.c
index 18f6aaa4b6..a1fbade93c 100644
--- a/src/st/cen/tile_data.c
+++ b/src/st/cen/tile_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "tilemap_069EC.h"
diff --git a/src/st/cen/update.c b/src/st/cen/update.c
index 9dbfc83517..96611e15af 100644
--- a/src/st/cen/update.c
+++ b/src/st/cen/update.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
// palette
diff --git a/src/st/cen/update_stage_entities.c b/src/st/cen/update_stage_entities.c
index 8886987cb8..2f06eb5ef1 100644
--- a/src/st/cen/update_stage_entities.c
+++ b/src/st/cen/update_stage_entities.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../update_stage_entities.h"
diff --git a/src/st/check_coll_offsets.h b/src/st/check_coll_offsets.h
index a518ba5f25..a0d6846152 100644
--- a/src/st/check_coll_offsets.h
+++ b/src/st/check_coll_offsets.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// arg0 is a pointer to X and Y offsets from the current entity.
// iterates through those locations, running CheckCollision on
// each location, returning a set of bit flags indicating which
diff --git a/src/st/check_field_collision.h b/src/st/check_field_collision.h
index 059f99dc7b..15dd419935 100644
--- a/src/st/check_field_collision.h
+++ b/src/st/check_field_collision.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void CheckFieldCollision(s16* hitSensors, s16 sensorCount) {
Collider collider;
s32 velocityX;
diff --git a/src/st/clut_lerp.h b/src/st/clut_lerp.h
index 3972564e72..bd53994862 100644
--- a/src/st/clut_lerp.h
+++ b/src/st/clut_lerp.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void ClutLerp(RECT* rect, u16 palIdxA, u16 palIdxB, s32 steps, u16 offset) {
u16 buf[COLORS_PER_PAL];
RECT bufRect;
diff --git a/src/st/collect_gold.h b/src/st/collect_gold.h
index 82f92e319a..fabe255f47 100644
--- a/src/st/collect_gold.h
+++ b/src/st/collect_gold.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
extern u32 c_GoldPrizes[];
extern const char* g_goldCollectTexts[];
diff --git a/src/st/collect_heart.h b/src/st/collect_heart.h
index aca336c811..5b28771c25 100644
--- a/src/st/collect_heart.h
+++ b/src/st/collect_heart.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "sfx.h"
// This function is messy, maybe there's a better way.
diff --git a/src/st/collect_heart_vessel.h b/src/st/collect_heart_vessel.h
index 3adf3c43df..435564f5a4 100644
--- a/src/st/collect_heart_vessel.h
+++ b/src/st/collect_heart_vessel.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "sfx.h"
void CollectHeartVessel(void) {
diff --git a/src/st/collision.h b/src/st/collision.h
index 9fd4d660e0..bd47563822 100644
--- a/src/st/collision.h
+++ b/src/st/collision.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "sfx.h"
diff --git a/src/st/create_entities_horizontal.h b/src/st/create_entities_horizontal.h
index b912b0f8e3..4c33ffe3b8 100644
--- a/src/st/create_entities_horizontal.h
+++ b/src/st/create_entities_horizontal.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "create_entities_right.h"
/*
diff --git a/src/st/create_entities_right.h b/src/st/create_entities_right.h
index c7d3317da4..5dadead71a 100644
--- a/src/st/create_entities_right.h
+++ b/src/st/create_entities_right.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Creates entities between the previous horizontal position and
* the passed in x position toward the right.
diff --git a/src/st/create_entities_vertical.h b/src/st/create_entities_vertical.h
index 9746d97654..f429b3b96e 100644
--- a/src/st/create_entities_vertical.h
+++ b/src/st/create_entities_vertical.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Creates entities between the previous vertical position and
* the passed in y position going up.
diff --git a/src/st/create_entity.h b/src/st/create_entity.h
index 1045d04ee0..4c933f3af3 100644
--- a/src/st/create_entity.h
+++ b/src/st/create_entity.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
//
// Section Sizes:
//
diff --git a/src/st/create_entity_from_entity.h b/src/st/create_entity_from_entity.h
index 4a63d1e8c1..7d7c2eec0b 100644
--- a/src/st/create_entity_from_entity.h
+++ b/src/st/create_entity_from_entity.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void CreateEntityFromCurrentEntity(u16 entityId, Entity* entity) {
DestroyEntity(entity);
entity->entityId = entityId;
diff --git a/src/st/create_entity_from_layout.h b/src/st/create_entity_from_layout.h
index 92d381d813..3f87eef472 100644
--- a/src/st/create_entity_from_layout.h
+++ b/src/st/create_entity_from_layout.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void CreateEntityFromLayout(Entity* entity, LayoutEntity* initDesc) {
Tilemap* tilemap;
diff --git a/src/st/create_entity_in_range.h b/src/st/create_entity_in_range.h
index 95701967d0..941c14092f 100644
--- a/src/st/create_entity_in_range.h
+++ b/src/st/create_entity_in_range.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void CreateEntityWhenInVerticalRange(LayoutEntity* obj) {
s16 yClose;
s16 yFar;
diff --git a/src/st/dre/11A64.c b/src/st/dre/11A64.c
index 2408bad289..d1275efb71 100644
--- a/src/st/dre/11A64.c
+++ b/src/st/dre/11A64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* File: 11A64.c
* Overlay: DRE
diff --git a/src/st/dre/13E18.c b/src/st/dre/13E18.c
index a47e7d7d34..d9e4a51772 100644
--- a/src/st/dre/13E18.c
+++ b/src/st/dre/13E18.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dre.h"
#include "sfx.h"
diff --git a/src/st/dre/161DC.c b/src/st/dre/161DC.c
index 7c9d65a7c3..90c1216dc4 100644
--- a/src/st/dre/161DC.c
+++ b/src/st/dre/161DC.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dre.h"
void func_801961DC(s16 arg0) {
diff --git a/src/st/dre/1697C.c b/src/st/dre/1697C.c
index 17c1c1257c..adce481fa3 100644
--- a/src/st/dre/1697C.c
+++ b/src/st/dre/1697C.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dre.h"
#include "sfx.h"
diff --git a/src/st/dre/1A3A8.c b/src/st/dre/1A3A8.c
index a75c0a7e65..5c6b22fc9a 100644
--- a/src/st/dre/1A3A8.c
+++ b/src/st/dre/1A3A8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dre.h"
#include "sfx.h"
diff --git a/src/st/dre/1E1C8.c b/src/st/dre/1E1C8.c
index 3dc84ab970..c1f6a6423e 100644
--- a/src/st/dre/1E1C8.c
+++ b/src/st/dre/1E1C8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dre.h"
#include "../check_coll_offsets.h"
diff --git a/src/st/dre/22848.c b/src/st/dre/22848.c
index feba9f7bfd..2a0b1c8556 100644
--- a/src/st/dre/22848.c
+++ b/src/st/dre/22848.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dre.h"
extern SVECTOR* D_80181544[][3];
diff --git a/src/st/dre/blit_char.c b/src/st/dre/blit_char.c
index dcd77c4c0e..c30a4b304f 100644
--- a/src/st/dre/blit_char.c
+++ b/src/st/dre/blit_char.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../blit_char.h"
diff --git a/src/st/dre/bss.c b/src/st/dre/bss.c
index 9abaf8dfdd..a046132ae1 100644
--- a/src/st/dre/bss.c
+++ b/src/st/dre/bss.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
STATIC_PAD_BSS(3072);
diff --git a/src/st/dre/collision.c b/src/st/dre/collision.c
index 075265617f..ac4b650865 100644
--- a/src/st/dre/collision.c
+++ b/src/st/dre/collision.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../collision.h"
diff --git a/src/st/dre/create_entity.c b/src/st/dre/create_entity.c
index 2426cf5db5..38f00025f5 100644
--- a/src/st/dre/create_entity.c
+++ b/src/st/dre/create_entity.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
u32 D_801A3264[24];
diff --git a/src/st/dre/dre.h b/src/st/dre/dre.h
index ebea501d5b..a8fa5de43e 100644
--- a/src/st/dre/dre.h
+++ b/src/st/dre/dre.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "stage.h"
#define STAGE_DRE_H
diff --git a/src/st/dre/e_collect.c b/src/st/dre/e_collect.c
index f819390dbc..950b856406 100644
--- a/src/st/dre/e_collect.c
+++ b/src/st/dre/e_collect.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_collect.h"
diff --git a/src/st/dre/e_red_door.c b/src/st/dre/e_red_door.c
index cd9dc7a561..10dc8ebb85 100644
--- a/src/st/dre/e_red_door.c
+++ b/src/st/dre/e_red_door.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_red_door.h"
diff --git a/src/st/dre/entity_heart_drop.c b/src/st/dre/entity_heart_drop.c
index 2bb7e69085..07984f42a2 100644
--- a/src/st/dre/entity_heart_drop.c
+++ b/src/st/dre/entity_heart_drop.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dre.h"
extern u16 D_80180660[];
diff --git a/src/st/dre/entity_message_box.c b/src/st/dre/entity_message_box.c
index 71eb4118a2..53f6814c6a 100644
--- a/src/st/dre/entity_message_box.c
+++ b/src/st/dre/entity_message_box.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dre.h"
#include "../entity_message_box.h"
diff --git a/src/st/dre/entity_relic_orb.c b/src/st/dre/entity_relic_orb.c
index 28d0f0b1be..69eb887ced 100644
--- a/src/st/dre/entity_relic_orb.c
+++ b/src/st/dre/entity_relic_orb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dre.h"
#include "../entity_relic_orb.h"
diff --git a/src/st/dre/header.c b/src/st/dre/header.c
index 54725274f7..01269eae0e 100644
--- a/src/st/dre/header.c
+++ b/src/st/dre/header.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dre.h"
extern RoomHeader OVL_EXPORT(rooms)[];
diff --git a/src/st/dre/prim_helpers.c b/src/st/dre/prim_helpers.c
index 96d47f7df3..54fc9a0c68 100644
--- a/src/st/dre/prim_helpers.c
+++ b/src/st/dre/prim_helpers.c
@@ -1,2 +1,3 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../prim_helpers.h"
diff --git a/src/st/dre/random.c b/src/st/dre/random.c
index 04cd68787f..179dd6ac49 100644
--- a/src/st/dre/random.c
+++ b/src/st/dre/random.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../random.h"
diff --git a/src/st/dre/succubus.c b/src/st/dre/succubus.c
index 490a4da3e4..880c8db6e1 100644
--- a/src/st/dre/succubus.c
+++ b/src/st/dre/succubus.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: DRE
* Enemy: Succubus Boss
diff --git a/src/st/dre/succubuscutscene.c b/src/st/dre/succubuscutscene.c
index cc0afbccf1..6012b35a9b 100644
--- a/src/st/dre/succubuscutscene.c
+++ b/src/st/dre/succubuscutscene.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "dre.h"
void func_80194774(void) {
diff --git a/src/st/dre/tile_data.c b/src/st/dre/tile_data.c
index 1408b6c0c2..70aa3af223 100644
--- a/src/st/dre/tile_data.c
+++ b/src/st/dre/tile_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "tilemap_0B548.h"
diff --git a/src/st/dre/update.c b/src/st/dre/update.c
index e447681b8d..83ea91c17d 100644
--- a/src/st/dre/update.c
+++ b/src/st/dre/update.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../update.h"
diff --git a/src/st/dre/update_stage_entities.c b/src/st/dre/update_stage_entities.c
index 8886987cb8..2f06eb5ef1 100644
--- a/src/st/dre/update_stage_entities.c
+++ b/src/st/dre/update_stage_entities.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../update_stage_entities.h"
diff --git a/src/st/e_bone_scimitar.h b/src/st/e_bone_scimitar.h
index 163f931f60..512caf1dd8 100644
--- a/src/st/e_bone_scimitar.h
+++ b/src/st/e_bone_scimitar.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "sfx.h"
typedef enum {
diff --git a/src/st/e_breakable.h b/src/st/e_breakable.h
index f687ce03b0..b7c0883d6e 100644
--- a/src/st/e_breakable.h
+++ b/src/st/e_breakable.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include
diff --git a/src/st/e_collect.h b/src/st/e_collect.h
index 3e4c9e8fb7..1024c87f30 100644
--- a/src/st/e_collect.h
+++ b/src/st/e_collect.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
//
// Section Sizes:
//
diff --git a/src/st/e_merman.h b/src/st/e_merman.h
index ab850cea7d..e371b8db8c 100644
--- a/src/st/e_merman.h
+++ b/src/st/e_merman.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Entity: Merman
* Stages: NO3, NP3
diff --git a/src/st/e_merman2.h b/src/st/e_merman2.h
index aa8da434fa..905abc79a0 100644
--- a/src/st/e_merman2.h
+++ b/src/st/e_merman2.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Entity: Merman2
* Stages: NO3, NP3
diff --git a/src/st/e_misc.h b/src/st/e_misc.h
index b03025c4b6..d6e36b004b 100644
--- a/src/st/e_misc.h
+++ b/src/st/e_misc.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#ifndef CASTLE_FLAG_BANK
diff --git a/src/st/e_particles.h b/src/st/e_particles.h
index ebd51b6365..ba05b0458c 100644
--- a/src/st/e_particles.h
+++ b/src/st/e_particles.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#if defined(VERSION_HD)
diff --git a/src/st/e_red_door.h b/src/st/e_red_door.h
index 18d6e7c443..936aa498d6 100644
--- a/src/st/e_red_door.h
+++ b/src/st/e_red_door.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "sfx.h"
diff --git a/src/st/e_room_fg.h b/src/st/e_room_fg.h
index 1de0517ded..c3a19e902b 100644
--- a/src/st/e_room_fg.h
+++ b/src/st/e_room_fg.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#if !defined(VERSION_PSP)
diff --git a/src/st/e_stage_name.h b/src/st/e_stage_name.h
index b0f8e62c26..f8dba3ba50 100644
--- a/src/st/e_stage_name.h
+++ b/src/st/e_stage_name.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "stage.h"
#ifndef CASTLE_FLAG_BANK
diff --git a/src/st/entity_big_red_fireball.h b/src/st/entity_big_red_fireball.h
index ce4900d54b..83591bb2c3 100644
--- a/src/st/entity_big_red_fireball.h
+++ b/src/st/entity_big_red_fireball.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Not used in any current overlays. Seems to resemble Gaibon's big fireball,
// but is not actually called in NZ0. Will need to check future overlays for
// any actual uses.
diff --git a/src/st/entity_damage_display.h b/src/st/entity_damage_display.h
index db0fc47989..82607c8a4d 100644
--- a/src/st/entity_damage_display.h
+++ b/src/st/entity_damage_display.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
extern u16 g_eDamageDisplayInit[];
extern u16 g_eDamageDisplayClut[];
diff --git a/src/st/entity_dummy.h b/src/st/entity_dummy.h
index 906a843211..488b6a69f4 100644
--- a/src/st/entity_dummy.h
+++ b/src/st/entity_dummy.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void EntityDummy(Entity* arg0) {
if (!arg0->step) {
arg0->step++;
diff --git a/src/st/entity_enemy_blood.h b/src/st/entity_enemy_blood.h
index 7b88b3f1e6..bebbedea66 100644
--- a/src/st/entity_enemy_blood.h
+++ b/src/st/entity_enemy_blood.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void EntityEnemyBlood(Entity* self) {
const int NParticles = 12;
FakePrim* prim;
diff --git a/src/st/entity_explosion.h b/src/st/entity_explosion.h
index 7c41e6ca91..9fc0d3e8ba 100644
--- a/src/st/entity_explosion.h
+++ b/src/st/entity_explosion.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
extern u16 g_InitializeEntityData0[];
extern s32 g_ExplosionYVelocities[];
extern u8* g_ExplosionAnimations[];
diff --git a/src/st/entity_explosion_spawn.h b/src/st/entity_explosion_spawn.h
index 08772fe64c..796af4333b 100644
--- a/src/st/entity_explosion_spawn.h
+++ b/src/st/entity_explosion_spawn.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void EntityExplosionSpawn(u16 arg0, u16 arg1) {
Entity* entity;
diff --git a/src/st/entity_intense_explosion.h b/src/st/entity_intense_explosion.h
index 9d6d268200..8c88c46fda 100644
--- a/src/st/entity_intense_explosion.h
+++ b/src/st/entity_intense_explosion.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void EntityIntenseExplosion(Entity* self) {
if (!self->step) {
InitializeEntity(g_InitializeEntityData0);
diff --git a/src/st/entity_message_box.h b/src/st/entity_message_box.h
index d4b780590b..c3f838d09a 100644
--- a/src/st/entity_message_box.h
+++ b/src/st/entity_message_box.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// params: message box duration
// ext.messageBox.label: box size and text to render
diff --git a/src/st/entity_olrox_drool.h b/src/st/entity_olrox_drool.h
index 7c2f27c604..1249a090a0 100644
--- a/src/st/entity_olrox_drool.h
+++ b/src/st/entity_olrox_drool.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Purpose is not 100% clear. Creates a falling blue droplet that sizzles after
// hitting the ground. In existing overlays, this entity is not used. But looks
// like Olrox's drool, so using that until we find any other uses.
diff --git a/src/st/entity_relic_orb.h b/src/st/entity_relic_orb.h
index 97b111ba44..15c6dbc4e3 100644
--- a/src/st/entity_relic_orb.h
+++ b/src/st/entity_relic_orb.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "stage.h"
const char* g_RelicOrbTexts[] = {
diff --git a/src/st/entity_soul_steal_orb.h b/src/st/entity_soul_steal_orb.h
index c096ef5749..82c06d3421 100644
--- a/src/st/entity_soul_steal_orb.h
+++ b/src/st/entity_soul_steal_orb.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// The white flying orbs of energy that Alucard summons as part of the Soul
// Steal spell
void EntitySoulStealOrb(Entity* self) {
diff --git a/src/st/entity_unkId13.h b/src/st/entity_unkId13.h
index 3011058d51..5b3d78e6cf 100644
--- a/src/st/entity_unkId13.h
+++ b/src/st/entity_unkId13.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
extern u16 g_InitDataEnt13[];
void EntityUnkId13(Entity* self) {
diff --git a/src/st/entity_unkId14.h b/src/st/entity_unkId14.h
index 24c4989259..d3e4be4a68 100644
--- a/src/st/entity_unkId14.h
+++ b/src/st/entity_unkId14.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
extern s32 unk14_yVel[];
extern u8 unk14_startFrame[];
extern u16 unk14_lifetime[];
diff --git a/src/st/entity_unkId14_spawner.h b/src/st/entity_unkId14_spawner.h
index 0efb16393f..a9b7a736b3 100644
--- a/src/st/entity_unkId14_spawner.h
+++ b/src/st/entity_unkId14_spawner.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
extern u16 g_eUnk14SpawnRots[];
void EntityUnkId14Spawner(
diff --git a/src/st/entity_unkId15.h b/src/st/entity_unkId15.h
index fae50a7030..12a75974d5 100644
--- a/src/st/entity_unkId15.h
+++ b/src/st/entity_unkId15.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
extern s16 unk15_rot[];
extern s32 unk15_yVel[];
diff --git a/src/st/entity_unkId15_spawner.h b/src/st/entity_unkId15_spawner.h
index 7825e8fc86..edb400ee47 100644
--- a/src/st/entity_unkId15_spawner.h
+++ b/src/st/entity_unkId15_spawner.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void EntityUnkId15Spawner(
Entity* self, u8 count, u8 params, s32 x, s32 y, u8 arg5, s16 xGap) {
diff --git a/src/st/entity_unk_id12.h b/src/st/entity_unk_id12.h
index 5254104a96..8d254cb660 100644
--- a/src/st/entity_unk_id12.h
+++ b/src/st/entity_unk_id12.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void EntityUnkId12(Entity* entity) {
u16 var_s0;
u16 params;
diff --git a/src/st/fall_entity.h b/src/st/fall_entity.h
index 8645c15b1f..47b5f0babb 100644
--- a/src/st/fall_entity.h
+++ b/src/st/fall_entity.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void FallEntity(void) {
if (g_CurrentEntity->velocityY < FALL_TERMINAL_VELOCITY) {
g_CurrentEntity->velocityY += FALL_GRAVITY;
diff --git a/src/st/find_entity_horizontal.h b/src/st/find_entity_horizontal.h
index beaaa013cc..dce7a598bd 100644
--- a/src/st/find_entity_horizontal.h
+++ b/src/st/find_entity_horizontal.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Scans `g_LayoutObjVertical` looking for the next element with
* an x position to the right of the provided argument or the end
diff --git a/src/st/find_entity_vertical.h b/src/st/find_entity_vertical.h
index 71efff27bb..c32e3df41a 100644
--- a/src/st/find_entity_vertical.h
+++ b/src/st/find_entity_vertical.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Scans `g_LayoutObjVertical` looking for the next element with
* a y position above the provided argument or the end of the list.
diff --git a/src/st/get_angle_between_entities.h b/src/st/get_angle_between_entities.h
index a272d35e12..92b0738d84 100644
--- a/src/st/get_angle_between_entities.h
+++ b/src/st/get_angle_between_entities.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
u16 GetAngleBetweenEntities(Entity* a, Entity* b) {
s32 diffX = b->posX.i.hi - a->posX.i.hi;
s32 diffY = b->posY.i.hi - a->posY.i.hi;
diff --git a/src/st/get_angle_between_entities_shifted.h b/src/st/get_angle_between_entities_shifted.h
index 633d14c4ea..a1bf4f363d 100644
--- a/src/st/get_angle_between_entities_shifted.h
+++ b/src/st/get_angle_between_entities_shifted.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
u8 GetAngleBetweenEntitiesShifted(Entity* a, Entity* b) {
s32 diffX = (u16)b->posX.i.hi - (u16)a->posX.i.hi;
s32 diffY = (u16)b->posY.i.hi - (u16)a->posY.i.hi;
diff --git a/src/st/get_angle_point_to_entity.h b/src/st/get_angle_point_to_entity.h
index 36452bccec..f2d14a5cf9 100644
--- a/src/st/get_angle_point_to_entity.h
+++ b/src/st/get_angle_point_to_entity.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
u16 GetAnglePointToEntity(s32 x, s32 y) {
s16 diffX = x - (u16)g_CurrentEntity->posX.i.hi;
s16 diffY = y - (u16)g_CurrentEntity->posY.i.hi;
diff --git a/src/st/get_angle_point_to_entity_shifted.h b/src/st/get_angle_point_to_entity_shifted.h
index 33096436c6..933aaccf80 100644
--- a/src/st/get_angle_point_to_entity_shifted.h
+++ b/src/st/get_angle_point_to_entity_shifted.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
u8 GetAnglePointToEntityShifted(s32 x, s32 y) {
s32 diffX = x - (u16)g_CurrentEntity->posX.i.hi;
s32 diffY = y - (u16)g_CurrentEntity->posY.i.hi;
diff --git a/src/st/get_distance_to_player_x.h b/src/st/get_distance_to_player_x.h
index 28ef176ae0..45993e18cb 100644
--- a/src/st/get_distance_to_player_x.h
+++ b/src/st/get_distance_to_player_x.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Absolute distance from g_CurrentEntity to the player in the X Axis
s32 GetDistanceToPlayerX(void) {
s16 xDistance = g_CurrentEntity->posX.i.hi - PLAYER.posX.i.hi;
diff --git a/src/st/get_distance_to_player_y.h b/src/st/get_distance_to_player_y.h
index c139576e55..eceb3e974c 100644
--- a/src/st/get_distance_to_player_y.h
+++ b/src/st/get_distance_to_player_y.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Absolute distance from g_CurrentEntity to the player in the Y Axis
s32 GetDistanceToPlayerY(void) {
s32 yDistance = g_CurrentEntity->posY.i.hi - PLAYER.posY.i.hi;
diff --git a/src/st/get_normalized_angle.h b/src/st/get_normalized_angle.h
index f0433b2840..26b835e266 100644
--- a/src/st/get_normalized_angle.h
+++ b/src/st/get_normalized_angle.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
u16 GetNormalizedAngle(u16 arg0, u16 arg1, u16 arg2) {
u16 temp_a2;
u16 var_v0;
diff --git a/src/st/get_player_collision_with.h b/src/st/get_player_collision_with.h
index 2add3d1b27..25f50c65d6 100644
--- a/src/st/get_player_collision_with.h
+++ b/src/st/get_player_collision_with.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// This function checks if the player collides with the specified entity
// and from which direction.
// w and h holds the collider size of the entity
diff --git a/src/st/get_side_to_player.h b/src/st/get_side_to_player.h
index bb830862b4..ea1e8fe4d0 100644
--- a/src/st/get_side_to_player.h
+++ b/src/st/get_side_to_player.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/**
* Returns the player's side position relative to g_CurrentEntity
* 0 = Player is on the right side
diff --git a/src/st/get_sine.h b/src/st/get_sine.h
index 5feac8add4..04cebed11a 100644
--- a/src/st/get_sine.h
+++ b/src/st/get_sine.h
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
s16 GetSine(u8 arg0) { return g_SineTable[arg0]; }
diff --git a/src/st/get_sine_scaled.h b/src/st/get_sine_scaled.h
index 8f21a4e8e5..0e401a1c32 100644
--- a/src/st/get_sine_scaled.h
+++ b/src/st/get_sine_scaled.h
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
s32 GetSineScaled(u8 arg0, s16 arg1) { return g_SineTable[arg0] * arg1; }
diff --git a/src/st/init_entity.h b/src/st/init_entity.h
index 6632fabd80..98a1cc86ac 100644
--- a/src/st/init_entity.h
+++ b/src/st/init_entity.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void InitializeEntity(u16 arg0[]) {
u16 enemyId;
EnemyDef* enemyDef;
diff --git a/src/st/init_room_entities.h b/src/st/init_room_entities.h
index b1c7b89cf6..a37b13b480 100644
--- a/src/st/init_room_entities.h
+++ b/src/st/init_room_entities.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Sets up layout arrays and initializes stage state to
* initial values.
diff --git a/src/st/initialize_unk_entity.h b/src/st/initialize_unk_entity.h
index 8f6a368f38..9479a5b0bd 100644
--- a/src/st/initialize_unk_entity.h
+++ b/src/st/initialize_unk_entity.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
extern u8 g_UnkEntityAnimData[];
void InitializeUnkEntity(Entity* self) {
if (!self->step) {
diff --git a/src/st/mad/11D3C.c b/src/st/mad/11D3C.c
index 79fd15a602..dc0a6ca170 100644
--- a/src/st/mad/11D3C.c
+++ b/src/st/mad/11D3C.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "mad.h"
#include "sfx.h"
diff --git a/src/st/mad/15520.c b/src/st/mad/15520.c
index b090bb5fe5..c7c0349144 100644
--- a/src/st/mad/15520.c
+++ b/src/st/mad/15520.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "mad.h"
void EntityHeartDrop(Entity* self) {
diff --git a/src/st/mad/D8C8.c b/src/st/mad/D8C8.c
index e02f26efc1..005fef1e7a 100644
--- a/src/st/mad/D8C8.c
+++ b/src/st/mad/D8C8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "mad.h"
#include "sfx.h"
diff --git a/src/st/mad/bss.c b/src/st/mad/bss.c
index a5548bdabc..ccd74c3618 100644
--- a/src/st/mad/bss.c
+++ b/src/st/mad/bss.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
u16 D_801997E8[768];
diff --git a/src/st/mad/collision.c b/src/st/mad/collision.c
index e00cc88b3f..68b30a9b52 100644
--- a/src/st/mad/collision.c
+++ b/src/st/mad/collision.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "mad.h"
#include "sfx.h"
diff --git a/src/st/mad/create_entity.c b/src/st/mad/create_entity.c
index 15ac3d18da..45560a1f9e 100644
--- a/src/st/mad/create_entity.c
+++ b/src/st/mad/create_entity.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "mad.h"
// BSS START size = 0x16
diff --git a/src/st/mad/e_collect.c b/src/st/mad/e_collect.c
index 4e15736e5c..2fffe116e6 100644
--- a/src/st/mad/e_collect.c
+++ b/src/st/mad/e_collect.c
@@ -1,2 +1,3 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "mad.h"
#include "../e_collect.h"
diff --git a/src/st/mad/e_red_door.c b/src/st/mad/e_red_door.c
index c0a85254b0..32e23ab5e3 100644
--- a/src/st/mad/e_red_door.c
+++ b/src/st/mad/e_red_door.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "mad.h"
#include "../e_red_door.h"
diff --git a/src/st/mad/entity_relic_orb.c b/src/st/mad/entity_relic_orb.c
index 6b16295148..7bb57eefca 100644
--- a/src/st/mad/entity_relic_orb.c
+++ b/src/st/mad/entity_relic_orb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "mad.h"
extern u16 D_801997E8[0x600]; // this should fall into the SBSS section
diff --git a/src/st/mad/header.c b/src/st/mad/header.c
index fa5b592fba..fa95828721 100644
--- a/src/st/mad/header.c
+++ b/src/st/mad/header.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "mad.h"
extern RoomHeader g_Rooms[];
diff --git a/src/st/mad/mad.h b/src/st/mad/mad.h
index f39b115836..b6daff99c2 100644
--- a/src/st/mad/mad.h
+++ b/src/st/mad/mad.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef MAD_H
#define MAD_H
diff --git a/src/st/mad/prim_helpers.c b/src/st/mad/prim_helpers.c
index 557c12c1fc..ca2e4b695d 100644
--- a/src/st/mad/prim_helpers.c
+++ b/src/st/mad/prim_helpers.c
@@ -1,2 +1,3 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "mad.h"
#include "../prim_helpers.h"
diff --git a/src/st/mad/st_update.c b/src/st/mad/st_update.c
index d6525c7985..bfe2bb036f 100644
--- a/src/st/mad/st_update.c
+++ b/src/st/mad/st_update.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "mad.h"
#include "../random.h"
diff --git a/src/st/make_entity_from_id.h b/src/st/make_entity_from_id.h
index d2688fd325..45664369b2 100644
--- a/src/st/make_entity_from_id.h
+++ b/src/st/make_entity_from_id.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
extern PfnEntityUpdate PfnEntityUpdates[];
void MakeEntityFromId(u16 entityId, Entity* src, Entity* dst) {
DestroyEntity(dst);
diff --git a/src/st/make_explosions.h b/src/st/make_explosions.h
index 22f958904f..1931e857f3 100644
--- a/src/st/make_explosions.h
+++ b/src/st/make_explosions.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void MakeExplosions(void) {
s32 temp_s3;
s8 temp_s4;
diff --git a/src/st/move_entity.h b/src/st/move_entity.h
index 711c9ba7bf..f374deee76 100644
--- a/src/st/move_entity.h
+++ b/src/st/move_entity.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void MoveEntity(void) {
g_CurrentEntity->posX.val += g_CurrentEntity->velocityX;
g_CurrentEntity->posY.val += g_CurrentEntity->velocityY;
diff --git a/src/st/no3/377D4.c b/src/st/no3/377D4.c
index 590101992f..50f9104de4 100644
--- a/src/st/no3/377D4.c
+++ b/src/st/no3/377D4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* File: 377D4.c
* Overlay: NO3
diff --git a/src/st/no3/3C4EC.c b/src/st/no3/3C4EC.c
index 2f39c06bb8..4f87fb4e08 100644
--- a/src/st/no3/3C4EC.c
+++ b/src/st/no3/3C4EC.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
// pushes alucard to the right
diff --git a/src/st/no3/3E134.c b/src/st/no3/3E134.c
index cb2b7d4e47..4272a7f537 100644
--- a/src/st/no3/3E134.c
+++ b/src/st/no3/3E134.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
// intro owl and leaves
diff --git a/src/st/no3/3FF00.c b/src/st/no3/3FF00.c
index d1e1b755cc..f4f5ebc368 100644
--- a/src/st/no3/3FF00.c
+++ b/src/st/no3/3FF00.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
#include "sfx.h"
diff --git a/src/st/no3/44C64.c b/src/st/no3/44C64.c
index e00f58bf67..73c9a5122d 100644
--- a/src/st/no3/44C64.c
+++ b/src/st/no3/44C64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
#include "sfx.h"
diff --git a/src/st/no3/48A84.c b/src/st/no3/48A84.c
index 36bbe51c34..74520b85b8 100644
--- a/src/st/no3/48A84.c
+++ b/src/st/no3/48A84.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
#include "../check_coll_offsets.h"
diff --git a/src/st/no3/516B4.c b/src/st/no3/516B4.c
index cac8d031b5..a640312432 100644
--- a/src/st/no3/516B4.c
+++ b/src/st/no3/516B4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
#include "../e_merman2.h"
diff --git a/src/st/no3/53F38.c b/src/st/no3/53F38.c
index d1880eb6a6..5af3b1ba3b 100644
--- a/src/st/no3/53F38.c
+++ b/src/st/no3/53F38.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
#include "../e_merman.h"
diff --git a/src/st/no3/56264.c b/src/st/no3/56264.c
index 5f36b06e48..3e9a2a758a 100644
--- a/src/st/no3/56264.c
+++ b/src/st/no3/56264.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
void EntityBat(Entity* entity) {
diff --git a/src/st/no3/564B0.c b/src/st/no3/564B0.c
index 788bfe2a04..3e0f651b77 100644
--- a/src/st/no3/564B0.c
+++ b/src/st/no3/564B0.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
#include "sfx.h"
diff --git a/src/st/no3/blit_char.c b/src/st/no3/blit_char.c
index dcd77c4c0e..c30a4b304f 100644
--- a/src/st/no3/blit_char.c
+++ b/src/st/no3/blit_char.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../blit_char.h"
diff --git a/src/st/no3/bss.c b/src/st/no3/bss.c
index 9300a5fa20..6feacac2c7 100644
--- a/src/st/no3/bss.c
+++ b/src/st/no3/bss.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
STATIC_PAD_BSS(3072);
diff --git a/src/st/no3/collision.c b/src/st/no3/collision.c
index 075265617f..ac4b650865 100644
--- a/src/st/no3/collision.c
+++ b/src/st/no3/collision.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../collision.h"
diff --git a/src/st/no3/create_entity.c b/src/st/no3/create_entity.c
index e5249fb876..3a6be69b02 100644
--- a/src/st/no3/create_entity.c
+++ b/src/st/no3/create_entity.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
STATIC_PAD_BSS(96);
diff --git a/src/st/no3/deathcutscene.c b/src/st/no3/deathcutscene.c
index 52d3014759..21a3e9d757 100644
--- a/src/st/no3/deathcutscene.c
+++ b/src/st/no3/deathcutscene.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
void func_801BE544(void) {
diff --git a/src/st/no3/e_bone_scimitar.c b/src/st/no3/e_bone_scimitar.c
index 0bb9cf991e..bf31b4b219 100644
--- a/src/st/no3/e_bone_scimitar.c
+++ b/src/st/no3/e_bone_scimitar.c
@@ -1,2 +1,3 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
#include "../e_bone_scimitar.h"
diff --git a/src/st/no3/e_collect.c b/src/st/no3/e_collect.c
index f819390dbc..950b856406 100644
--- a/src/st/no3/e_collect.c
+++ b/src/st/no3/e_collect.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_collect.h"
diff --git a/src/st/no3/e_red_door.c b/src/st/no3/e_red_door.c
index cd9dc7a561..10dc8ebb85 100644
--- a/src/st/no3/e_red_door.c
+++ b/src/st/no3/e_red_door.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_red_door.h"
diff --git a/src/st/no3/entity_heart_drop.c b/src/st/no3/entity_heart_drop.c
index cc35181a6f..d29351163c 100644
--- a/src/st/no3/entity_heart_drop.c
+++ b/src/st/no3/entity_heart_drop.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
void EntityHeartDrop(Entity* self) {
diff --git a/src/st/no3/entity_message_box.c b/src/st/no3/entity_message_box.c
index 3532329fdb..20bf3159a3 100644
--- a/src/st/no3/entity_message_box.c
+++ b/src/st/no3/entity_message_box.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
#include "../entity_message_box.h"
diff --git a/src/st/no3/entity_relic_orb.c b/src/st/no3/entity_relic_orb.c
index 4b30d98a65..42a2effd3e 100644
--- a/src/st/no3/entity_relic_orb.c
+++ b/src/st/no3/entity_relic_orb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
#include "../entity_relic_orb.h"
diff --git a/src/st/no3/header.c b/src/st/no3/header.c
index 5381a63940..d6634f837d 100644
--- a/src/st/no3/header.c
+++ b/src/st/no3/header.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
extern RoomHeader OVL_EXPORT(rooms)[];
diff --git a/src/st/no3/no3.h b/src/st/no3/no3.h
index 78f2e5fe65..ad7dca92f2 100644
--- a/src/st/no3/no3.h
+++ b/src/st/no3/no3.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "stage.h"
#define OVL_EXPORT(x) NO3_##x
diff --git a/src/st/no3/player_water_effect.c b/src/st/no3/player_water_effect.c
index 315a51e6ea..c34fff09aa 100644
--- a/src/st/no3/player_water_effect.c
+++ b/src/st/no3/player_water_effect.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "no3.h"
static u16 func_801D0A2C(s16 arg0, s16 arg1, s16 arg2, s16* arg3) {
diff --git a/src/st/no3/prim_helpers.c b/src/st/no3/prim_helpers.c
index 96d47f7df3..54fc9a0c68 100644
--- a/src/st/no3/prim_helpers.c
+++ b/src/st/no3/prim_helpers.c
@@ -1,2 +1,3 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../prim_helpers.h"
diff --git a/src/st/no3/st_update.c b/src/st/no3/st_update.c
index 8477b24783..b8e3f3feac 100644
--- a/src/st/no3/st_update.c
+++ b/src/st/no3/st_update.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
static u16 UNK_Invincibility0[] = {
diff --git a/src/st/no3/tile_data.c b/src/st/no3/tile_data.c
index e8459c3b54..f9a32a97ea 100644
--- a/src/st/no3/tile_data.c
+++ b/src/st/no3/tile_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "tilemap_18838.h"
diff --git a/src/st/np3/32830.c b/src/st/np3/32830.c
index 04f749c774..306bc20915 100644
--- a/src/st/np3/32830.c
+++ b/src/st/np3/32830.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
#include "sfx.h"
diff --git a/src/st/np3/363FC.c b/src/st/np3/363FC.c
index 6e2043e640..de57292cd6 100644
--- a/src/st/np3/363FC.c
+++ b/src/st/np3/363FC.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
// Make a EntityWargExplosionPuffOpaque
diff --git a/src/st/np3/44DCC.c b/src/st/np3/44DCC.c
index a4338645f0..758c791f4f 100644
--- a/src/st/np3/44DCC.c
+++ b/src/st/np3/44DCC.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: NP3
* Description: Merman Room
diff --git a/src/st/np3/48238.c b/src/st/np3/48238.c
index ddb8b17dc7..482a752057 100644
--- a/src/st/np3/48238.c
+++ b/src/st/np3/48238.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: NP3
* Description: Merman Room (2)
diff --git a/src/st/np3/4997C.c b/src/st/np3/4997C.c
index d9adec87c5..db3043a101 100644
--- a/src/st/np3/4997C.c
+++ b/src/st/np3/4997C.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
void EntityBat(Entity* entity) {
diff --git a/src/st/np3/49BC8.c b/src/st/np3/49BC8.c
index 8f2d9c29de..ec081fd106 100644
--- a/src/st/np3/49BC8.c
+++ b/src/st/np3/49BC8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
#include "sfx.h"
diff --git a/src/st/np3/49F98.c b/src/st/np3/49F98.c
index eab8fc25a7..8ef632eeec 100644
--- a/src/st/np3/49F98.c
+++ b/src/st/np3/49F98.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: NP3
* Enemy: Bloody Zombie
diff --git a/src/st/np3/4B018.c b/src/st/np3/4B018.c
index c2e371a116..1c87563d6d 100644
--- a/src/st/np3/4B018.c
+++ b/src/st/np3/4B018.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
#include "sfx.h"
diff --git a/src/st/np3/4D540.c b/src/st/np3/4D540.c
index 6c5afbcf30..955a3f70c5 100644
--- a/src/st/np3/4D540.c
+++ b/src/st/np3/4D540.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
void func_801CD540(Entity* self) {
diff --git a/src/st/np3/4E69C.c b/src/st/np3/4E69C.c
index 6a8200708f..ecc16b1c66 100644
--- a/src/st/np3/4E69C.c
+++ b/src/st/np3/4E69C.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
#include "sfx.h"
diff --git a/src/st/np3/4F5B8.c b/src/st/np3/4F5B8.c
index c6841f42b6..ac7d2d1ab3 100644
--- a/src/st/np3/4F5B8.c
+++ b/src/st/np3/4F5B8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
#include "sfx.h"
diff --git a/src/st/np3/blade.c b/src/st/np3/blade.c
index 7e23fe06f7..8c0fe47200 100644
--- a/src/st/np3/blade.c
+++ b/src/st/np3/blade.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
#include "sfx.h"
diff --git a/src/st/np3/blit_char.c b/src/st/np3/blit_char.c
index dcd77c4c0e..c30a4b304f 100644
--- a/src/st/np3/blit_char.c
+++ b/src/st/np3/blit_char.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../blit_char.h"
diff --git a/src/st/np3/bss.c b/src/st/np3/bss.c
index 2772f20aaf..1232d5659a 100644
--- a/src/st/np3/bss.c
+++ b/src/st/np3/bss.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
STATIC_PAD_BSS(3072);
diff --git a/src/st/np3/collision.c b/src/st/np3/collision.c
index 075265617f..ac4b650865 100644
--- a/src/st/np3/collision.c
+++ b/src/st/np3/collision.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../collision.h"
diff --git a/src/st/np3/create_entity.c b/src/st/np3/create_entity.c
index 10c09cbabf..6159c30f12 100644
--- a/src/st/np3/create_entity.c
+++ b/src/st/np3/create_entity.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../create_entity.h"
diff --git a/src/st/np3/e_bone_scimitar.c b/src/st/np3/e_bone_scimitar.c
index d8720390ec..be26ac6615 100644
--- a/src/st/np3/e_bone_scimitar.c
+++ b/src/st/np3/e_bone_scimitar.c
@@ -1,2 +1,3 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
#include "../e_bone_scimitar.h"
diff --git a/src/st/np3/e_breakable.c b/src/st/np3/e_breakable.c
index 712f6292c7..76b65adafc 100644
--- a/src/st/np3/e_breakable.c
+++ b/src/st/np3/e_breakable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
#include "../e_breakable.h"
diff --git a/src/st/np3/e_collect.c b/src/st/np3/e_collect.c
index f819390dbc..950b856406 100644
--- a/src/st/np3/e_collect.c
+++ b/src/st/np3/e_collect.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_collect.h"
diff --git a/src/st/np3/e_init.c b/src/st/np3/e_init.c
index be7943ec78..67672612f7 100644
--- a/src/st/np3/e_init.c
+++ b/src/st/np3/e_init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
void EntityBreakable(Entity* self);
diff --git a/src/st/np3/e_misc.c b/src/st/np3/e_misc.c
index f76f360d70..41483b7096 100644
--- a/src/st/np3/e_misc.c
+++ b/src/st/np3/e_misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
#include "../entity_relic_orb.h"
diff --git a/src/st/np3/e_particles.c b/src/st/np3/e_particles.c
index f07a9a67b4..fdda643ec2 100644
--- a/src/st/np3/e_particles.c
+++ b/src/st/np3/e_particles.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
#include "../entity_soul_steal_orb.h"
diff --git a/src/st/np3/e_red_door.c b/src/st/np3/e_red_door.c
index cd9dc7a561..10dc8ebb85 100644
--- a/src/st/np3/e_red_door.c
+++ b/src/st/np3/e_red_door.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_red_door.h"
diff --git a/src/st/np3/e_room_fg.c b/src/st/np3/e_room_fg.c
index d13f2e7fb2..936d5e5fb2 100644
--- a/src/st/np3/e_room_fg.c
+++ b/src/st/np3/e_room_fg.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
extern ObjInit D_801820F0[];
diff --git a/src/st/np3/e_stage_name.c b/src/st/np3/e_stage_name.c
index ed088d2f1f..9cf5b3e9b2 100644
--- a/src/st/np3/e_stage_name.c
+++ b/src/st/np3/e_stage_name.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
#include "../e_stage_name.h"
diff --git a/src/st/np3/gaibon.c b/src/st/np3/gaibon.c
index aa9a4115df..2255ca36ca 100644
--- a/src/st/np3/gaibon.c
+++ b/src/st/np3/gaibon.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
#include "sfx.h"
diff --git a/src/st/np3/header.c b/src/st/np3/header.c
index a8c0365fce..419a04bfe2 100644
--- a/src/st/np3/header.c
+++ b/src/st/np3/header.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
extern RoomHeader OVL_EXPORT(rooms)[];
diff --git a/src/st/np3/np3.h b/src/st/np3/np3.h
index e0a36bbd6f..320f5a4284 100644
--- a/src/st/np3/np3.h
+++ b/src/st/np3/np3.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "stage.h"
#define OVL_EXPORT(x) NP3_##x
diff --git a/src/st/np3/player_water_effect.c b/src/st/np3/player_water_effect.c
index d8702513c5..ace9480774 100644
--- a/src/st/np3/player_water_effect.c
+++ b/src/st/np3/player_water_effect.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
static u16 func_801C4144(s16 arg0, s16 arg1, s16 arg2, s16* arg3) {
diff --git a/src/st/np3/popup.c b/src/st/np3/popup.c
index 96fe1e10c7..7a2f50b317 100644
--- a/src/st/np3/popup.c
+++ b/src/st/np3/popup.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
#include "../popup.h"
diff --git a/src/st/np3/prim_helpers.c b/src/st/np3/prim_helpers.c
index 96d47f7df3..54fc9a0c68 100644
--- a/src/st/np3/prim_helpers.c
+++ b/src/st/np3/prim_helpers.c
@@ -1,2 +1,3 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../prim_helpers.h"
diff --git a/src/st/np3/slogra.c b/src/st/np3/slogra.c
index 6efd3f3e4a..b572c21c2f 100644
--- a/src/st/np3/slogra.c
+++ b/src/st/np3/slogra.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: NP3
* Enemy: Slogra & Gaibon Boss
diff --git a/src/st/np3/st_common.c b/src/st/np3/st_common.c
index b9827d9d09..0a09f229f1 100644
--- a/src/st/np3/st_common.c
+++ b/src/st/np3/st_common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
#include "../../destroy_entity.h"
diff --git a/src/st/np3/st_debug.c b/src/st/np3/st_debug.c
index e6ac092afa..110a041a2b 100644
--- a/src/st/np3/st_debug.c
+++ b/src/st/np3/st_debug.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "np3.h"
void func_801B246C(Entity* self) {
diff --git a/src/st/np3/st_update.c b/src/st/np3/st_update.c
index 8477b24783..b8e3f3feac 100644
--- a/src/st/np3/st_update.c
+++ b/src/st/np3/st_update.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
static u16 UNK_Invincibility0[] = {
diff --git a/src/st/np3/tile_data.c b/src/st/np3/tile_data.c
index fa580751fd..bc28167d9d 100644
--- a/src/st/np3/tile_data.c
+++ b/src/st/np3/tile_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "tilemap_168F4.h"
diff --git a/src/st/nz0/30958.c b/src/st/nz0/30958.c
index 35ada6a535..6fb83e5778 100644
--- a/src/st/nz0/30958.c
+++ b/src/st/nz0/30958.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* File: 394D4.c
* Overlay: NZ0
diff --git a/src/st/nz0/311C0.c b/src/st/nz0/311C0.c
index 547ca51fa6..66cf3ce4f1 100644
--- a/src/st/nz0/311C0.c
+++ b/src/st/nz0/311C0.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
// bust with red eyes that can have a candle on it
diff --git a/src/st/nz0/36DE4.c b/src/st/nz0/36DE4.c
index c597ff8dce..cdde920182 100644
--- a/src/st/nz0/36DE4.c
+++ b/src/st/nz0/36DE4.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
#include "sfx.h"
diff --git a/src/st/nz0/4070C.c b/src/st/nz0/4070C.c
index 16ef708224..fd37e4d532 100644
--- a/src/st/nz0/4070C.c
+++ b/src/st/nz0/4070C.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
#include "../check_coll_offsets.h"
diff --git a/src/st/nz0/blit_char.c b/src/st/nz0/blit_char.c
index dcd77c4c0e..c30a4b304f 100644
--- a/src/st/nz0/blit_char.c
+++ b/src/st/nz0/blit_char.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../blit_char.h"
diff --git a/src/st/nz0/bossfight.c b/src/st/nz0/bossfight.c
index 08db8e24bc..881ad4c36e 100644
--- a/src/st/nz0/bossfight.c
+++ b/src/st/nz0/bossfight.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
#include "sfx.h"
diff --git a/src/st/nz0/bss.c b/src/st/nz0/bss.c
index 5dd9dc55ca..31eb6b0bef 100644
--- a/src/st/nz0/bss.c
+++ b/src/st/nz0/bss.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
STATIC_PAD_BSS(3072);
diff --git a/src/st/nz0/collision.c b/src/st/nz0/collision.c
index 075265617f..ac4b650865 100644
--- a/src/st/nz0/collision.c
+++ b/src/st/nz0/collision.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../collision.h"
diff --git a/src/st/nz0/create_entity.c b/src/st/nz0/create_entity.c
index 29364d565e..a30481659f 100644
--- a/src/st/nz0/create_entity.c
+++ b/src/st/nz0/create_entity.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
u32 D_801CAA14[24];
diff --git a/src/st/nz0/e_axe_knight.c b/src/st/nz0/e_axe_knight.c
index a45a50d02c..bf0b9cfbfa 100644
--- a/src/st/nz0/e_axe_knight.c
+++ b/src/st/nz0/e_axe_knight.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: NZ0
* Enemy: Axe Knight
diff --git a/src/st/nz0/e_bloody_skeleton.c b/src/st/nz0/e_bloody_skeleton.c
index ca07bbf4f6..0835cba4e0 100644
--- a/src/st/nz0/e_bloody_skeleton.c
+++ b/src/st/nz0/e_bloody_skeleton.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: NZ0
* Enemy: Blood Skeleton
diff --git a/src/st/nz0/e_bloody_zombie.c b/src/st/nz0/e_bloody_zombie.c
index 7f834b1ac1..475e417ff4 100644
--- a/src/st/nz0/e_bloody_zombie.c
+++ b/src/st/nz0/e_bloody_zombie.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: NZ0
* Enemy: Bloody Zombie
diff --git a/src/st/nz0/e_bone_scimitar.c b/src/st/nz0/e_bone_scimitar.c
index ccfcda1bc2..6d0e74282a 100644
--- a/src/st/nz0/e_bone_scimitar.c
+++ b/src/st/nz0/e_bone_scimitar.c
@@ -1,2 +1,3 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
#include "../e_bone_scimitar.h"
diff --git a/src/st/nz0/e_breakable.c b/src/st/nz0/e_breakable.c
index bbc53af5ce..f302e421e5 100644
--- a/src/st/nz0/e_breakable.c
+++ b/src/st/nz0/e_breakable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
static u8 D_80180DE4[] = {4, 1, 4, 2, 0, 0, 0, 0};
diff --git a/src/st/nz0/e_collect.c b/src/st/nz0/e_collect.c
index f819390dbc..950b856406 100644
--- a/src/st/nz0/e_collect.c
+++ b/src/st/nz0/e_collect.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_collect.h"
diff --git a/src/st/nz0/e_elevator.c b/src/st/nz0/e_elevator.c
index 5fecccc7ab..ae5189457b 100644
--- a/src/st/nz0/e_elevator.c
+++ b/src/st/nz0/e_elevator.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
typedef enum ElevatorSubSteps {
diff --git a/src/st/nz0/e_init.c b/src/st/nz0/e_init.c
index 922d2b7687..f0ebd25706 100644
--- a/src/st/nz0/e_init.c
+++ b/src/st/nz0/e_init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
void EntityBreakableNZ0(Entity*);
diff --git a/src/st/nz0/e_magically_sealed_door.c b/src/st/nz0/e_magically_sealed_door.c
index c6fa557e34..d1ef2175e9 100644
--- a/src/st/nz0/e_magically_sealed_door.c
+++ b/src/st/nz0/e_magically_sealed_door.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: NZ0
* Entity: Magically Sealed Door
diff --git a/src/st/nz0/e_particles.c b/src/st/nz0/e_particles.c
index 86161180c1..d66f017f18 100644
--- a/src/st/nz0/e_particles.c
+++ b/src/st/nz0/e_particles.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_particles.h"
diff --git a/src/st/nz0/e_red_door.c b/src/st/nz0/e_red_door.c
index eefaa52b1a..d953306e48 100644
--- a/src/st/nz0/e_red_door.c
+++ b/src/st/nz0/e_red_door.c
@@ -1,3 +1,3 @@
-
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_red_door.h"
diff --git a/src/st/nz0/e_room_fg.c b/src/st/nz0/e_room_fg.c
index b20c1b8663..031379020a 100644
--- a/src/st/nz0/e_room_fg.c
+++ b/src/st/nz0/e_room_fg.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_room_fg.h"
diff --git a/src/st/nz0/e_skeleton.c b/src/st/nz0/e_skeleton.c
index 8b78f77ae3..95fd81057a 100644
--- a/src/st/nz0/e_skeleton.c
+++ b/src/st/nz0/e_skeleton.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: NZ0
* Enemy: Skeleton
diff --git a/src/st/nz0/e_spittle_bone.c b/src/st/nz0/e_spittle_bone.c
index 70f2f572f2..1ba497280e 100644
--- a/src/st/nz0/e_spittle_bone.c
+++ b/src/st/nz0/e_spittle_bone.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: NZ0
* Enemy: Spittle Bone
diff --git a/src/st/nz0/e_stage_name.c b/src/st/nz0/e_stage_name.c
index d62fdb9509..1914412127 100644
--- a/src/st/nz0/e_stage_name.c
+++ b/src/st/nz0/e_stage_name.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
#include "../e_stage_name.h"
diff --git a/src/st/nz0/e_subweapon_container.c b/src/st/nz0/e_subweapon_container.c
index 6c0c01ded7..3a8c87bdb3 100644
--- a/src/st/nz0/e_subweapon_container.c
+++ b/src/st/nz0/e_subweapon_container.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: NZ0
* Entity: SubWeapon container
diff --git a/src/st/nz0/entity_heart_drop.c b/src/st/nz0/entity_heart_drop.c
index 405caa475d..2c539c2ac6 100644
--- a/src/st/nz0/entity_heart_drop.c
+++ b/src/st/nz0/entity_heart_drop.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
void EntityHeartDrop(Entity* self) {
diff --git a/src/st/nz0/entity_message_box.c b/src/st/nz0/entity_message_box.c
index 0ae48b771d..97bc1a36ba 100644
--- a/src/st/nz0/entity_message_box.c
+++ b/src/st/nz0/entity_message_box.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
#include "../entity_message_box.h"
diff --git a/src/st/nz0/entity_relic_orb.c b/src/st/nz0/entity_relic_orb.c
index d8c1952558..d9083744d5 100644
--- a/src/st/nz0/entity_relic_orb.c
+++ b/src/st/nz0/entity_relic_orb.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
#include "../entity_relic_orb.h"
diff --git a/src/st/nz0/gaibon.c b/src/st/nz0/gaibon.c
index 3902b0fc04..56624c235e 100644
--- a/src/st/nz0/gaibon.c
+++ b/src/st/nz0/gaibon.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
#include "sfx.h"
diff --git a/src/st/nz0/header.c b/src/st/nz0/header.c
index cacfd2057e..812b06315d 100644
--- a/src/st/nz0/header.c
+++ b/src/st/nz0/header.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
extern signed short* spriteBanks[];
diff --git a/src/st/nz0/lifeupspawn.c b/src/st/nz0/lifeupspawn.c
index 8e74eda8ba..49fa9da20d 100644
--- a/src/st/nz0/lifeupspawn.c
+++ b/src/st/nz0/lifeupspawn.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
// particle effect that spawns life up item
diff --git a/src/st/nz0/maria.c b/src/st/nz0/maria.c
index c60d16c7a7..f155bec17a 100644
--- a/src/st/nz0/maria.c
+++ b/src/st/nz0/maria.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
#include "sfx.h"
diff --git a/src/st/nz0/mariacutscene.c b/src/st/nz0/mariacutscene.c
index 9ebc7ff99f..11f108b0e6 100644
--- a/src/st/nz0/mariacutscene.c
+++ b/src/st/nz0/mariacutscene.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
// This file consists of EntityMariaCutscene, and all the functions it calls.
diff --git a/src/st/nz0/nz0.h b/src/st/nz0/nz0.h
index bd97b29c81..5738c945ff 100644
--- a/src/st/nz0/nz0.h
+++ b/src/st/nz0/nz0.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "stage.h"
#define OVL_EXPORT(x) NZ0_##x
diff --git a/src/st/nz0/popup.c b/src/st/nz0/popup.c
index 8c6e9b6aab..182d6fdae9 100644
--- a/src/st/nz0/popup.c
+++ b/src/st/nz0/popup.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../popup.h"
diff --git a/src/st/nz0/prim_helpers.c b/src/st/nz0/prim_helpers.c
index 96d47f7df3..54fc9a0c68 100644
--- a/src/st/nz0/prim_helpers.c
+++ b/src/st/nz0/prim_helpers.c
@@ -1,2 +1,3 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../prim_helpers.h"
diff --git a/src/st/nz0/slogra.c b/src/st/nz0/slogra.c
index 3c237895cd..dae4c72264 100644
--- a/src/st/nz0/slogra.c
+++ b/src/st/nz0/slogra.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
#include "sfx.h"
diff --git a/src/st/nz0/st_common.c b/src/st/nz0/st_common.c
index 796e4edc4d..f9749e0aa8 100644
--- a/src/st/nz0/st_common.c
+++ b/src/st/nz0/st_common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "nz0.h"
static s16 D_80181978[] = {
diff --git a/src/st/nz0/st_update.c b/src/st/nz0/st_update.c
index 8477b24783..b8e3f3feac 100644
--- a/src/st/nz0/st_update.c
+++ b/src/st/nz0/st_update.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
static u16 UNK_Invincibility0[] = {
diff --git a/src/st/nz0/tile_data.c b/src/st/nz0/tile_data.c
index a64eb535bd..8a6dd00ab4 100644
--- a/src/st/nz0/tile_data.c
+++ b/src/st/nz0/tile_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "tilemap_16A5C.h"
diff --git a/src/st/play_sfx_positional.h b/src/st/play_sfx_positional.h
index 206b8f3414..72cc34fa97 100644
--- a/src/st/play_sfx_positional.h
+++ b/src/st/play_sfx_positional.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void PlaySfxPositional(s16 sfxId) {
s32 posX;
s32 posY;
diff --git a/src/st/popup.h b/src/st/popup.h
index b7807ebc2e..49c17358df 100644
--- a/src/st/popup.h
+++ b/src/st/popup.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#if defined(VERSION_US)
diff --git a/src/st/prevent_entity_from_respawning.h b/src/st/prevent_entity_from_respawning.h
index 9dc0f494d2..16799dcadf 100644
--- a/src/st/prevent_entity_from_respawning.h
+++ b/src/st/prevent_entity_from_respawning.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void PreventEntityFromRespawning(Entity* entity) {
if (entity->entityRoomIndex) {
u16 index = entity->entityRoomIndex - 1 >> 5;
diff --git a/src/st/prim_helpers.h b/src/st/prim_helpers.h
index 51a6b9d5fe..649cc105b1 100644
--- a/src/st/prim_helpers.h
+++ b/src/st/prim_helpers.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "game.h"
#if !defined(VERSION_PSP)
diff --git a/src/st/random.h b/src/st/random.h
index 3d1795d7f1..4996d0b5eb 100644
--- a/src/st/random.h
+++ b/src/st/random.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
s32 Random(void) {
diff --git a/src/st/ratan2.h b/src/st/ratan2.h
index cd2e5057b4..283b7aa39e 100644
--- a/src/st/ratan2.h
+++ b/src/st/ratan2.h
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
u16 Ratan2(s16 x, s16 y) { return ratan2(y, x); }
diff --git a/src/st/ratan2_shifted.h b/src/st/ratan2_shifted.h
index a29f41a3fb..cb4abd8b62 100644
--- a/src/st/ratan2_shifted.h
+++ b/src/st/ratan2_shifted.h
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
u8 Ratan2Shifted(s16 x, s16 y) { return (ratan2(y, x) >> 4) + 0x40; }
diff --git a/src/st/replace_breakable_with_item_drop.h b/src/st/replace_breakable_with_item_drop.h
index ab0a8d4176..fa767a1777 100644
--- a/src/st/replace_breakable_with_item_drop.h
+++ b/src/st/replace_breakable_with_item_drop.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void ReplaceBreakableWithItemDrop(Entity* self) {
u16 params;
diff --git a/src/st/rwrp/bss.c b/src/st/rwrp/bss.c
index 1bb650f9be..9ced6bd9d6 100644
--- a/src/st/rwrp/bss.c
+++ b/src/st/rwrp/bss.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
STATIC_PAD_BSS(0xC68);
diff --git a/src/st/rwrp/d_1b8.c b/src/st/rwrp/d_1b8.c
index 3644c28dac..7dd3d2cba7 100644
--- a/src/st/rwrp/d_1b8.c
+++ b/src/st/rwrp/d_1b8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "rwrp.h"
#include "../st_private.h"
diff --git a/src/st/rwrp/e_init.c b/src/st/rwrp/e_init.c
index 87ca8dd352..39397dabfb 100644
--- a/src/st/rwrp/e_init.c
+++ b/src/st/rwrp/e_init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "rwrp.h"
#include "../st_private.h"
diff --git a/src/st/rwrp/e_misc.c b/src/st/rwrp/e_misc.c
index c098319c68..1b773f23f6 100644
--- a/src/st/rwrp/e_misc.c
+++ b/src/st/rwrp/e_misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "rwrp.h"
#include "../e_misc.h"
diff --git a/src/st/rwrp/header.c b/src/st/rwrp/header.c
index 9991dc8375..2a66f6f03c 100644
--- a/src/st/rwrp/header.c
+++ b/src/st/rwrp/header.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "rwrp.h"
extern RoomHeader OVL_EXPORT(rooms)[];
diff --git a/src/st/rwrp/rwrp.h b/src/st/rwrp/rwrp.h
index a688ab70ea..7dd1827d52 100644
--- a/src/st/rwrp/rwrp.h
+++ b/src/st/rwrp/rwrp.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef RWRP_H
#define RWRP_H
diff --git a/src/st/rwrp/tile_data.c b/src/st/rwrp/tile_data.c
index a98915f79c..e2b3920854 100644
--- a/src/st/rwrp/tile_data.c
+++ b/src/st/rwrp/tile_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "tilemap_01FC8.h"
diff --git a/src/st/rwrp/warp.c b/src/st/rwrp/warp.c
index f3b658b65a..5b3a3ac7f7 100644
--- a/src/st/rwrp/warp.c
+++ b/src/st/rwrp/warp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "game.h"
#include "rwrp.h"
#include "common.h"
diff --git a/src/st/sel/2C048.c b/src/st/sel/2C048.c
index 19f26c5430..1c80bb7b95 100644
--- a/src/st/sel/2C048.c
+++ b/src/st/sel/2C048.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* File: 2C048.c
* Overlay: SEL
diff --git a/src/st/sel/33164.c b/src/st/sel/33164.c
index accb2030aa..2bb3a9cbbf 100644
--- a/src/st/sel/33164.c
+++ b/src/st/sel/33164.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "sel.h"
s32 func_801B3164(void) {
diff --git a/src/st/sel/3410C.c b/src/st/sel/3410C.c
index 3be0685272..7a38b5b31e 100644
--- a/src/st/sel/3410C.c
+++ b/src/st/sel/3410C.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "sel.h"
#include "sfx.h"
diff --git a/src/st/sel/3585C.c b/src/st/sel/3585C.c
index 0ade8aa847..b6742a3346 100644
--- a/src/st/sel/3585C.c
+++ b/src/st/sel/3585C.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "sel.h"
void func_801B4B9C(Entity* entity, s16 step);
diff --git a/src/st/sel/3642C.c b/src/st/sel/3642C.c
index 1eb4816bfe..d398175862 100644
--- a/src/st/sel/3642C.c
+++ b/src/st/sel/3642C.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "sel.h"
void func_801B642C(void) {
diff --git a/src/st/sel/CD54.c b/src/st/sel/CD54.c
index ebd075ca85..b4ee4a71e2 100644
--- a/src/st/sel/CD54.c
+++ b/src/st/sel/CD54.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
unsigned short D_8018CD54[48] = {
0x0000, 0x0421, 0x0C63, 0x2D6B, 0x56B5, 0x7FFF, 0x2840, 0x38C4,
0x59CC, 0x00EE, 0x01F4, 0x0F5F, 0x3FFF, 0x000A, 0x0010, 0x0016,
diff --git a/src/st/sel/banks.c b/src/st/sel/banks.c
index a49fee43ba..ba23a7a6d7 100644
--- a/src/st/sel/banks.c
+++ b/src/st/sel/banks.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "game.h"
static u8 D_801804E0[] = {
diff --git a/src/st/sel/bss.c b/src/st/sel/bss.c
index 061db6c1aa..6a4f580501 100644
--- a/src/st/sel/bss.c
+++ b/src/st/sel/bss.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "common.h"
u32 D_801BAEE4[9];
diff --git a/src/st/sel/config_us.c b/src/st/sel/config_us.c
index 052811ed1a..40e5fb1cec 100644
--- a/src/st/sel/config_us.c
+++ b/src/st/sel/config_us.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../../config_us.h"
diff --git a/src/st/sel/lba_stage.c b/src/st/sel/lba_stage.c
index 03dcba60d1..75edff9b34 100644
--- a/src/st/sel/lba_stage.c
+++ b/src/st/sel/lba_stage.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "game.h"
// clang-format off
diff --git a/src/st/sel/save_mgr.c b/src/st/sel/save_mgr.c
index ac7c748fd0..0b75fc3266 100644
--- a/src/st/sel/save_mgr.c
+++ b/src/st/sel/save_mgr.c
@@ -1,2 +1,3 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "sel.h"
#include "../../save_mgr.h"
diff --git a/src/st/sel/save_mgr_pre.c b/src/st/sel/save_mgr_pre.c
index b599f080db..86d7604e27 100644
--- a/src/st/sel/save_mgr_pre.c
+++ b/src/st/sel/save_mgr_pre.c
@@ -1,2 +1,3 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "sel.h"
#include "../../save_mgr_pre.h"
diff --git a/src/st/sel/sel.h b/src/st/sel/sel.h
index b3a8343eaf..9fd83db278 100644
--- a/src/st/sel/sel.h
+++ b/src/st/sel/sel.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "stage.h"
#include
#include "memcard.h"
diff --git a/src/st/sel/stream.c b/src/st/sel/stream.c
index 74bd5ca762..11eb75cc55 100644
--- a/src/st/sel/stream.c
+++ b/src/st/sel/stream.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "sel.h"
// Check if CD data is ready as long as its not related to reading the position
diff --git a/src/st/sel/stream_info.c b/src/st/sel/stream_info.c
index ab54c3624f..e961cfe0b8 100644
--- a/src/st/sel/stream_info.c
+++ b/src/st/sel/stream_info.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "sel.h"
StreamInfo g_StreamInfo0 = {
diff --git a/src/st/set_entity_velocity_from_angle.h b/src/st/set_entity_velocity_from_angle.h
index 497f34842f..c8e19f223e 100644
--- a/src/st/set_entity_velocity_from_angle.h
+++ b/src/st/set_entity_velocity_from_angle.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void SetEntityVelocityFromAngle(s32 arg0, s16 arg1) {
g_CurrentEntity->velocityX = GetSineScaled(arg0, arg1);
g_CurrentEntity->velocityY = GetSineScaled(arg0 - 0x40, arg1);
diff --git a/src/st/set_step.h b/src/st/set_step.h
index 593dff5a40..298f55b016 100644
--- a/src/st/set_step.h
+++ b/src/st/set_step.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void SetStep(u8 step) {
g_CurrentEntity->step = step;
g_CurrentEntity->step_s = 0;
diff --git a/src/st/set_sub_step.h b/src/st/set_sub_step.h
index ca0b785aaa..972ed8a436 100644
--- a/src/st/set_sub_step.h
+++ b/src/st/set_sub_step.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void SetSubStep(u8 step_s) {
g_CurrentEntity->step_s = step_s;
g_CurrentEntity->animFrameIdx = 0;
diff --git a/src/st/st0/27D64.c b/src/st/st0/27D64.c
index 864d1f2cf7..e4ae266659 100644
--- a/src/st/st0/27D64.c
+++ b/src/st/st0/27D64.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "st0.h"
#include "sfx.h"
diff --git a/src/st/st0/2A218.c b/src/st/st0/2A218.c
index 65d34b8aa3..e5c73c0419 100644
--- a/src/st/st0/2A218.c
+++ b/src/st/st0/2A218.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "st0.h"
void func_801AA218(s16 arg0) {
diff --git a/src/st/st0/2A8DC.c b/src/st/st0/2A8DC.c
index bfcf8e24d1..6639fa4e3b 100644
--- a/src/st/st0/2A8DC.c
+++ b/src/st/st0/2A8DC.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: ST0
* Entity: Secret Stairs
diff --git a/src/st/st0/2B0C8.c b/src/st/st0/2B0C8.c
index e9c2448bcf..799b96e1a3 100644
--- a/src/st/st0/2B0C8.c
+++ b/src/st/st0/2B0C8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "st0.h"
#include "sfx.h"
diff --git a/src/st/st0/2C564.c b/src/st/st0/2C564.c
index e914364358..b74971254d 100644
--- a/src/st/st0/2C564.c
+++ b/src/st/st0/2C564.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: ST0
* Enemy: Dracula Boss
diff --git a/src/st/st0/2DAC8.c b/src/st/st0/2DAC8.c
index 55d9d96fc0..131ae69060 100644
--- a/src/st/st0/2DAC8.c
+++ b/src/st/st0/2DAC8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "st0.h"
#include "sfx.h"
diff --git a/src/st/st0/30030.c b/src/st/st0/30030.c
index ee3fc310bd..ec0b08c256 100644
--- a/src/st/st0/30030.c
+++ b/src/st/st0/30030.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "st0.h"
#include "disk.h"
diff --git a/src/st/st0/34908.c b/src/st/st0/34908.c
index 2a2e8cb677..e3f5044140 100644
--- a/src/st/st0/34908.c
+++ b/src/st/st0/34908.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "st0.h"
#include "sfx.h"
diff --git a/src/st/st0/37308.c b/src/st/st0/37308.c
index db30e3a838..475a6969b9 100644
--- a/src/st/st0/37308.c
+++ b/src/st/st0/37308.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "game.h"
#include "st0.h"
#include "sfx.h"
diff --git a/src/st/st0/3D8F0.c b/src/st/st0/3D8F0.c
index 831c39bdb4..701bba4298 100644
--- a/src/st/st0/3D8F0.c
+++ b/src/st/st0/3D8F0.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "st0.h"
typedef struct {
diff --git a/src/st/st0/bss.c b/src/st/st0/bss.c
index 64509d032c..ef35ca3f91 100644
--- a/src/st/st0/bss.c
+++ b/src/st/st0/bss.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
u16 D_801C00B0[768];
diff --git a/src/st/st0/collision.c b/src/st/st0/collision.c
index 28490822e3..d2b6530f9e 100644
--- a/src/st/st0/collision.c
+++ b/src/st/st0/collision.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
static u16 g_testCollEnemyLookup[] = {
diff --git a/src/st/st0/create_entity.c b/src/st/st0/create_entity.c
index 431ffa1e8b..32b488eda1 100644
--- a/src/st/st0/create_entity.c
+++ b/src/st/st0/create_entity.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
u32 D_801BEB00[25];
diff --git a/src/st/st0/draculacutscene.c b/src/st/st0/draculacutscene.c
index fe905c1e11..c3f2dc15b0 100644
--- a/src/st/st0/draculacutscene.c
+++ b/src/st/st0/draculacutscene.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Overlay: ST0
* Description: Cutscene of Richter talking to Dracula
diff --git a/src/st/st0/e_collect.c b/src/st/st0/e_collect.c
index 6bc3943d90..1d34f48dde 100644
--- a/src/st/st0/e_collect.c
+++ b/src/st/st0/e_collect.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "st0.h"
#include "../e_collect.h"
diff --git a/src/st/st0/e_red_door.c b/src/st/st0/e_red_door.c
index cd9dc7a561..10dc8ebb85 100644
--- a/src/st/st0/e_red_door.c
+++ b/src/st/st0/e_red_door.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_red_door.h"
diff --git a/src/st/st0/header.c b/src/st/st0/header.c
index a6326dc414..8c5848998b 100644
--- a/src/st/st0/header.c
+++ b/src/st/st0/header.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "st0.h"
extern RoomHeader OVL_EXPORT(rooms)[];
diff --git a/src/st/st0/prim_helpers.c b/src/st/st0/prim_helpers.c
index 96d47f7df3..54fc9a0c68 100644
--- a/src/st/st0/prim_helpers.c
+++ b/src/st/st0/prim_helpers.c
@@ -1,2 +1,3 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../prim_helpers.h"
diff --git a/src/st/st0/random.c b/src/st/st0/random.c
index 04cd68787f..179dd6ac49 100644
--- a/src/st/st0/random.c
+++ b/src/st/st0/random.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../random.h"
diff --git a/src/st/st0/st0.h b/src/st/st0/st0.h
index 7d7fd85774..b6c538e70c 100644
--- a/src/st/st0/st0.h
+++ b/src/st/st0/st0.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "stage.h"
#undef STAGE
diff --git a/src/st/st0/tile_data.c b/src/st/st0/tile_data.c
index 61b0384157..cd1e10417c 100644
--- a/src/st/st0/tile_data.c
+++ b/src/st/st0/tile_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "tilemap_1B2D0.h"
diff --git a/src/st/st0/update.c b/src/st/st0/update.c
index e447681b8d..83ea91c17d 100644
--- a/src/st/st0/update.c
+++ b/src/st/st0/update.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../update.h"
diff --git a/src/st/st0/update_stage_entities.c b/src/st/st0/update_stage_entities.c
index 8886987cb8..2f06eb5ef1 100644
--- a/src/st/st0/update_stage_entities.c
+++ b/src/st/st0/update_stage_entities.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../update_stage_entities.h"
diff --git a/src/st/st_private.h b/src/st/st_private.h
index 2388d786cd..2f00e413c1 100644
--- a/src/st/st_private.h
+++ b/src/st/st_private.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef ST_PRIVATE_H
#define ST_PRIVATE_H
diff --git a/src/st/unk_anim_func.h b/src/st/unk_anim_func.h
index 2c7f7c76ab..cf560353d7 100644
--- a/src/st/unk_anim_func.h
+++ b/src/st/unk_anim_func.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
u8 UnkAnimFunc(u8 frames[], Entity* self, u8 arg2) {
u16 animFrameStart = self->animFrameIdx * 2;
u8* var_s1 = &frames[animFrameStart];
diff --git a/src/st/unk_collision_func.h b/src/st/unk_collision_func.h
index b205354c67..ed4520ac59 100644
--- a/src/st/unk_collision_func.h
+++ b/src/st/unk_collision_func.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
s32 UnkCollisionFunc(u16* hitSensors, s16 sensorCount) {
Collider collider;
s16 i;
diff --git a/src/st/unk_collision_func2.h b/src/st/unk_collision_func2.h
index af647d9fdf..203c65f807 100644
--- a/src/st/unk_collision_func2.h
+++ b/src/st/unk_collision_func2.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
s32 UnkCollisionFunc2(s16* posX) {
Collider collider;
s16 temp2;
diff --git a/src/st/unk_collision_func3.h b/src/st/unk_collision_func3.h
index bf0fe837a0..30dfde6b9e 100644
--- a/src/st/unk_collision_func3.h
+++ b/src/st/unk_collision_func3.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
s32 UnkCollisionFunc3(u16* sensors) {
Collider col;
Collider colBack;
diff --git a/src/st/unk_collision_func4.h b/src/st/unk_collision_func4.h
index 268124a4ba..80252fb120 100644
--- a/src/st/unk_collision_func4.h
+++ b/src/st/unk_collision_func4.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
u8 UnkCollisionFunc4(s32 arg0) {
Collider collider;
u32 bits_67;
diff --git a/src/st/unk_collision_func5.h b/src/st/unk_collision_func5.h
index 40accc7d9b..0b64f371d4 100644
--- a/src/st/unk_collision_func5.h
+++ b/src/st/unk_collision_func5.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
bool UnkCollisionFunc5(Point16* unk) {
Collider collider;
diff --git a/src/st/unk_entity_func0.h b/src/st/unk_entity_func0.h
index e570c229d0..0f6838c98e 100644
--- a/src/st/unk_entity_func0.h
+++ b/src/st/unk_entity_func0.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
void UnkEntityFunc0(u16 slope, s16 speed) {
g_CurrentEntity->velocityX = rcos(slope) * speed / 16;
g_CurrentEntity->velocityY = rsin(slope) * speed / 16;
diff --git a/src/st/unk_recursive_primfunc_1.h b/src/st/unk_recursive_primfunc_1.h
index 58e76a83f6..db0a212bc8 100644
--- a/src/st/unk_recursive_primfunc_1.h
+++ b/src/st/unk_recursive_primfunc_1.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
extern u16 g_UnkRecursPrimVecOrder[];
// arg7 holds, in order:
diff --git a/src/st/unk_recursive_primfunc_2.h b/src/st/unk_recursive_primfunc_2.h
index dd1a7333a6..21b0e15c25 100644
--- a/src/st/unk_recursive_primfunc_2.h
+++ b/src/st/unk_recursive_primfunc_2.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
extern u16 g_UnkRecursPrim2Inds[];
// arg3 holds, in order:
diff --git a/src/st/update.h b/src/st/update.h
index 7195b1cd81..148026ebf2 100644
--- a/src/st/update.h
+++ b/src/st/update.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
extern u16 UNK_Invincibility0[];
diff --git a/src/st/update_room_position.h b/src/st/update_room_position.h
index 64f0331322..d3e96ab317 100644
--- a/src/st/update_room_position.h
+++ b/src/st/update_room_position.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
/*
* Creates any new entities that may need to be created
* based on a change in the scroll delta.
diff --git a/src/st/update_stage_entities.h b/src/st/update_stage_entities.h
index 442c655cc3..6f637319cd 100644
--- a/src/st/update_stage_entities.h
+++ b/src/st/update_stage_entities.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
extern u16 UNK_Invincibility0[];
diff --git a/src/st/wrp/blit_char.c b/src/st/wrp/blit_char.c
index dcd77c4c0e..c30a4b304f 100644
--- a/src/st/wrp/blit_char.c
+++ b/src/st/wrp/blit_char.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../blit_char.h"
diff --git a/src/st/wrp/bss.c b/src/st/wrp/bss.c
index 89acec9f49..c959c70a42 100644
--- a/src/st/wrp/bss.c
+++ b/src/st/wrp/bss.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
u16 D_801997E8[0x600];
diff --git a/src/st/wrp/collision.c b/src/st/wrp/collision.c
index 075265617f..ac4b650865 100644
--- a/src/st/wrp/collision.c
+++ b/src/st/wrp/collision.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../collision.h"
diff --git a/src/st/wrp/create_entity.c b/src/st/wrp/create_entity.c
index 10c09cbabf..6159c30f12 100644
--- a/src/st/wrp/create_entity.c
+++ b/src/st/wrp/create_entity.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../create_entity.h"
diff --git a/src/st/wrp/d_1b8.c b/src/st/wrp/d_1b8.c
index 481da79e00..8aee68ccc9 100644
--- a/src/st/wrp/d_1b8.c
+++ b/src/st/wrp/d_1b8.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "wrp.h"
#include "../st_private.h"
diff --git a/src/st/wrp/d_608.c b/src/st/wrp/d_608.c
index 884130080a..497d6055da 100644
--- a/src/st/wrp/d_608.c
+++ b/src/st/wrp/d_608.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
u32 D_80180608[] = {
diff --git a/src/st/wrp/e_breakable.c b/src/st/wrp/e_breakable.c
index 11f6edeef9..f1d2ce6501 100644
--- a/src/st/wrp/e_breakable.c
+++ b/src/st/wrp/e_breakable.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "wrp.h"
#include "../e_breakable.h"
diff --git a/src/st/wrp/e_collect.c b/src/st/wrp/e_collect.c
index f819390dbc..950b856406 100644
--- a/src/st/wrp/e_collect.c
+++ b/src/st/wrp/e_collect.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_collect.h"
diff --git a/src/st/wrp/e_init.c b/src/st/wrp/e_init.c
index d1bda4170d..f1b44db53a 100644
--- a/src/st/wrp/e_init.c
+++ b/src/st/wrp/e_init.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "wrp.h"
#include "../st_private.h"
diff --git a/src/st/wrp/e_misc.c b/src/st/wrp/e_misc.c
index 695fc1b162..d7205aaa27 100644
--- a/src/st/wrp/e_misc.c
+++ b/src/st/wrp/e_misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "wrp.h"
#define CASTLE_FLAG_BANK 0x000
diff --git a/src/st/wrp/e_particles.c b/src/st/wrp/e_particles.c
index 86161180c1..d66f017f18 100644
--- a/src/st/wrp/e_particles.c
+++ b/src/st/wrp/e_particles.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_particles.h"
diff --git a/src/st/wrp/e_red_door.c b/src/st/wrp/e_red_door.c
index 060ec60d4a..2ee649d08a 100644
--- a/src/st/wrp/e_red_door.c
+++ b/src/st/wrp/e_red_door.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "wrp.h"
#include "../e_red_door.h"
diff --git a/src/st/wrp/e_room_fg.c b/src/st/wrp/e_room_fg.c
index b20c1b8663..031379020a 100644
--- a/src/st/wrp/e_room_fg.c
+++ b/src/st/wrp/e_room_fg.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../e_room_fg.h"
diff --git a/src/st/wrp/e_stage_name.c b/src/st/wrp/e_stage_name.c
index b98102b43c..dc13fda848 100644
--- a/src/st/wrp/e_stage_name.c
+++ b/src/st/wrp/e_stage_name.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "wrp.h"
#if defined(VERSION_US)
diff --git a/src/st/wrp/header.c b/src/st/wrp/header.c
index 55eda57ea4..2e82c6711e 100644
--- a/src/st/wrp/header.c
+++ b/src/st/wrp/header.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "wrp.h"
void Update(void);
diff --git a/src/st/wrp/popup.c b/src/st/wrp/popup.c
index 8c6e9b6aab..182d6fdae9 100644
--- a/src/st/wrp/popup.c
+++ b/src/st/wrp/popup.c
@@ -1 +1,2 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../popup.h"
diff --git a/src/st/wrp/prim_helpers.c b/src/st/wrp/prim_helpers.c
index fc7edccdac..74cc625862 100644
--- a/src/st/wrp/prim_helpers.c
+++ b/src/st/wrp/prim_helpers.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#include "../prim_helpers.h"
diff --git a/src/st/wrp/st_common.c b/src/st/wrp/st_common.c
index d1037d41d9..706aabb0ee 100644
--- a/src/st/wrp/st_common.c
+++ b/src/st/wrp/st_common.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "wrp.h"
#if !defined(VERSION_PSP)
diff --git a/src/st/wrp/st_debug.c b/src/st/wrp/st_debug.c
index 93d40724f2..c3afcac5f2 100644
--- a/src/st/wrp/st_debug.c
+++ b/src/st/wrp/st_debug.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "wrp.h"
static u8 g_EntityUnkId12Hitbox[] = {
diff --git a/src/st/wrp/st_update.c b/src/st/wrp/st_update.c
index 8477b24783..b8e3f3feac 100644
--- a/src/st/wrp/st_update.c
+++ b/src/st/wrp/st_update.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
static u16 UNK_Invincibility0[] = {
diff --git a/src/st/wrp/tile_data.c b/src/st/wrp/tile_data.c
index 2bfeb9e453..510ddee054 100644
--- a/src/st/wrp/tile_data.c
+++ b/src/st/wrp/tile_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#if defined(VERSION_US)
diff --git a/src/st/wrp/warp.c b/src/st/wrp/warp.c
index 685bd5ae0b..e8873ec95e 100644
--- a/src/st/wrp/warp.c
+++ b/src/st/wrp/warp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "wrp.h"
#include
diff --git a/src/st/wrp/wrp.h b/src/st/wrp/wrp.h
index 4fbd1b1e05..4e8e7028f1 100644
--- a/src/st/wrp/wrp.h
+++ b/src/st/wrp/wrp.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
#define OVL_EXPORT(x) WRP_##x
diff --git a/src/st/wrp_psp/blit_char.c b/src/st/wrp_psp/blit_char.c
index cc5ef3e94e..5399d7be93 100644
--- a/src/st/wrp_psp/blit_char.c
+++ b/src/st/wrp_psp/blit_char.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
// psp unique?
diff --git a/src/st/wrp_psp/bss.c b/src/st/wrp_psp/bss.c
index 5b3ca60973..28b517bc11 100644
--- a/src/st/wrp_psp/bss.c
+++ b/src/st/wrp_psp/bss.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
// warp.c
diff --git a/src/st/wrp_psp/collision.c b/src/st/wrp_psp/collision.c
index 52e30a76f0..cbaf8f479c 100644
--- a/src/st/wrp_psp/collision.c
+++ b/src/st/wrp_psp/collision.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
INCLUDE_ASM("st/wrp_psp/psp/wrp_psp/collision", HitDetection);
diff --git a/src/st/wrp_psp/create_entity.c b/src/st/wrp_psp/create_entity.c
index 0f3c2e4c62..e03c229c4b 100644
--- a/src/st/wrp_psp/create_entity.c
+++ b/src/st/wrp_psp/create_entity.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
static u16* g_LayoutObjHorizontal;
diff --git a/src/st/wrp_psp/e_collect.c b/src/st/wrp_psp/e_collect.c
index 92a25fce20..9165ccce02 100644
--- a/src/st/wrp_psp/e_collect.c
+++ b/src/st/wrp_psp/e_collect.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
#include
diff --git a/src/st/wrp_psp/e_misc.c b/src/st/wrp_psp/e_misc.c
index f1b5e0af4f..5156105bd4 100644
--- a/src/st/wrp_psp/e_misc.c
+++ b/src/st/wrp_psp/e_misc.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
extern u16 D_80180608[];
diff --git a/src/st/wrp_psp/e_particles_data.c b/src/st/wrp_psp/e_particles_data.c
index 756f889cad..6d2938a397 100644
--- a/src/st/wrp_psp/e_particles_data.c
+++ b/src/st/wrp_psp/e_particles_data.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
u16 g_ESoulStealOrbAngles[] = {
diff --git a/src/st/wrp_psp/e_particles_maria1.c b/src/st/wrp_psp/e_particles_maria1.c
index 16976be2d6..6855a29c30 100644
--- a/src/st/wrp_psp/e_particles_maria1.c
+++ b/src/st/wrp_psp/e_particles_maria1.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
extern u16 g_ESoulStealOrbAngles[];
diff --git a/src/st/wrp_psp/e_particles_maria2.c b/src/st/wrp_psp/e_particles_maria2.c
index e44678c304..f0b6729ce3 100644
--- a/src/st/wrp_psp/e_particles_maria2.c
+++ b/src/st/wrp_psp/e_particles_maria2.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
extern u16 g_ESoulStealOrbAngles[];
diff --git a/src/st/wrp_psp/e_stage_name.c b/src/st/wrp_psp/e_stage_name.c
index b6aa1bb42c..8a0435df22 100644
--- a/src/st/wrp_psp/e_stage_name.c
+++ b/src/st/wrp_psp/e_stage_name.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
INCLUDE_ASM("st/wrp_psp/psp/wrp_psp/e_stage_name", EntityStageNamePopup);
diff --git a/src/st/wrp_psp/prim_helpers.c b/src/st/wrp_psp/prim_helpers.c
index e8a33ed01b..226e65ece3 100644
--- a/src/st/wrp_psp/prim_helpers.c
+++ b/src/st/wrp_psp/prim_helpers.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
#include "../prim_helpers.h"
diff --git a/src/st/wrp_psp/st_init_wrp.c b/src/st/wrp_psp/st_init_wrp.c
index f90341d98f..ea3ebac07e 100644
--- a/src/st/wrp_psp/st_init_wrp.c
+++ b/src/st/wrp_psp/st_init_wrp.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
// entity table to allocate new entities
diff --git a/src/st/wrp_psp/stage_name_new.c b/src/st/wrp_psp/stage_name_new.c
index 1754fca7c2..36c57ec8dd 100644
--- a/src/st/wrp_psp/stage_name_new.c
+++ b/src/st/wrp_psp/stage_name_new.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
void func_8928694(s32, void*);
diff --git a/src/st/wrp_psp/wrp_data_142E0.c b/src/st/wrp_psp/wrp_data_142E0.c
index 9223a9bdbe..d21eafbd1f 100644
--- a/src/st/wrp_psp/wrp_data_142E0.c
+++ b/src/st/wrp_psp/wrp_data_142E0.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
void HitDetection(void);
diff --git a/src/st/wrp_psp/wrp_data_F010.c b/src/st/wrp_psp/wrp_data_F010.c
index 2e3d1008c4..74e6507a9b 100644
--- a/src/st/wrp_psp/wrp_data_F010.c
+++ b/src/st/wrp_psp/wrp_data_F010.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
u16 unk15_rot[] = {
diff --git a/src/st/wrp_psp/wrp_data_F740.c b/src/st/wrp_psp/wrp_data_F740.c
index 2caea65e76..a7a987a67a 100644
--- a/src/st/wrp_psp/wrp_data_F740.c
+++ b/src/st/wrp_psp/wrp_data_F740.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
extern void* D_801801B8[];
diff --git a/src/st/wrp_psp/wrp_data_F7B0.c b/src/st/wrp_psp/wrp_data_F7B0.c
index 26e1b39da3..16df14be03 100644
--- a/src/st/wrp_psp/wrp_data_F7B0.c
+++ b/src/st/wrp_psp/wrp_data_F7B0.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
u16 g_eRedDoorTiles[][8] = {
diff --git a/src/st/wrp_psp/wrp_data_F810.c b/src/st/wrp_psp/wrp_data_F810.c
index b14b7d447f..56dc45542c 100644
--- a/src/st/wrp_psp/wrp_data_F810.c
+++ b/src/st/wrp_psp/wrp_data_F810.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "../wrp/wrp.h"
u16 g_eBreakableInit[] = {
diff --git a/src/weapon/shared.h b/src/weapon/shared.h
index da54132d5d..69725308b1 100644
--- a/src/weapon/shared.h
+++ b/src/weapon/shared.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include "weapon_private.h"
#include "../destroy_entity.h"
diff --git a/src/weapon/w_000.c b/src/weapon/w_000.c
index 5fd79f0658..615c69e0b7 100644
--- a/src/weapon/w_000.c
+++ b/src/weapon/w_000.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #0. Used by weapons:
// Tyrfing, Namakura, Gladius, Scimitar, Cutlass, Saber, Falchion, Broadsword,
// Bekatowa, Damascus sword, Hunter sword, Bastard sword, Talwar, Sword of
diff --git a/src/weapon/w_001.c b/src/weapon/w_001.c
index 6a8b4931d7..34a46c326c 100644
--- a/src/weapon/w_001.c
+++ b/src/weapon/w_001.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #1. Used by weapons:
// Knuckle duster, Jewel knuckles, Iron Fist, Fist of Tulkas, Unknown#186,
// Unknown#187, Unknown#188
diff --git a/src/weapon/w_002.c b/src/weapon/w_002.c
index 02b3cead14..f24e4ff9e6 100644
--- a/src/weapon/w_002.c
+++ b/src/weapon/w_002.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #2. Used by weapons:
// Mace
diff --git a/src/weapon/w_003.c b/src/weapon/w_003.c
index f2da263293..6b61c484e1 100644
--- a/src/weapon/w_003.c
+++ b/src/weapon/w_003.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #3. Used by weapons:
// Morningstar
#include "weapon_private.h"
diff --git a/src/weapon/w_004.c b/src/weapon/w_004.c
index 7270dd91fc..d633728c4f 100644
--- a/src/weapon/w_004.c
+++ b/src/weapon/w_004.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #4. Used by weapons:
// Holy rod, Unknown#170
#include "weapon_private.h"
diff --git a/src/weapon/w_005.c b/src/weapon/w_005.c
index a4fdfb40e7..aef9ef471a 100644
--- a/src/weapon/w_005.c
+++ b/src/weapon/w_005.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #5. Used by weapons:
// Star flail, Unknown#171
#include "weapon_private.h"
diff --git a/src/weapon/w_006.c b/src/weapon/w_006.c
index a3819009c6..bb1afd0ef1 100644
--- a/src/weapon/w_006.c
+++ b/src/weapon/w_006.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #6. Used by weapons:
// Moon rod, Unknown#172
#define FUNC_04_VOID
diff --git a/src/weapon/w_007.c b/src/weapon/w_007.c
index 39a0797f68..64cbd15711 100644
--- a/src/weapon/w_007.c
+++ b/src/weapon/w_007.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #7. Used by weapons:
// Shield rod, Unknown#173
#define FUNC_04_VOID
diff --git a/src/weapon/w_008.c b/src/weapon/w_008.c
index 1d05fcc00d..7530dde0ff 100644
--- a/src/weapon/w_008.c
+++ b/src/weapon/w_008.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #8. Used by weapons:
// Leather shield, Unknown#203
#define SHIELDSPELL_S32
diff --git a/src/weapon/w_009.c b/src/weapon/w_009.c
index 0587c4d13d..3eb54509c6 100644
--- a/src/weapon/w_009.c
+++ b/src/weapon/w_009.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #9. Used by weapons:
// Knight shield, Unknown#204
#include "weapon_private.h"
diff --git a/src/weapon/w_010.c b/src/weapon/w_010.c
index 3c4fb4c7a2..ed4b5601db 100644
--- a/src/weapon/w_010.c
+++ b/src/weapon/w_010.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #10. Used by weapons:
// Iron shield, Unknown#205
#include "weapon_private.h"
diff --git a/src/weapon/w_011.c b/src/weapon/w_011.c
index e03bccedca..8d98045bed 100644
--- a/src/weapon/w_011.c
+++ b/src/weapon/w_011.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #11. Used by weapons:
// AxeLord shield, Unknown#206
#include "weapon_private.h"
diff --git a/src/weapon/w_012.c b/src/weapon/w_012.c
index 10ad28513f..1dcea15293 100644
--- a/src/weapon/w_012.c
+++ b/src/weapon/w_012.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #12. Used by weapons:
// Chakram, Vorpal blade, Crissaegrim
#include "weapon_private.h"
diff --git a/src/weapon/w_013.c b/src/weapon/w_013.c
index bd7881c24c..b658622ff8 100644
--- a/src/weapon/w_013.c
+++ b/src/weapon/w_013.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #13. Used by weapons:
// Heaven sword, Unknown#202
// #202 seems to be the special attack with two heaven swords.
diff --git a/src/weapon/w_014.c b/src/weapon/w_014.c
index 620bc1d31c..b105508a73 100644
--- a/src/weapon/w_014.c
+++ b/src/weapon/w_014.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #14. Used by weapons:
// Runesword
#include "weapon_private.h"
diff --git a/src/weapon/w_015.c b/src/weapon/w_015.c
index 0ccb9f902c..0d54fa0110 100644
--- a/src/weapon/w_015.c
+++ b/src/weapon/w_015.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #15. Used by weapons:
// Shuriken, Cross shuriken, Buffalo star, Flame star, TNT
#include "weapon_private.h"
diff --git a/src/weapon/w_016.c b/src/weapon/w_016.c
index 9e656803f0..823e60d2e0 100644
--- a/src/weapon/w_016.c
+++ b/src/weapon/w_016.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #16. Used by weapons:
// Bwaka knife, Boomerang, Javelin, Fire boomerang, Iron ball
#include "weapon_private.h"
diff --git a/src/weapon/w_017.c b/src/weapon/w_017.c
index af13de1eb4..023aa3be87 100644
--- a/src/weapon/w_017.c
+++ b/src/weapon/w_017.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #17. Used by weapons:
// Pentagram, Bat Pentagram
#include "weapon_private.h"
diff --git a/src/weapon/w_018.c b/src/weapon/w_018.c
index 31e0f09fe9..91838d39e3 100644
--- a/src/weapon/w_018.c
+++ b/src/weapon/w_018.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #18. Used by weapons:
// Power of Sire
#include "weapon_private.h"
diff --git a/src/weapon/w_019.c b/src/weapon/w_019.c
index d6708310fe..ea7d3f4121 100644
--- a/src/weapon/w_019.c
+++ b/src/weapon/w_019.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #19. Used by weapons:
// Neutron bomb
#include "weapon_private.h"
diff --git a/src/weapon/w_020.c b/src/weapon/w_020.c
index 61295a7ef0..9c50aefd7d 100644
--- a/src/weapon/w_020.c
+++ b/src/weapon/w_020.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #20. Used by weapons:
// Karma Coin
#include "weapon_private.h"
diff --git a/src/weapon/w_021.c b/src/weapon/w_021.c
index d1fdf79376..82c9352ea4 100644
--- a/src/weapon/w_021.c
+++ b/src/weapon/w_021.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #21. Used by weapons:
// Orange, Apple, Banana, Grapes, Strawberry, Pineapple, Peanuts, Toadstool,
// Shiitake, Cheesecake, Shortcake, Tart, Parfait, Pudding, Ice cream,
diff --git a/src/weapon/w_022.c b/src/weapon/w_022.c
index 906b17bd0a..30455daec8 100644
--- a/src/weapon/w_022.c
+++ b/src/weapon/w_022.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #22. Used by weapons:
// Magic Missile
#include "weapon_private.h"
diff --git a/src/weapon/w_023.c b/src/weapon/w_023.c
index 76a26a4e91..8a5fdaa40a 100644
--- a/src/weapon/w_023.c
+++ b/src/weapon/w_023.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #23. Used by weapons:
// Herald shield, Unknown#207
#include "weapon_private.h"
diff --git a/src/weapon/w_024.c b/src/weapon/w_024.c
index 3f8c783216..6af86131a3 100644
--- a/src/weapon/w_024.c
+++ b/src/weapon/w_024.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #24. Used by weapons:
// Dark shield, Unknown#208
#include "weapon_private.h"
diff --git a/src/weapon/w_025.c b/src/weapon/w_025.c
index b1a11d086a..7f422842d5 100644
--- a/src/weapon/w_025.c
+++ b/src/weapon/w_025.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #25. Used by weapons:
// Goddess shield, Unknown#209
#include "weapon_private.h"
diff --git a/src/weapon/w_026.c b/src/weapon/w_026.c
index 0a2b253387..d24f19e5c7 100644
--- a/src/weapon/w_026.c
+++ b/src/weapon/w_026.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #26. Used by weapons:
// Shaman shield, Unknown#210
#include "weapon_private.h"
diff --git a/src/weapon/w_027.c b/src/weapon/w_027.c
index 507ed40401..22b006a6fa 100644
--- a/src/weapon/w_027.c
+++ b/src/weapon/w_027.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #27. Used by weapons:
// Medusa shield, Unknown#211
#include "weapon_private.h"
diff --git a/src/weapon/w_028.c b/src/weapon/w_028.c
index 5dcad8daa5..9c77babb73 100644
--- a/src/weapon/w_028.c
+++ b/src/weapon/w_028.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #28. Used by weapons:
// Skull shield, Unknown#212
#include "weapon_private.h"
diff --git a/src/weapon/w_029.c b/src/weapon/w_029.c
index 10be221bbc..bb882a8e45 100644
--- a/src/weapon/w_029.c
+++ b/src/weapon/w_029.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #29. Used by weapons:
// Fire shield, Unknown#213
#include "weapon_private.h"
diff --git a/src/weapon/w_030.c b/src/weapon/w_030.c
index 4d017ed53f..f23843511a 100644
--- a/src/weapon/w_030.c
+++ b/src/weapon/w_030.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #30. Used by weapons:
// Sword of Dawn, Unknown#177
#include "weapon_private.h"
diff --git a/src/weapon/w_031.c b/src/weapon/w_031.c
index da5ebfbd68..9efcaddc3b 100644
--- a/src/weapon/w_031.c
+++ b/src/weapon/w_031.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #31. Used by weapons:
// Basilard, Unknown#174
#include "weapon_private.h"
diff --git a/src/weapon/w_032.c b/src/weapon/w_032.c
index 0bf3d6bb81..26dda55ad9 100644
--- a/src/weapon/w_032.c
+++ b/src/weapon/w_032.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #32. Used by weapons:
// Combat knife, Unknown#175
#include "weapon_private.h"
diff --git a/src/weapon/w_033.c b/src/weapon/w_033.c
index 4de6dc23d4..7d697b4c56 100644
--- a/src/weapon/w_033.c
+++ b/src/weapon/w_033.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #33. Used by weapons:
// Nunchaku
#include "weapon_private.h"
diff --git a/src/weapon/w_034.c b/src/weapon/w_034.c
index c4ba2d656c..ee016d91b3 100644
--- a/src/weapon/w_034.c
+++ b/src/weapon/w_034.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #34. Used by weapons:
// Shotel, Unknown#176
#include "weapon_private.h"
diff --git a/src/weapon/w_035.c b/src/weapon/w_035.c
index 8f36a5f897..9dec68bfda 100644
--- a/src/weapon/w_035.c
+++ b/src/weapon/w_035.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #35. Used by weapons:
// Red Rust
#include "weapon_private.h"
diff --git a/src/weapon/w_036.c b/src/weapon/w_036.c
index afbbd35bdb..c9f8c13869 100644
--- a/src/weapon/w_036.c
+++ b/src/weapon/w_036.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #36. Used by weapons:
// Takemitsu
#include "weapon_private.h"
diff --git a/src/weapon/w_037.c b/src/weapon/w_037.c
index 27be168d13..d1dc54df7a 100644
--- a/src/weapon/w_037.c
+++ b/src/weapon/w_037.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #37. Used by weapons:
// Short sword, Jewel sword, Stone sword, Unknown#198
#include "weapon_private.h"
diff --git a/src/weapon/w_038.c b/src/weapon/w_038.c
index 6c51f46f01..103a84fb7b 100644
--- a/src/weapon/w_038.c
+++ b/src/weapon/w_038.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #38. Used by weapons:
// Rapier, Unknown#191
#include "weapon_private.h"
diff --git a/src/weapon/w_039.c b/src/weapon/w_039.c
index 3422bc4741..37815055e2 100644
--- a/src/weapon/w_039.c
+++ b/src/weapon/w_039.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #39. Used by weapons:
// Were Bane, Unknown#190
#include "weapon_private.h"
diff --git a/src/weapon/w_040.c b/src/weapon/w_040.c
index 48028df1ef..33d56cfb36 100644
--- a/src/weapon/w_040.c
+++ b/src/weapon/w_040.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #40. Used by weapons:
// Monster vial 1
#include "weapon_private.h"
diff --git a/src/weapon/w_041.c b/src/weapon/w_041.c
index 855d1a9cde..4d3a318eb4 100644
--- a/src/weapon/w_041.c
+++ b/src/weapon/w_041.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #41. Used by weapons:
// Monster vial 2
#include "weapon_private.h"
diff --git a/src/weapon/w_042.c b/src/weapon/w_042.c
index 6cf8d9025e..445fd828e5 100644
--- a/src/weapon/w_042.c
+++ b/src/weapon/w_042.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #42. Used by weapons:
// Monster vial 3
#include "weapon_private.h"
diff --git a/src/weapon/w_043.c b/src/weapon/w_043.c
index 0580b4a295..4d9f6a81df 100644
--- a/src/weapon/w_043.c
+++ b/src/weapon/w_043.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #43. Used by weapons:
// Alucard sword, Sword Familiar, Alucart sword, Unknown#197
#include "weapon_private.h"
diff --git a/src/weapon/w_044.c b/src/weapon/w_044.c
index 2e8dd50e58..8236861cb3 100644
--- a/src/weapon/w_044.c
+++ b/src/weapon/w_044.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #44. Used by weapons:
// Heart Refresh
#include "weapon_private.h"
diff --git a/src/weapon/w_045.c b/src/weapon/w_045.c
index 85bf1c9d1c..21e9b503f3 100644
--- a/src/weapon/w_045.c
+++ b/src/weapon/w_045.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #45. Used by weapons:
// Unknown#216
#define FUNC_0C_S32
diff --git a/src/weapon/w_046.c b/src/weapon/w_046.c
index a8ee6f577b..8d43305ed1 100644
--- a/src/weapon/w_046.c
+++ b/src/weapon/w_046.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #46. Used by weapons:
// Holbein dagger, Blue knuckles
#include "weapon_private.h"
diff --git a/src/weapon/w_047.c b/src/weapon/w_047.c
index 67334d8658..a4abe6f4e3 100644
--- a/src/weapon/w_047.c
+++ b/src/weapon/w_047.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #47. Used by weapons:
// Dynamite
#include "weapon_private.h"
diff --git a/src/weapon/w_048.c b/src/weapon/w_048.c
index 5afb438467..4900bbb4b7 100644
--- a/src/weapon/w_048.c
+++ b/src/weapon/w_048.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #48. Used by weapons:
// Thunderbrand, Unknown#178
#include "weapon_private.h"
diff --git a/src/weapon/w_049.c b/src/weapon/w_049.c
index 9d8cad5c9c..d5c5f10825 100644
--- a/src/weapon/w_049.c
+++ b/src/weapon/w_049.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #49. Used by weapons:
// Firebrand, Marsil, Unknown#179, Unknown#180
#include "weapon_private.h"
diff --git a/src/weapon/w_050.c b/src/weapon/w_050.c
index c907629b05..767cc6aa21 100644
--- a/src/weapon/w_050.c
+++ b/src/weapon/w_050.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #50. Used by weapons:
// Icebrand, Unknown#181, Unknown#199, Unknown#200, Unknown#201
#include "weapon_private.h"
diff --git a/src/weapon/w_051.c b/src/weapon/w_051.c
index 34096faa65..9ab7a84b4d 100644
--- a/src/weapon/w_051.c
+++ b/src/weapon/w_051.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #51. Used by weapons:
// Estoc, Claymore, Flamberge, Zwei hander, Obsidian sword, Great Sword,
// Unknown#182, Unknown#183, Unknown#184, Unknown#185
diff --git a/src/weapon/w_052.c b/src/weapon/w_052.c
index e71bc25eb9..693e4f85b0 100644
--- a/src/weapon/w_052.c
+++ b/src/weapon/w_052.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #52. Used by weapons:
// Alucard shield, Unknown#214
#include "weapon_private.h"
diff --git a/src/weapon/w_053.c b/src/weapon/w_053.c
index bdba5cc605..ab0d65c4e0 100644
--- a/src/weapon/w_053.c
+++ b/src/weapon/w_053.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #53. Used by weapons:
// Katana, Osafune katana, Masamune, Yasutsuna, Unknown#189, Unknown#192,
// Unknown#193, Unknown#194
diff --git a/src/weapon/w_053_056.h b/src/weapon/w_053_056.h
index bd86a93153..0a0a941cc0 100644
--- a/src/weapon/w_053_056.h
+++ b/src/weapon/w_053_056.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#include
// A struct which describes variations of Weapon #53 and #56
diff --git a/src/weapon/w_054.c b/src/weapon/w_054.c
index e6ee64f80c..f3b9b3ea1f 100644
--- a/src/weapon/w_054.c
+++ b/src/weapon/w_054.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #54. Used by weapons:
// Gurthang, Unknown#195
#include "weapon_private.h"
diff --git a/src/weapon/w_055.c b/src/weapon/w_055.c
index ac4e9adf48..302ce3ca47 100644
--- a/src/weapon/w_055.c
+++ b/src/weapon/w_055.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #55. Used by weapons:
// Holy sword, Unknown#196
#include "weapon_private.h"
diff --git a/src/weapon/w_056.c b/src/weapon/w_056.c
index ab52bf952d..435edce494 100644
--- a/src/weapon/w_056.c
+++ b/src/weapon/w_056.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #56. Used by weapons:
// Muramasa
#include "weapon_private.h"
diff --git a/src/weapon/w_057.c b/src/weapon/w_057.c
index 3203909998..31be741d76 100644
--- a/src/weapon/w_057.c
+++ b/src/weapon/w_057.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #57. Used by weapons:
// Mablung Sword
#include "weapon_private.h"
diff --git a/src/weapon/w_058.c b/src/weapon/w_058.c
index 7aad6ea00b..4981e1b50e 100644
--- a/src/weapon/w_058.c
+++ b/src/weapon/w_058.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
// Weapon ID #58. Used by weapons:
// Alucart shield, Unknown#215
#include "weapon_private.h"
diff --git a/src/weapon/weapon_private.h b/src/weapon/weapon_private.h
index 0f5a31c841..2adc79e42f 100644
--- a/src/weapon/weapon_private.h
+++ b/src/weapon/weapon_private.h
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: AGPL-3.0-or-later
#ifndef WEAPON_PRIVATE_H
#define WEAPON_PRIVATE_H
diff --git a/tools/lint-license.py b/tools/lint-license.py
new file mode 100644
index 0000000000..0542d3ea11
--- /dev/null
+++ b/tools/lint-license.py
@@ -0,0 +1,29 @@
+import sys
+
+
+def add_spdx_license(file_path, license): # AGPL-3.0-or-later
+ spdx_line = f"// SPDX-License-Identifier: {license}"
+ try:
+ with open(file_path, "r") as file:
+ lines = file.readlines()
+ if lines and lines[0].strip() == spdx_line:
+ return
+ with open(file_path, "w") as file:
+ file.write(spdx_line + "\n")
+ file.writelines(lines)
+ except FileNotFoundError:
+ print(f"the file {file_path} does not exist")
+ except Exception as e:
+ print(f"an error occurred: {e}")
+
+
+if __name__ == "__main__":
+ if len(sys.argv) != 3:
+ print("usage: python lint-license.py ")
+ sys.exit(1)
+ file_names = [sys.argv[1]]
+ if file_names[0] == "-":
+ file_names = sys.stdin.readlines()
+ license = sys.argv[2]
+ for file_name in file_names:
+ add_spdx_license(file_name.strip(), license)