<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://dsibrew.org/w/index.php?action=history&amp;feed=atom&amp;title=Talk%3APrivate%2Fds%2Fapp%2F484E94%2A%2Fpit.bin</id>
	<title>Talk:Private/ds/app/484E94*/pit.bin - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://dsibrew.org/w/index.php?action=history&amp;feed=atom&amp;title=Talk%3APrivate%2Fds%2Fapp%2F484E94%2A%2Fpit.bin"/>
	<link rel="alternate" type="text/html" href="https://dsibrew.org/w/index.php?title=Talk:Private/ds/app/484E94*/pit.bin&amp;action=history"/>
	<updated>2026-04-21T14:58:00Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://dsibrew.org/w/index.php?title=Talk:Private/ds/app/484E94*/pit.bin&amp;diff=3426&amp;oldid=prev</id>
		<title>Ludo6431 at 00:10, 31 January 2011</title>
		<link rel="alternate" type="text/html" href="https://dsibrew.org/w/index.php?title=Talk:Private/ds/app/484E94*/pit.bin&amp;diff=3426&amp;oldid=prev"/>
		<updated>2011-01-30T23:10:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 02:10, 31 January 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;If you have photos or frames in the */100NIN01 folder, can you send me your pit.bin file please at &amp;lt;ludolacost_gm@il_com&amp;gt; ? &#039;&#039;&#039;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key dsibrew-dsi_:diff:1.41:old-3419:rev-3426:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Ludo6431</name></author>
	</entry>
	<entry>
		<id>https://dsibrew.org/w/index.php?title=Talk:Private/ds/app/484E94*/pit.bin&amp;diff=3419&amp;oldid=prev</id>
		<title>Ludo6431: Blanked the page</title>
		<link rel="alternate" type="text/html" href="https://dsibrew.org/w/index.php?title=Talk:Private/ds/app/484E94*/pit.bin&amp;diff=3419&amp;oldid=prev"/>
		<updated>2011-01-30T22:48:03Z</updated>

		<summary type="html">&lt;p&gt;Blanked the page&lt;/p&gt;
&lt;a href=&quot;https://dsibrew.org/w/index.php?title=Talk:Private/ds/app/484E94*/pit.bin&amp;amp;diff=3419&amp;amp;oldid=3416&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Ludo6431</name></author>
	</entry>
	<entry>
		<id>https://dsibrew.org/w/index.php?title=Talk:Private/ds/app/484E94*/pit.bin&amp;diff=3416&amp;oldid=prev</id>
		<title>Ludo6431: added pit.bin file reader</title>
		<link rel="alternate" type="text/html" href="https://dsibrew.org/w/index.php?title=Talk:Private/ds/app/484E94*/pit.bin&amp;diff=3416&amp;oldid=prev"/>
		<updated>2011-01-29T23:31:06Z</updated>

		<summary type="html">&lt;p&gt;added pit.bin file reader&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== pit.bin file reader ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *  pitread.c -- pit.bin file reader by Ludo6431 &amp;lt;ludolacost_gm@il_com&amp;gt;&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdarg.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
