summaryrefslogtreecommitdiff
path: root/arm9/lib/include
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/lib/include')
-rw-r--r--arm9/lib/include/DGT_dgt.h2
-rw-r--r--arm9/lib/include/FS_archive.h28
-rw-r--r--arm9/lib/include/FS_command_default.h27
-rw-r--r--arm9/lib/include/FS_file.h17
-rw-r--r--arm9/lib/include/FS_overlay.h20
-rw-r--r--arm9/lib/include/FS_rom.h10
-rw-r--r--arm9/lib/include/GX_g2.h2
-rw-r--r--arm9/lib/include/OS_alloc.h5
-rw-r--r--arm9/lib/include/OS_arena.h4
-rw-r--r--arm9/lib/include/OS_emulator.h4
-rw-r--r--arm9/lib/include/OS_entropy.h4
-rw-r--r--arm9/lib/include/OS_init.h3
-rw-r--r--arm9/lib/include/OS_interrupt.h2
-rw-r--r--arm9/lib/include/OS_protectionUnit.h11
-rw-r--r--arm9/lib/include/OS_reset.h6
-rw-r--r--arm9/lib/include/OS_system.h14
-rw-r--r--arm9/lib/include/OS_tcm.h2
-rw-r--r--arm9/lib/include/OS_terminate_proc.h4
-rw-r--r--arm9/lib/include/custom_allocator.h13
-rw-r--r--arm9/lib/include/fx.h2
-rw-r--r--arm9/lib/include/nitro.h2
21 files changed, 131 insertions, 51 deletions
diff --git a/arm9/lib/include/DGT_dgt.h b/arm9/lib/include/DGT_dgt.h
index 1c48531c..bc9cb47e 100644
--- a/arm9/lib/include/DGT_dgt.h
+++ b/arm9/lib/include/DGT_dgt.h
@@ -1,6 +1,6 @@
#ifndef NITRO_DGT_DGT_H_
#define NITRO_DGT_DGT_H_
-void DGT_Hash2CalcHmac(void* digest, void* bin_ptr, int bin_len, void* key_ptr, int keylen);
+void DGT_Hash2CalcHmac(void* digest, void* bin_ptr, u32 bin_len, void* key_ptr, u32 keylen);
#endif //NITRO_DGT_DGT_H_
diff --git a/arm9/lib/include/FS_archive.h b/arm9/lib/include/FS_archive.h
index d30081d7..3987341c 100644
--- a/arm9/lib/include/FS_archive.h
+++ b/arm9/lib/include/FS_archive.h
@@ -146,8 +146,6 @@ typedef struct FSArchive
u32 proc_flag;
} FSArchive;
-FSArchive * const FS_FindArchive(const char * path, int offset);
-
static inline BOOL FS_IsArchiveLoaded(volatile const FSArchive * p_arc)
{
return (p_arc->flag & FS_ARCHIVE_FLAG_LOADED) ? TRUE : FALSE;
@@ -198,15 +196,25 @@ static inline BOOL FS_IsArchiveTableLoaded(volatile const FSArchive * p_arc)
return (p_arc->flag & FS_ARCHIVE_FLAG_TABLE_LOAD) ? TRUE : FALSE;
}
-BOOL FSi_SendCommand(struct FSFile * file, FSCommandType command);
+u32 FSi_GetPackedName(const char * name, int name_len);
+FSResult FSi_ReadMemCallback(struct FSArchive * p_arc, void * dest, u32 pos, u32 size);
+FSResult FSi_WriteMemCallback(struct FSArchive * p_arc, const void * src, u32 pos, u32 size);
+FSResult FSi_ReadMemoryCore(struct FSArchive * p_arc, void * dest, u32 pos, u32 size);
+struct FSFile * FSi_NextCommand(struct FSArchive * p_arc);
+void FSi_ExecuteAsyncCommand(struct FSFile * p_file);
BOOL FSi_ExecuteSyncCommand(struct FSFile * file);
-BOOL FS_SuspendArchive(FSArchive * p_arc);
-BOOL FS_ResumeArchive(FSArchive * p_arc);
-void FS_NotifyArchiveAsyncEnd(FSArchive *p_arc, FSResult ret);
-BOOL FS_RegisterArchiveName(FSArchive * p_arc, const char * name, int name_len);
-void FS_InitArchive(FSArchive * p_arc);
+BOOL FSi_SendCommand(struct FSFile * file, FSCommandType command);
+void FS_InitArchive(struct FSArchive * p_arc);
+struct FSArchive * const FS_FindArchive(const char * path, int offset);
+BOOL FS_RegisterArchiveName(struct FSArchive * p_arc, const char * name, int name_len);
+void FS_ReleaseArchiveName(struct FSArchive * p_arc);
+BOOL FS_LoadArchive(struct FSArchive * p_arc, u32 base, u32 fat, u32 fat_size, u32 fnt, u32 fnt_size, FS_ARCHIVE_READ_FUNC read_func, FS_ARCHIVE_WRITE_FUNC write_func);
+BOOL FS_UnloadArchive(struct FSArchive * p_arc);
+u32 FS_LoadArchiveTables(struct FSArchive *p_arc, void *p_mem, u32 max_size);
+void * FS_UnloadArchiveTables(struct FSArchive * p_arc);
+BOOL FS_SuspendArchive(struct FSArchive * p_arc);
+BOOL FS_ResumeArchive(struct FSArchive * p_arc);
void FS_SetArchiveProc(struct FSArchive * p_arc, FS_ARCHIVE_PROC_FUNC proc, u32 flags);
-BOOL FS_LoadArchive(FSArchive * p_arc, u32 base, u32 fat, u32 fat_size, u32 fnt, u32 fnt_size, FS_ARCHIVE_READ_FUNC read_func, FS_ARCHIVE_WRITE_FUNC write_func);
-u32 FS_LoadArchiveTables(FSArchive *p_arc, void *p_mem, u32 max_size);
+void FS_NotifyArchiveAsyncEnd(struct FSArchive *p_arc, FSResult ret);
#endif //NITRO_FS_ARCHIVE_H_
diff --git a/arm9/lib/include/FS_command_default.h b/arm9/lib/include/FS_command_default.h
new file mode 100644
index 00000000..1984aeb0
--- /dev/null
+++ b/arm9/lib/include/FS_command_default.h
@@ -0,0 +1,27 @@
+#ifndef POKEDIAMOND_FS_COMMAND_DEFAULT_H
+#define POKEDIAMOND_FS_COMMAND_DEFAULT_H
+
+#include "types.h"
+#include "FS_archive.h"
+
+typedef struct
+{
+ FSArchive *arc;
+ u32 pos;
+} FSiSyncReadParam;
+
+
+u32 FSi_StrNICmp(const char * str1, const char * str2, u32 len);
+FSResult FSi_ReadTable(FSiSyncReadParam * p, void * dst, u32 len);
+FSResult FSi_SeekDirDirect(FSFile * p_dir, u32 id);
+FSResult FSi_ReadFileCommand(FSFile * p_file);
+FSResult FSi_WriteFileCommand(FSFile * p_file);
+FSResult FSi_SeekDirCommand(FSFile * p_dir);
+FSResult FSi_ReadDirCommand(FSFile *p_dir);
+FSResult FSi_FindPathCommand(FSFile *p_dir);
+FSResult FSi_GetPathCommand(FSFile *p_file);
+FSResult FSi_OpenFileFastCommand(FSFile * p_file);
+FSResult FSi_OpenFileDirectCommand(FSFile * p_file);
+FSResult FSi_CloseFileCommand(FSFile * p_file);
+
+#endif //POKEDIAMOND_FS_COMMAND_DEFAULT_H
diff --git a/arm9/lib/include/FS_file.h b/arm9/lib/include/FS_file.h
index 3a7d8730..cfb043af 100644
--- a/arm9/lib/include/FS_file.h
+++ b/arm9/lib/include/FS_file.h
@@ -174,16 +174,21 @@ typedef struct FSFile
}
FSFile;
-u32 FS_SetDefaultDMA(u32 dma_no); // returns the previous selection
+void FS_Init(u32 default_dma_no);
+BOOL FS_IsAvailable(void);
void FS_InitFile(FSFile * p_file);
-BOOL FS_WaitAsync(FSFile * p_file);
+static BOOL FSi_FindPath(FSFile * p_dir, const char * path, FSFileID * p_file_id, FSDirPos * p_dir_pos);
+int FSi_ReadFileCore(FSFile * p_file, void * dst, s32 len, BOOL async);
+BOOL FS_ConvertPathToFileID(FSFileID * p_file_id, const char * path);
BOOL FS_OpenFileDirect(FSFile * p_file, FSArchive * p_arc, u32 image_top, u32 image_bottom, u32 file_index);
-int FS_ReadFile(FSFile * p_file, void * dst, s32 len);
-int FS_ReadFileAsync(FSFile * p_file, void * dst, s32 len);
-BOOL FS_OpenFile(FSFile * p_file, const char * path);
BOOL FS_OpenFileFast(FSFile * p_file, FSFileID file_id);
+BOOL FS_OpenFile(FSFile * p_file, const char * path);
BOOL FS_CloseFile(FSFile * p_file);
-BOOL FS_SeekFile(FSFile * p_file, int offset, FSSeekFileMode origin);
+BOOL FS_WaitAsync(FSFile * p_file);
+int FS_ReadFileAsync(FSFile * p_file, void * dst, s32 len);
+int FS_ReadFile(FSFile * p_file, void * dst, s32 len);
+BOOL FS_SeekFile(FSFile * p_file, s32 offset, FSSeekFileMode origin);
+BOOL FS_ChangeDir(const char * path);
static inline u32 const FS_GetFileImageTop(volatile const FSFile * p_file) {
return p_file->prop.file.top;
diff --git a/arm9/lib/include/FS_overlay.h b/arm9/lib/include/FS_overlay.h
index 14c7ce66..7853e4ae 100644
--- a/arm9/lib/include/FS_overlay.h
+++ b/arm9/lib/include/FS_overlay.h
@@ -52,20 +52,22 @@ static inline u32 const FS_GetOverlayTotalSize(FSOverlayInfo *p_ovi)
return p_ovi->header.ram_size + p_ovi->header.bss_size;
}
+u32 FSi_GetOverlayBinarySize(FSOverlayInfo * p_ovi);
+void FS_ClearOverlayImage(FSOverlayInfo * p_ovi);
+FSFileID FS_GetOverlayFileID(FSOverlayInfo * p_ovi);
+BOOL FSi_LoadOverlayInfoCore(FSOverlayInfo * p_ovi, MIProcessor target, FSOverlayID id, FSArchive * arc, u32 offset_arm9, u32 len_arm9, u32 offset_arm7, u32 len_arm7);
BOOL FS_LoadOverlayInfo(FSOverlayInfo *p_ovi, MIProcessor target, FSOverlayID id);
-
-BOOL FS_LoadOverlay(MIProcessor target, FSOverlayID id);
-
-BOOL FS_UnloadOverlay(MIProcessor target, FSOverlayID id);
-
+BOOL FS_LoadOverlayImageAsync(FSOverlayInfo *p_ovi, FSFile *p_file);
BOOL FS_LoadOverlayImage(FSOverlayInfo *p_ovi);
-
+BOOL FSi_CompareDigest(const u8 *spec_digest, void *src, u32 len);
void FS_StartOverlay(FSOverlayInfo *p_ovi);
-
-BOOL FS_LoadOverlayImageAsync(FSOverlayInfo *p_ovi, FSFile *p_file);
+void FS_EndOverlay(FSOverlayInfo *p_ovi);
+BOOL FS_UnloadOverlayImage(FSOverlayInfo * p_ovi);
+BOOL FS_LoadOverlay(MIProcessor target, FSOverlayID id);
+BOOL FS_UnloadOverlay(MIProcessor target, FSOverlayID id);
#if defined(__cplusplus)
-};
+}
#endif
#endif //NITRO_FS_OVERLAY_H_
diff --git a/arm9/lib/include/FS_rom.h b/arm9/lib/include/FS_rom.h
index ac8ad8fb..a98c8a9c 100644
--- a/arm9/lib/include/FS_rom.h
+++ b/arm9/lib/include/FS_rom.h
@@ -2,13 +2,23 @@
#define NITRO_FS_ROM_H_
#include "FS_archive.h"
+#include "FS_file.h"
#include "CARD_rom.h"
+#include "types.h"
extern FSArchive fsi_arc_rom;
extern s32 fsi_card_lock_id;
extern CARDRomRegion fsi_ovt7;
extern CARDRomRegion fsi_ovt9;
+void FSi_OnRomReadDone(void * p_arc);
+FSResult FSi_ReadRomCallback(FSArchive * p_arc, void * dst, u32 src, u32 len);
+FSResult FSi_WriteDummyCallback(FSArchive * p_arc, const void *src, u32 dst, u32 len);
+FSResult FSi_RomArchiveProc(FSFile * p_arc, FSCommandType cmd);
+FSResult FSi_ReadDummyCallback(FSArchive *p_arc, void *dst, u32 src, u32 len);
+FSResult FSi_EmptyArchiveProc(FSFile *p_file, FSCommandType cmd);
void FSi_InitRom(u32 default_dma_no);
+u32 FS_SetDefaultDMA(u32 dma_no);
+u32 FS_TryLoadTable(void * p_mem, u32 size);
#endif //NITRO_FS_ROM_H_
diff --git a/arm9/lib/include/GX_g2.h b/arm9/lib/include/GX_g2.h
index f8d86df0..d1d1c82c 100644
--- a/arm9/lib/include/GX_g2.h
+++ b/arm9/lib/include/GX_g2.h
@@ -7,7 +7,7 @@ void G2x_SetBGyAffine_(u32 *ptr, struct Mtx22 *mtx, fx32 a, fx32 b, fx32 c, fx32
void G2x_SetBlendAlpha_(u32 *ptr, fx32 a, fx32 b, fx32 c, fx32 d);
void G2x_SetBlendBrightness_(u16 *ptr, fx32 a, fx32 brightness);
void G2x_SetBlendBrightnessExt_(u16 *ptr, fx32 a, fx32 b, fx32 c, fx32 d, fx32 brightness);
-void *G2x_ChangeBlendBrightness_(u16 *ptr, fx32 brightness);
+void G2x_ChangeBlendBrightness_(u16 *ptr, fx32 brightness);
//The g2 and g2_oam headers contain a lot of inline functions and enums that may want to be ported over at some point
diff --git a/arm9/lib/include/OS_alloc.h b/arm9/lib/include/OS_alloc.h
index 08fb3224..74b7b0e5 100644
--- a/arm9/lib/include/OS_alloc.h
+++ b/arm9/lib/include/OS_alloc.h
@@ -32,7 +32,10 @@ typedef struct {
HeapDesc* heapArray;
} OSHeapInfo;
-void OS_FreeToHeap(OSArenaId id, OSHeapHandle heap, void *ptr);
+Cell* DLAddFront(Cell* list, Cell* cell);
+Cell* DLExtract(Cell* list, Cell* cell);
+Cell *DLInsert(Cell *original, Cell *inserted);
void* OS_AllocFromHeap(OSArenaId id, OSHeapHandle heap, u32 size);
+void OS_FreeToHeap(OSArenaId id, OSHeapHandle heap, void *ptr);
#endif //POKEDIAMOND_OS_ALLOC_H
diff --git a/arm9/lib/include/OS_arena.h b/arm9/lib/include/OS_arena.h
index f1893a3d..8cfef81d 100644
--- a/arm9/lib/include/OS_arena.h
+++ b/arm9/lib/include/OS_arena.h
@@ -27,8 +27,8 @@ typedef struct {
u8 padding[2];
} OSArenaInfo;
-void OS_InitArena();
-void OS_InitArenaEx();
+void OS_InitArena(void);
+void OS_InitArenaEx(void);
void* OS_GetArenaHi(OSArenaId id);
void* OS_GetArenaLo(OSArenaId id);
void* OS_GetInitArenaHi(OSArenaId id);
diff --git a/arm9/lib/include/OS_emulator.h b/arm9/lib/include/OS_emulator.h
index 54105258..30acec16 100644
--- a/arm9/lib/include/OS_emulator.h
+++ b/arm9/lib/include/OS_emulator.h
@@ -7,7 +7,7 @@
#include "consts.h"
-BOOL OS_IsRunOnEmulator();
-u32 OS_GetConsoleType();
+BOOL OS_IsRunOnEmulator(void);
+u32 OS_GetConsoleType(void);
#endif //POKEDIAMOND_OS_EMULATOR_H
diff --git a/arm9/lib/include/OS_entropy.h b/arm9/lib/include/OS_entropy.h
index b4695a72..78ac71b7 100644
--- a/arm9/lib/include/OS_entropy.h
+++ b/arm9/lib/include/OS_entropy.h
@@ -17,9 +17,9 @@ typedef struct NVRAMConfig{
extern vu64 OSi_TickCounter;
-extern u16 OS_GetTickLo();
+extern u16 OS_GetTickLo(void);
-static inline s32 GX_GetVCount()
+static inline s32 GX_GetVCount(void)
{
return reg_GX_VCOUNT;
}
diff --git a/arm9/lib/include/OS_init.h b/arm9/lib/include/OS_init.h
index 69d21213..40685513 100644
--- a/arm9/lib/include/OS_init.h
+++ b/arm9/lib/include/OS_init.h
@@ -15,6 +15,7 @@
#include "OS_mutex.h"
#include "OS_thread.h"
#include "OS_protectionRegion.h"
+#include "OS_protectionUnit.h"
#include "OS_entropy.h"
#include "OS_emulator.h"
#include "OS_arena.h"
@@ -25,6 +26,6 @@
#include "OS_reset.h"
#include "OS_spinLock.h"
-void OS_Init();
+void OS_Init(void);
#endif //POKEDIAMOND_OS_INIT_H
diff --git a/arm9/lib/include/OS_interrupt.h b/arm9/lib/include/OS_interrupt.h
index 21ae8079..cbdc225f 100644
--- a/arm9/lib/include/OS_interrupt.h
+++ b/arm9/lib/include/OS_interrupt.h
@@ -21,7 +21,7 @@ typedef u32 OSIrqMask;
extern OSIrqFunction OS_IRQTable[];
extern OSIrqCallbackInfo OSi_IrqCallbackInfo[8];
-void OS_InitIrqTable();
+void OS_InitIrqTable(void);
void OS_SetIrqFunction(OSIrqMask intrBit, OSIrqFunction function);
OSIrqFunction OS_GetIrqFunction(OSIrqMask intrBit);
void OSi_EnterDmaCallback(u32 dmaNo, void (*callback) (void *), void *arg);
diff --git a/arm9/lib/include/OS_protectionUnit.h b/arm9/lib/include/OS_protectionUnit.h
new file mode 100644
index 00000000..e7dc32d8
--- /dev/null
+++ b/arm9/lib/include/OS_protectionUnit.h
@@ -0,0 +1,11 @@
+//
+// Created by red031000 on 2020-05-24.
+//
+
+#ifndef POKEDIAMOND_OS_PROTECTIONUNIT_H
+#define POKEDIAMOND_OS_PROTECTIONUNIT_H
+
+void OS_EnableProtectionUnit(void);
+void OS_DisableProtectionUnit(void);
+
+#endif //POKEDIAMOND_OS_PROTECTIONUNIT_H
diff --git a/arm9/lib/include/OS_reset.h b/arm9/lib/include/OS_reset.h
index c3b60c98..c50106da 100644
--- a/arm9/lib/include/OS_reset.h
+++ b/arm9/lib/include/OS_reset.h
@@ -12,9 +12,9 @@
#define OS_PXI_COMMAND_SHIFT 8
#define OS_PXI_COMMAND_RESET 0x10
-void OS_InitReset();
-void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err);
-void OSi_SendToPxi(u16 data);
+void OS_InitReset(void);
+static void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err);
+static void OSi_SendToPxi(u16 data);
void OS_ResetSystem(u32 parameter);
#endif //POKEDIAMOND_OS_RESET_H
diff --git a/arm9/lib/include/OS_system.h b/arm9/lib/include/OS_system.h
index 6ce585dc..f71c6f98 100644
--- a/arm9/lib/include/OS_system.h
+++ b/arm9/lib/include/OS_system.h
@@ -26,15 +26,15 @@ typedef enum {
} OSIntrMode;
ENUMS_ALWAYS_INT_RESET
-OSIntrMode OS_EnableInterrupts();
-OSIntrMode OS_DisableInterrupts();
+OSIntrMode OS_EnableInterrupts(void);
+OSIntrMode OS_DisableInterrupts(void);
OSIntrMode OS_RestoreInterrupts(OSIntrMode state);
-OSIntrMode OS_DisableInterrupts_IrqAndFiq();
+OSIntrMode OS_DisableInterrupts_IrqAndFiq(void);
OSIntrMode OS_RestoreInterrupts_IrqAndFiq(OSIntrMode state);
-OSIntrMode OS_GetCpsrIrq();
-OSProcMode OS_GetProcMode();
-void OS_SpinWait();
-void OS_WaitVBlankIntr();
+OSIntrMode OS_GetCpsrIrq(void);
+OSProcMode OS_GetProcMode(void);
+void OS_SpinWait(void);
+void OS_WaitVBlankIntr(void);
void OS_WaitIrq(BOOL, u32);
#endif //POKEDIAMOND_OS_SYSTEM_H
diff --git a/arm9/lib/include/OS_tcm.h b/arm9/lib/include/OS_tcm.h
index 7112ca0e..66f8ec59 100644
--- a/arm9/lib/include/OS_tcm.h
+++ b/arm9/lib/include/OS_tcm.h
@@ -7,6 +7,6 @@
#include "consts.h"
-u32 OS_GetDTCMAddress();
+u32 OS_GetDTCMAddress(void);
#endif //POKEDIAMOND_OS_TCM_H
diff --git a/arm9/lib/include/OS_terminate_proc.h b/arm9/lib/include/OS_terminate_proc.h
index 26741e5d..d1abe3ad 100644
--- a/arm9/lib/include/OS_terminate_proc.h
+++ b/arm9/lib/include/OS_terminate_proc.h
@@ -5,7 +5,7 @@
#ifndef POKEDIAMOND_OS_TERMINATE_PROC_H
#define POKEDIAMOND_OS_TERMINATE_PROC_H
-void OS_Terminate();
-void OS_Halt();
+void OS_Terminate(void);
+void OS_Halt(void);
#endif //POKEDIAMOND_OS_TERMINATE_PROC_H
diff --git a/arm9/lib/include/custom_allocator.h b/arm9/lib/include/custom_allocator.h
new file mode 100644
index 00000000..828566f7
--- /dev/null
+++ b/arm9/lib/include/custom_allocator.h
@@ -0,0 +1,13 @@
+#ifndef POKEDIAMOND_CUSTOM_ALLOCATOR_H
+#define POKEDIAMOND_CUSTOM_ALLOCATOR_H
+
+#include "types.h"
+
+typedef void * (* AllocFunc)(u32 size);
+typedef void (* FreeFunc)(void * ptr);
+
+void* CallCustomAllocator(u32 size);
+void CallCustomDestructor(void * ptr);
+void SetCustomAllocatorAndDestructor(AllocFunc allocator, FreeFunc destructor);
+
+#endif //POKEDIAMOND_CUSTOM_ALLOCATOR_H
diff --git a/arm9/lib/include/fx.h b/arm9/lib/include/fx.h
index 3df89293..c09b24ae 100644
--- a/arm9/lib/include/fx.h
+++ b/arm9/lib/include/fx.h
@@ -142,7 +142,7 @@ void MTX_RotY44_(struct Mtx44 *mtx, fx32 sinphi, fx32 cosphi);
void MTX_RotZ44_(struct Mtx44 *mtx, fx32 sinphi, fx32 cosphi);
//Mtx43
-void MTX_ScaleApply33(struct Mtx33 *mtx, struct Mtx33 *dst, fx32 x, fx32 y, fx32 z);
+void MTX_ScaleApply43(struct Mtx43 *mtx, struct Mtx43 *dst, fx32 x, fx32 y, fx32 z);
fx32 MTX_Inverse43(struct Mtx43 *mtx, struct Mtx43 *inv);
void MTX_Concat43(struct Mtx43 *a, struct Mtx43 *b, struct Mtx43 *c);
void MTX_MultVec43(struct Vecx32 *vec, struct Mtx43 *mtx, struct Vecx32 *dst);
diff --git a/arm9/lib/include/nitro.h b/arm9/lib/include/nitro.h
index ffb2003b..9eeab198 100644
--- a/arm9/lib/include/nitro.h
+++ b/arm9/lib/include/nitro.h
@@ -14,7 +14,7 @@ extern "C" {
#include "mmap.h"
#ifdef __cplusplus
-};
+}
#endif
#endif //POKEDIAMOND_NITRO_H