static int sChk_lbRTC_ymd_c_NSW(lbRTC_ymd_c* ymd) {
    int res = FALSE;

    if (ymd->year < GAME_YEAR_MIN + 1 || ymd->year > GAME_YEAR_MAX - 1) {
        res = TRUE;
    }

    if (ymd->month == 0 || ymd->month > lbRTC_MONTHS_MAX) {
        res = TRUE;
    }

    if (ymd->day == 0 || ymd->day > 31) {
        res = TRUE;
    }

    if (res == TRUE) {
        if (ymd->year == 0 && ymd->month == 0 && ymd->day == 0) {
            res = FALSE;
        } else if (ymd->year == mTM_rtcTime_ymd_clear_code.year && ymd->month == mTM_rtcTime_ymd_clear_code.month &&
                   ymd->day == mTM_rtcTime_ymd_clear_code.day) {
            res = FALSE;
        }

        if (res == TRUE) {
            mFRm_set_errInfo(l_mfrm_err_info, 91, l_mfrm_now_color);
        }
    }

    return res;
}

static int sCck_CheckSaveData_radiocard_NSW(Private_c* priv) {
    mPr_day_day_c* radiocard_p = &priv->radiocard;
    int res;

    if (sChk_lbRTC_ymd_c_NSW(&radiocard_p->last_date)) {
        mFRm_ERRORLINE(112);
        res = TRUE;
    } else if (radiocard_p->days > mPr_RADIOCARD_MAX_DAYS) {
        mFRm_ERRORLINE(121);
        res = TRUE;
    } else {
        res = FALSE;
    }

    return res;
}

static int sCck_CheckSaveData_calendar_NSW(Private_c* priv) {
    int res;

    if (priv->calendar.edit > 1) {
        mFRm_ERRORLINE(143);
        res = TRUE;
    } else if (priv->calendar.pad_63 != 0) {
        mFRm_ERRORLINE(151);
        res = TRUE;
    } else if ((priv->calendar.year < GAME_YEAR_MIN + 1 || priv->calendar.year > GAME_YEAR_MAX - 1 ||
                priv->calendar.month == 0 || priv->calendar.month > lbRTC_DECEMBER) &&
               (priv->calendar.year != 0 || priv->calendar.month != 0)) {
        mFRm_ERRORLINE(164);
        res = TRUE;
    } else {
        res = FALSE;
    }

    return res;
}

static int sCck_CheckSaveData_deposit_NSW(Private_c* priv) {
    int res;
    int deposit = priv->bank_account;

    if (deposit < 0 || deposit > mPr_DEPOSIT_MAX) {
        mFRm_ERRORLINE(184);
        res = TRUE;
    } else {
        res = FALSE;
    }

    return res;
}

static int sCck_CheckSaveData_nw_visitor_NSW(Private_c* priv) {
    mPr_day_day_c* nw_visitor_p = &priv->nw_visitor;
    int res;

    if (sChk_lbRTC_ymd_c_NSW(&nw_visitor_p->last_date) != FALSE && nw_visitor_p->last_date.year != 0) {
        mFRm_ERRORLINE(204);
        res = TRUE;
    } else {
        res = FALSE;
    }

    return res;
}

static int sCck_CheckSaveData_my_org_no_table_NSW(Private_c* priv) {
    u8 my_org_no;
    int field = 0;
    int total = 0;
    u8* my_org_no_table = priv->my_org_no_table;
    int i;
    int res;

    for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) {
        my_org_no = my_org_no_table[i];

        if (my_org_no >= mPr_ORIGINAL_DESIGN_COUNT) {
            return TRUE;
        }

        total += my_org_no;
        field |= (u16)(1 << my_org_no);
    }

    if ((u16)field != (u16)((1 << mPr_ORIGINAL_DESIGN_COUNT) - 1) && total != 0) {
        mFRm_ERRORLINE(239);
        res = TRUE;
    } else {
        res = FALSE;
    }

    return res;
}

static int sCck_CheckSaveData_bridge_NSW() {
    PlusBridge_c* bridge = Save_GetPointer(bridge);

    if (sChk_lbRTC_ymd_c_NSW(&bridge->build_date)) {
        mFRm_ERRORLINE(259);
        return TRUE;
    } else if (bridge->exists || bridge->pending) {
        if (bridge->block_x == 0 || bridge->block_x > FG_BLOCK_X_NUM || bridge->block_z == 0 ||
            bridge->block_z > FG_BLOCK_Z_NUM) {
            mFRm_ERRORLINE(271);
            return TRUE;
        }
    } else if (bridge->block_x != 0 || bridge->block_z != 0) {
        mFRm_ERRORLINE(280);
        return TRUE;
    }

    return FALSE;
}

static int sCck_CheckSaveData_fishRecord_NSW() {
    mFR_record_c* record;
    lbRTC_ymd_c ymd;
    int i;

    for (i = 0; i < mFR_RECORD_NUM; i++) {
        record = Save_Get(fishRecord + i);
        mTM_set_renew_time(&ymd, &record->time);

        if (record->size < 0) {
            mFRm_ERRORLINE(307);
            return TRUE;
        }

        if (record->size != 0 && sChk_lbRTC_ymd_c_NSW(&ymd) == TRUE) {
            mFRm_ERRORLINE(316);
            return TRUE;
        }
    }

    return FALSE;
}

static int sCck_CheckSaveData_Anmret_NSW() {
    Anmret_c* anmret = Save_GetPointer(return_animal);
    int res;
    lbRTC_ymd_c ymd;

    if (anmret->npc_id != EMPTY_NO && ITEM_NAME_GET_TYPE(anmret->npc_id) != NAME_TYPE_NPC) {
        mFRm_ERRORLINE(339);
        res = TRUE;
    } else {
        mTM_set_renew_time(&ymd, &anmret->renew_time);

        if (sChk_lbRTC_ymd_c_NSW(&ymd) == TRUE) {
            mFRm_ERRORLINE(349);
            res = TRUE;
        } else {
            res = FALSE;
        }
    }

    return res;
}

static int sCck_CheckSaveData_LightHouse_NSW() {
    int res;

    if (sChk_lbRTC_ymd_c_NSW(&Save_Get(LightHouse).renew_time) == TRUE) {
        mFRm_ERRORLINE(368);
        res = TRUE;
    } else {
        res = FALSE;
    }

    return res;
}

static int sChk_CheckSaveData_NSW() {
    int res = FALSE;
    int i;

    for (i = 0; i < PLAYER_NUM; i++) {
        Private_c* priv = Save_Get(private_data) + i;

        res |= sCck_CheckSaveData_radiocard_NSW(priv);
        res |= sCck_CheckSaveData_calendar_NSW(priv);
        res |= sCck_CheckSaveData_deposit_NSW(priv);
        res |= sCck_CheckSaveData_nw_visitor_NSW(priv);
        res |= sCck_CheckSaveData_my_org_no_table_NSW(priv);
    }

    res |= sCck_CheckSaveData_bridge_NSW();
    res |= sCck_CheckSaveData_fishRecord_NSW();
    res |= sCck_CheckSaveData_Anmret_NSW();
    res |= sCck_CheckSaveData_LightHouse_NSW();

    return res;
}