typedef unsigned char u8;&lt;br /&gt;
typedef unsigned short u16;&lt;br /&gt;
typedef unsigned int u32;&lt;br /&gt;
#ifndef BIT&lt;br /&gt;
#   define BIT(b) (1&amp;lt;&amp;lt;(b))&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
void mexit(int ret, char *format, ...) {&lt;br /&gt;
    if(format) {&lt;br /&gt;
        va_list ap;&lt;br /&gt;
        va_start(ap, format);&lt;br /&gt;
        vfprintf(stderr, format, ap);&lt;br /&gt;
        fprintf(stderr, &amp;quot;\n&amp;quot;);&lt;br /&gt;
        va_end(ap);&lt;br /&gt;
    }&lt;br /&gt;
    exit(ret);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
typedef struct PIT_HDR sPIT_HDR;&lt;br /&gt;
struct PIT_HDR {&lt;br /&gt;
    u32 magic;&lt;br /&gt;
    u32 dunno1;         // &amp;quot;00_1&amp;quot;&lt;br /&gt;
    u16 slotsnum;       // 3000 slots in the file&lt;br /&gt;
    u16 msbfolderctr;&lt;br /&gt;
    u16 lsbfolderctr;   // next folder&amp;#039;s number will be ++folderctr&lt;br /&gt;
    u16 photoctr;       // next photo&amp;#039;s number will be ++photoctr&lt;br /&gt;
    u16 dunno2;         // 0x0000&lt;br /&gt;
    u16 framectr;       // next frame&amp;#039;s number will be ++framectr&lt;br /&gt;
    u16 checksum;       // crc16 of whole file&lt;br /&gt;
    u16 hdrsize;        // 0x18&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#define F_DIRNUM(f)     (((f)&amp;amp;0x1)*100 + ((f)&amp;gt;&amp;gt;1)&amp;amp;0x7f) // 8bits (100-129)&lt;br /&gt;
#define F_ENTNUM(f)     ((((f)&amp;gt;&amp;gt;11)&amp;amp;0x7f)+1)            // 7bits (0-99)&lt;br /&gt;
#define F_STICKER(f)    (((f)&amp;gt;&amp;gt;18)&amp;amp;0x3)&lt;br /&gt;
#define F_TYPE(f)       (((f)&amp;gt;&amp;gt;20)&amp;amp;0x1)&lt;br /&gt;
typedef struct PIT_ENTRY sPIT_ENTRY;&lt;br /&gt;
struct PIT_ENTRY {&lt;br /&gt;
    u32 date;&lt;br /&gt;
    u8 dunno[8];&lt;br /&gt;
    u32 flags; // (bit0: hundreds&amp;#039; digit of folder num; bit1-7: tens&amp;#039; digits of folder num; bit8-10: UNKNOWN (0); bit11-17: photo&amp;#039;s number minus 1; bit18-19: sticker 0: None, 1: Star, 2: Clover, 3: Heart; bit20: type 0:photo, 1:frame; bit21-31: UNKNOWN (0))&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
    if(argc!=2) mexit(1, &amp;quot;Usage:\n\t%s &amp;lt;pit.bin&amp;gt;&amp;quot;, argv[0]);&lt;br /&gt;
&lt;br /&gt;
    char *fname = argv[1];&lt;br /&gt;
    FILE *fd = fopen(fname, &amp;quot;rb+&amp;quot;);&lt;br /&gt;
    if(!fd) mexit(1, &amp;quot;Can&amp;#039;t open file \&amp;quot;%s\&amp;quot;!&amp;quot;, fname);&lt;br /&gt;
&lt;br /&gt;
    fseek(fd, 0, SEEK_END);&lt;br /&gt;
    unsigned fsize = ftell(fd);&lt;br /&gt;
    rewind(fd);&lt;br /&gt;
&lt;br /&gt;
    sPIT_HDR hdr;&lt;br /&gt;
&lt;br /&gt;
    if(fread((void *)&amp;amp;hdr, 1, sizeof(sPIT_HDR), fd)!=sizeof(sPIT_HDR)) {&lt;br /&gt;
        fclose(fd);&lt;br /&gt;
        mexit(1, &amp;quot;Can&amp;#039;t read file \&amp;quot;%s\&amp;quot;!&amp;quot;, fname);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;magic       : \&amp;quot;%c%c%c%c\&amp;quot;\n&amp;quot;, hdr.magic&amp;gt;&amp;gt;24, (hdr.magic&amp;gt;&amp;gt;16)&amp;amp;0xFF, (hdr.magic&amp;gt;&amp;gt;8)&amp;amp;0xFF, hdr.magic&amp;amp;0xFF);&lt;br /&gt;
    printf(&amp;quot;dunno1      : \&amp;quot;%c%c%c%c\&amp;quot;\n&amp;quot;, hdr.dunno1&amp;amp;0xFF, (hdr.dunno1&amp;gt;&amp;gt;8)&amp;amp;0xFF, (hdr.dunno1&amp;gt;&amp;gt;16)&amp;amp;0xFF, hdr.dunno1&amp;gt;&amp;gt;24);&lt;br /&gt;
    printf(&amp;quot;slotsnum    : %d\n&amp;quot;, hdr.slotsnum);&lt;br /&gt;
    printf(&amp;quot;folderctr   : %d%02d\n&amp;quot;, hdr.msbfolderctr, hdr.lsbfolderctr);&lt;br /&gt;
    printf(&amp;quot;photoctr    : %d\n&amp;quot;, hdr.photoctr);&lt;br /&gt;
    printf(&amp;quot;framectr    : %d\n&amp;quot;, hdr.framectr);&lt;br /&gt;
    printf(&amp;quot;checksum    : 0x%02x\n&amp;quot;, hdr.checksum);&lt;br /&gt;
    printf(&amp;quot;headersize  : %d\n&amp;quot;, hdr.hdrsize);&lt;br /&gt;
&lt;br /&gt;
    // jump after the header&lt;br /&gt;
    fseek(fd, hdr.hdrsize, SEEK_SET);&lt;br /&gt;
&lt;br /&gt;
    u32 i, photocnt=0, framecnt=0, offset;&lt;br /&gt;
    sPIT_ENTRY entry;&lt;br /&gt;
    for(i=0; i&amp;lt;hdr.slotsnum; i++) {&lt;br /&gt;
        offset = ftell(fd);&lt;br /&gt;
        if(fread((void *)&amp;amp;entry, 1, sizeof(sPIT_ENTRY), fd)!=sizeof(sPIT_ENTRY)) {&lt;br /&gt;
            fclose(fd);&lt;br /&gt;
            mexit(1, &amp;quot;Can&amp;#039;t read file \&amp;quot;%s\&amp;quot; (after %d+%d valid entries)!&amp;quot;, fname, photocnt, framecnt);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if(!entry.date) continue;&lt;br /&gt;
&lt;br /&gt;
        switch(F_TYPE(entry.flags)) {&lt;br /&gt;
        case 0: // photo&lt;br /&gt;
            photocnt++;&lt;br /&gt;
            printf(&amp;quot;-- photo%04d -- (slot%d in file)\n&amp;quot;, photocnt, (offset-hdr.hdrsize)&amp;gt;&amp;gt;4);&lt;br /&gt;
            break;&lt;br /&gt;
        case 1: // frame&lt;br /&gt;
            framecnt++;&lt;br /&gt;
            printf(&amp;quot;-- frame%04d -- (slot%d in file)\n&amp;quot;, framecnt, (offset-hdr.hdrsize)&amp;gt;&amp;gt;4);&lt;br /&gt;
            break;&lt;br /&gt;
        default:&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        struct tm ttm;&lt;br /&gt;
        time_t stm;&lt;br /&gt;
        bzero(&amp;amp;ttm, sizeof(ttm));&lt;br /&gt;
        ttm.tm_year = 2000 - 1900;   // 2000&lt;br /&gt;
        ttm.tm_mon = 0;  // january&lt;br /&gt;
        ttm.tm_mday = 1; // 1st&lt;br /&gt;
        stm = mktime(&amp;amp;ttm);&lt;br /&gt;
        stm += entry.date;&lt;br /&gt;
&lt;br /&gt;
        printf(&amp;quot;  date(UTC) : %s&amp;quot;, asctime(gmtime(&amp;amp;stm)));&lt;br /&gt;
        printf(&amp;quot;  folder    : %d\n&amp;quot;, F_DIRNUM(entry.flags));&lt;br /&gt;
        printf(&amp;quot;  number    : %d\n&amp;quot;, F_ENTNUM(entry.flags));&lt;br /&gt;
&lt;br /&gt;
        char fname[128];&lt;br /&gt;
        switch(F_TYPE(entry.flags)) {&lt;br /&gt;
        case 0:&lt;br /&gt;
            printf(&amp;quot;  sticker   : %d\n&amp;quot;, F_STICKER(entry.flags));&lt;br /&gt;
            sprintf(fname, &amp;quot;/DCIM/%03dNIN02/HNI_%04d.JPG&amp;quot;, F_DIRNUM(entry.flags), F_ENTNUM(entry.flags));&lt;br /&gt;
            break;&lt;br /&gt;
        case 1:&lt;br /&gt;
            sprintf(fname, &amp;quot;/private/ds/app/484E494A/DCIM/%03dNIN02/HNI_%04d.JPG&amp;quot;, F_DIRNUM(entry.flags), F_ENTNUM(entry.flags));&lt;br /&gt;
            break;&lt;br /&gt;
        default:&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        printf(&amp;quot;  filename  : %s\n&amp;quot;, fname);&lt;br /&gt;
    }&lt;br /&gt;
    printf(&amp;quot;The file contains %d photos and %d frames.\n&amp;quot;, photocnt, framecnt);&lt;br /&gt;
&lt;br /&gt;
    fclose(fd);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ludo6431</name></author>
	</entry>
</feed>